]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Remove ancient FS-2746 patch from tree
authorTravis Cross <tc@traviscross.com>
Wed, 19 Mar 2014 19:11:47 +0000 (19:11 +0000)
committerTravis Cross <tc@traviscross.com>
Sat, 19 Apr 2014 04:06:27 +0000 (04:06 +0000)
patches/FS-2746.diff [deleted file]

diff --git a/patches/FS-2746.diff b/patches/FS-2746.diff
deleted file mode 100644 (file)
index c62f40d..0000000
+++ /dev/null
@@ -1,76361 +0,0 @@
- .gitignore                                         |   71 +-
- Freeswitch.2008.sln                                |  142 +-
- Freeswitch.2010.sln                                |  202 +-
- configure.in                                       |   33 +-
- libs/.gitignore                                    |    8 +-
- .../win32/apr-util/libaprutil.2010.vcxproj.filters |    7 +-
- libs/win32/xmlrpc-c/abyss.2008.vcproj              |  410 +++
- libs/win32/xmlrpc-c/abyss.2010.vcxproj             |  197 ++
- libs/win32/xmlrpc-c/abyss.2010.vcxproj.filters     |   69 +
- libs/win32/xmlrpc-c/gennmtab.2008.vcproj           |  404 +++
- libs/win32/xmlrpc-c/gennmtab.2010.vcxproj          |  304 ++
- libs/win32/xmlrpc-c/xmlparse.2008.vcproj           |  394 +++
- libs/win32/xmlrpc-c/xmlparse.2010.vcxproj          |  254 ++
- libs/win32/xmlrpc-c/xmlrpc.2008.vcproj             |  490 ++++
- libs/win32/xmlrpc-c/xmlrpc.2010.vcxproj            |  240 ++
- libs/win32/xmlrpc-c/xmlrpc.2010.vcxproj.filters    |  125 +
- libs/win32/xmlrpc-c/xmltok.2008.vcproj             |  378 +++
- libs/win32/xmlrpc-c/xmltok.2010.vcxproj            |  199 ++
- libs/win32/xmlrpc-c/xmltok.2010.vcxproj.filters    |   45 +
- libs/xmlrpc-c/.cvsignore                           |   18 -
- libs/xmlrpc-c/.update                              |    1 -
- libs/xmlrpc-c/GNUmakefile                          |   53 +-
- libs/xmlrpc-c/Makefile.common                      |  272 --
- libs/xmlrpc-c/Makefile.config.in                   |   79 -
- libs/xmlrpc-c/Makefile.srcdir.in                   |    1 -
- libs/xmlrpc-c/Makefile.version                     |   11 -
- libs/xmlrpc-c/Windows/CleanWin32.bat               |   73 +-
- libs/xmlrpc-c/Windows/ReadMeWin32.txt              |   12 +-
- libs/xmlrpc-c/Windows/abyss.2008.vcproj            | 1298 ---------
- libs/xmlrpc-c/Windows/abyss.2010.vcxproj           |  437 ---
- libs/xmlrpc-c/Windows/abyss.2010.vcxproj.filters   |  131 -
- libs/xmlrpc-c/Windows/cpptest.dsp                  |    9 +-
- libs/xmlrpc-c/Windows/curllink.h                   |   36 +-
- libs/xmlrpc-c/Windows/dll/cpptest.vcproj           |  482 +++
- libs/xmlrpc-c/Windows/dll/gennmtab.vcproj          |  449 +++
- libs/xmlrpc-c/Windows/dll/rpctest.vcproj           |  574 ++++
- .../Windows/dll/sample_add_asynch_client.vcproj    |  443 +++
- libs/xmlrpc-c/Windows/dll/sample_add_server.vcproj |  433 +++
- .../dll/sample_add_server_w32httpsys.vcproj        |  433 +++
- .../Windows/dll/sample_add_sync_client.vcproj      |  435 +++
- .../xmlrpc-c/Windows/dll/sample_auth_client.vcproj |  435 +++
- .../Windows/dll/tool_xmlrpc-transport.vcproj       |  430 +++
- libs/xmlrpc-c/Windows/dll/tool_xmlrpc.vcproj       |  430 +++
- libs/xmlrpc-c/Windows/dll/xmlrpc.sln               |  327 +++
- libs/xmlrpc-c/Windows/dll/xmlrpc.vcproj            |  479 +++
- libs/xmlrpc-c/Windows/dll/xmlrpc__.vcproj          | 1296 +++++++++
- libs/xmlrpc-c/Windows/dll/xmlrpc_abyss.vcproj      | 1342 +++++++++
- libs/xmlrpc-c/Windows/dll/xmlrpc_client.vcproj     |  425 +++
- libs/xmlrpc-c/Windows/dll/xmlrpc_server.vcproj     |  413 +++
- .../Windows/dll/xmlrpc_server_abyss.vcproj         |  401 +++
- libs/xmlrpc-c/Windows/dll/xmlrpc_server_cgi.vcproj |  401 +++
- .../Windows/dll/xmlrpc_server_w32httpsys.vcproj    |  405 +++
- libs/xmlrpc-c/Windows/dll/xmlrpc_util.vcproj       |  449 +++
- libs/xmlrpc-c/Windows/dll/xmlrpc_xmlparse.vcproj   |  417 +++
- libs/xmlrpc-c/Windows/dll/xmlrpc_xmltok.vcproj     |  483 +++
- libs/xmlrpc-c/Windows/gennmtab.2008.vcproj         |  242 --
- libs/xmlrpc-c/Windows/mkvers.bat                   |    8 +-
- libs/xmlrpc-c/Windows/query_meerkat.dsp            |  100 -
- libs/xmlrpc-c/Windows/rpctest.dsp                  |    8 +
- libs/xmlrpc-c/Windows/socketpair.cpp               |   71 +
- libs/xmlrpc-c/Windows/transport_config.h           |   13 -
- libs/xmlrpc-c/Windows/transport_config_win32.h     |   26 +-
- libs/xmlrpc-c/Windows/win32_config.h               |    4 +
- libs/xmlrpc-c/Windows/xmlparse.2008.vcproj         |  387 ---
- libs/xmlrpc-c/Windows/xmlparse.2010.vcxproj        |  198 --
- libs/xmlrpc-c/Windows/xmlrpc-c/config.h            |   38 -
- libs/xmlrpc-c/Windows/xmlrpc.2008.vcproj           | 2042 -------------
- libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj          |  620 ----
- libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj.filters  |  287 --
- libs/xmlrpc-c/Windows/xmlrpc.dsp                   |   12 +
- libs/xmlrpc-c/Windows/xmlrpc.dsw                   |   30 +
- libs/xmlrpc-c/Windows/xmlrpc_config.h              |  158 -
- libs/xmlrpc-c/Windows/xmlrpc_win32_config.h        |   69 +-
- libs/xmlrpc-c/Windows/xmlrpcclient.dsp             |  106 +
- libs/xmlrpc-c/Windows/xmlrpccpp.dsp                |    5 +-
- libs/xmlrpc-c/Windows/xmltok.2008.vcproj           |  455 ---
- libs/xmlrpc-c/Windows/xmltok.2010.vcxproj          |  213 --
- libs/xmlrpc-c/Windows/xmltok.dsp                   |    4 +-
- libs/xmlrpc-c/common.mk                            |  130 +-
- libs/xmlrpc-c/conf/abyss_root/conf/abyss.conf      |   56 -
- libs/xmlrpc-c/conf/abyss_root/conf/mime.types      |  276 --
- libs/xmlrpc-c/conf/abyss_root/htdocs/index.htm     |   21 -
- libs/xmlrpc-c/config.mk.in                         |   97 +-
- libs/xmlrpc-c/configure.gnu                        |    4 -
- libs/xmlrpc-c/configure.in                         |  165 +-
- libs/xmlrpc-c/debian/README.Debian                 |    7 -
- libs/xmlrpc-c/debian/changelog                     |   22 -
- libs/xmlrpc-c/debian/control                       |   30 -
- libs/xmlrpc-c/debian/copyright                     |  128 -
- libs/xmlrpc-c/debian/postinst                      |   47 -
- libs/xmlrpc-c/debian/postrm                        |   39 -
- libs/xmlrpc-c/debian/rules                         |   97 -
- libs/xmlrpc-c/debian/xmlrpc-c-apps.files           |    4 -
- libs/xmlrpc-c/debian/xmlrpc-c-dev.files            |   10 -
- libs/xmlrpc-c/debian/xmlrpc-c0.docs                |    6 -
- libs/xmlrpc-c/debian/xmlrpc-c0.examples            |    3 -
- libs/xmlrpc-c/debian/xmlrpc-c0.files               |    2 -
- libs/xmlrpc-c/dll-common.make                      |   22 -
- libs/xmlrpc-c/dll-common.mk                        |   22 +
- libs/xmlrpc-c/doc/INSTALL                          |   44 +-
- libs/xmlrpc-c/dylib-common.make                    |   37 -
- libs/xmlrpc-c/dylib-common.mk                      |   37 +
- libs/xmlrpc-c/examples/.cvsignore                  |   11 -
- libs/xmlrpc-c/examples/Makefile                    |   57 +-
- libs/xmlrpc-c/examples/README                      |   15 +-
- libs/xmlrpc-c/examples/auth_client.c               |    2 +-
- libs/xmlrpc-c/examples/compound_value_client.c     |  161 +
- libs/xmlrpc-c/examples/compound_value_server.c     |  199 ++
- libs/xmlrpc-c/examples/cpp/.cvsignore              |    4 -
- libs/xmlrpc-c/examples/cpp/Makefile                |   58 +-
- .../examples/cpp/callinfo_abyss_server.cpp         |  133 +
- libs/xmlrpc-c/examples/cpp/meerkat-app-list.cpp    |  108 -
- libs/xmlrpc-c/examples/cpp/pstream_client.cpp      |    2 +-
- .../xmlrpc-c/examples/cpp/pstream_inetd_server.cpp |    9 +-
- .../examples/cpp/pstream_serial_server.cpp         |   84 +
- libs/xmlrpc-c/examples/cpp/xmlrpc_inetd_server.cpp |   25 +-
- .../examples/cpp/xmlrpc_sample_add_server.cpp      |    7 +-
- .../examples/cpp/xmlrpc_sample_add_server_cgi.cpp  |   62 +
- libs/xmlrpc-c/examples/gen_sample_add_xml.c        |    2 +-
- libs/xmlrpc-c/examples/interrupted_client.c        |    3 +-
- libs/xmlrpc-c/examples/interrupted_server.c        |   17 +-
- libs/xmlrpc-c/examples/json.c                      |  115 +
- libs/xmlrpc-c/examples/query-meerkat.c             |  156 -
- libs/xmlrpc-c/examples/synch_client.c              |    4 +-
- libs/xmlrpc-c/examples/xmlrpc_asynch_client.c      |    6 +-
- libs/xmlrpc-c/examples/xmlrpc_inetd_server.c       |   15 +-
- libs/xmlrpc-c/examples/xmlrpc_loop_server.c        |   15 +-
- libs/xmlrpc-c/examples/xmlrpc_sample_add_client.c  |   21 +-
- libs/xmlrpc-c/examples/xmlrpc_sample_add_server.c  |   33 +-
- .../examples/xmlrpc_sample_add_server_cgi.c        |   22 +-
- libs/xmlrpc-c/examples/xmlrpc_server_validatee.c   |   18 +-
- libs/xmlrpc-c/examples/xmlrpc_socket_server.c      |   21 +-
- libs/xmlrpc-c/include/Makefile                     |   18 +-
- libs/xmlrpc-c/include/xmlrpc-c/abyss.h             |  144 +-
- libs/xmlrpc-c/include/xmlrpc-c/abyss_winsock.h     |    4 +-
- libs/xmlrpc-c/include/xmlrpc-c/base.h              |  282 +-
- libs/xmlrpc-c/include/xmlrpc-c/base.hpp            |  252 +-
- libs/xmlrpc-c/include/xmlrpc-c/base64.hpp          |    5 +-
- libs/xmlrpc-c/include/xmlrpc-c/base64_int.h        |   11 +
- libs/xmlrpc-c/include/xmlrpc-c/base_int.h          |   40 +-
- libs/xmlrpc-c/include/xmlrpc-c/c_util.h            |   23 +-
- libs/xmlrpc-c/include/xmlrpc-c/client.h            |  141 +-
- libs/xmlrpc-c/include/xmlrpc-c/client.hpp          |   59 +-
- libs/xmlrpc-c/include/xmlrpc-c/client_global.h     |   17 +
- libs/xmlrpc-c/include/xmlrpc-c/client_int.h        |   29 +
- libs/xmlrpc-c/include/xmlrpc-c/client_simple.hpp   |    4 +-
- .../xmlrpc-c/include/xmlrpc-c/client_transport.hpp |  128 +-
- libs/xmlrpc-c/include/xmlrpc-c/config.h.in         |   37 -
- libs/xmlrpc-c/include/xmlrpc-c/girerr.hpp          |    9 +-
- libs/xmlrpc-c/include/xmlrpc-c/girmem.hpp          |   10 +-
- libs/xmlrpc-c/include/xmlrpc-c/inttypes.h          |    3 +
- libs/xmlrpc-c/include/xmlrpc-c/json.h              |   39 +
- libs/xmlrpc-c/include/xmlrpc-c/oldcppwrapper.hpp   |   19 +-
- libs/xmlrpc-c/include/xmlrpc-c/packetsocket.hpp    |   64 +-
- libs/xmlrpc-c/include/xmlrpc-c/registry.hpp        |   90 +-
- libs/xmlrpc-c/include/xmlrpc-c/select_int.h        |    4 +-
- libs/xmlrpc-c/include/xmlrpc-c/server.h            |   42 +
- libs/xmlrpc-c/include/xmlrpc-c/server_abyss.h      |   81 +-
- libs/xmlrpc-c/include/xmlrpc-c/server_abyss.hpp    |  110 +-
- libs/xmlrpc-c/include/xmlrpc-c/server_cgi.h        |   11 +-
- libs/xmlrpc-c/include/xmlrpc-c/server_cgi.hpp      |   45 +
- libs/xmlrpc-c/include/xmlrpc-c/server_pstream.hpp  |  139 +-
- libs/xmlrpc-c/include/xmlrpc-c/server_w32httpsys.h |    4 +-
- libs/xmlrpc-c/include/xmlrpc-c/sleep_int.h         |   11 +
- libs/xmlrpc-c/include/xmlrpc-c/string_int.h        |   53 +-
- libs/xmlrpc-c/include/xmlrpc-c/string_number.h     |   21 +
- libs/xmlrpc-c/include/xmlrpc-c/time_int.h          |    4 +
- libs/xmlrpc-c/include/xmlrpc-c/timeout.hpp         |    7 +-
- libs/xmlrpc-c/include/xmlrpc-c/transport.h         |    5 +
- libs/xmlrpc-c/include/xmlrpc-c/transport_int.h     |   42 -
- libs/xmlrpc-c/include/xmlrpc-c/util.h              |   36 +-
- libs/xmlrpc-c/include/xmlrpc-c/util_int.h          |   13 +-
- libs/xmlrpc-c/include/xmlrpc-c/xml.hpp             |   24 +-
- libs/xmlrpc-c/irix-common.make                     |   31 -
- libs/xmlrpc-c/irix-common.mk                       |   31 +
- libs/xmlrpc-c/lib/abyss/change.log                 |   34 -
- libs/xmlrpc-c/lib/abyss/htdocs/index.htm           |   21 -
- libs/xmlrpc-c/lib/abyss/patch_notes.txt            |  114 -
- libs/xmlrpc-c/lib/abyss/readme.txt                 |  160 -
- libs/xmlrpc-c/lib/abyss/src/Abyss.dsp              |  136 -
- libs/xmlrpc-c/lib/abyss/src/Abyss.dsw              |   29 -
- libs/xmlrpc-c/lib/abyss/src/Makefile               |   28 +-
- libs/xmlrpc-c/lib/abyss/src/channel.c              |    3 +-
- libs/xmlrpc-c/lib/abyss/src/channel.h              |    2 +-
- libs/xmlrpc-c/lib/abyss/src/chanswitch.c           |    3 +-
- libs/xmlrpc-c/lib/abyss/src/chanswitch.h           |    2 +-
- libs/xmlrpc-c/lib/abyss/src/conf.c                 |    7 +-
- libs/xmlrpc-c/lib/abyss/src/conn.c                 |  302 +-
- libs/xmlrpc-c/lib/abyss/src/conn.h                 |   19 +-
- libs/xmlrpc-c/lib/abyss/src/data.c                 |   22 +-
- libs/xmlrpc-c/lib/abyss/src/file.c                 |    1 +
- libs/xmlrpc-c/lib/abyss/src/handler.c              |   49 +-
- libs/xmlrpc-c/lib/abyss/src/handler.h              |    2 +
- libs/xmlrpc-c/lib/abyss/src/http.c                 |  407 +--
- libs/xmlrpc-c/lib/abyss/src/http.h                 |    8 +-
- libs/xmlrpc-c/lib/abyss/src/main.c                 |    8 +-
- libs/xmlrpc-c/lib/abyss/src/response.c             |  275 +-
- libs/xmlrpc-c/lib/abyss/src/server.c               |  338 ++-
- libs/xmlrpc-c/lib/abyss/src/server.h               |    8 +-
- libs/xmlrpc-c/lib/abyss/src/session.c              |   55 +-
- libs/xmlrpc-c/lib/abyss/src/session.h              |   24 +-
- libs/xmlrpc-c/lib/abyss/src/socket.c               |    3 +-
- libs/xmlrpc-c/lib/abyss/src/socket.h               |    4 +-
- libs/xmlrpc-c/lib/abyss/src/socket_openssl.c       |    2 +
- libs/xmlrpc-c/lib/abyss/src/socket_unix.c          |  175 +-
- libs/xmlrpc-c/lib/abyss/src/socket_win.c           | 1889 ++++++------
- libs/xmlrpc-c/lib/abyss/src/thread.c               |  228 --
- libs/xmlrpc-c/lib/abyss/src/thread.h               |    4 +-
- libs/xmlrpc-c/lib/abyss/src/thread_fork.c          |   11 +-
- libs/xmlrpc-c/lib/abyss/src/thread_pthread.c       |   72 +-
- libs/xmlrpc-c/lib/abyss/src/thread_windows.c       |   27 +-
- libs/xmlrpc-c/lib/abyss/version.txt                |    1 -
- libs/xmlrpc-c/lib/curl_transport/Makefile          |   20 +-
- libs/xmlrpc-c/lib/curl_transport/curlmulti.c       |  313 ++
- libs/xmlrpc-c/lib/curl_transport/curlmulti.h       |   51 +
- libs/xmlrpc-c/lib/curl_transport/curltransaction.c |  753 +++++
- libs/xmlrpc-c/lib/curl_transport/curltransaction.h |  120 +
- libs/xmlrpc-c/lib/curl_transport/curlversion.h     |   20 +
- libs/xmlrpc-c/lib/curl_transport/lock.h            |   24 +
- libs/xmlrpc-c/lib/curl_transport/lock_pthread.c    |   49 +
- libs/xmlrpc-c/lib/curl_transport/lock_pthread.h    |    9 +
- .../lib/curl_transport/xmlrpc_curl_transport.c     | 1838 +++---------
- .../lib/curl_transport/xmlrpc_curl_transport.h     |    8 -
- libs/xmlrpc-c/lib/expat/.cvsignore                 |    1 -
- libs/xmlrpc-c/lib/expat/Makefile                   |   39 +
- libs/xmlrpc-c/lib/expat/Makefile.in                |  314 --
- libs/xmlrpc-c/lib/expat/expat.dsw                  |   74 -
- libs/xmlrpc-c/lib/expat/gennmtab/.cvsignore        |    1 -
- libs/xmlrpc-c/lib/expat/gennmtab/Makefile          |    8 +-
- libs/xmlrpc-c/lib/expat/gennmtab/gennmtab.dsp      |  110 -
- libs/xmlrpc-c/lib/expat/sample/.cvsignore          |    1 -
- libs/xmlrpc-c/lib/expat/sample/Makefile.in         |  208 --
- libs/xmlrpc-c/lib/expat/sample/build.bat           |    4 -
- libs/xmlrpc-c/lib/expat/sample/elements.c          |   46 -
- libs/xmlrpc-c/lib/expat/xmlparse/.cvsignore        |    1 -
- libs/xmlrpc-c/lib/expat/xmlparse/Makefile          |   93 +
- libs/xmlrpc-c/lib/expat/xmlparse/Makefile.in       |  344 ---
- libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.c        |  207 +-
- libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.dsp      |  279 --
- libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.h        |   94 +-
- libs/xmlrpc-c/lib/expat/xmltok/.cvsignore          |    1 -
- libs/xmlrpc-c/lib/expat/xmltok/Makefile            |   21 +-
- libs/xmlrpc-c/lib/expat/xmltok/nametab.h           |  150 -
- libs/xmlrpc-c/lib/expat/xmltok/xmlrole.h           |    9 +-
- libs/xmlrpc-c/lib/expat/xmltok/xmltok.c            |   62 +-
- libs/xmlrpc-c/lib/expat/xmltok/xmltok.dsp          |  259 --
- libs/xmlrpc-c/lib/expat/xmltok/xmltok.h            |   41 +-
- libs/xmlrpc-c/lib/expat/xmltok/xmltok_impl.c       |  391 ++-
- libs/xmlrpc-c/lib/expat/xmlwf/.cvsignore           |    1 -
- libs/xmlrpc-c/lib/expat/xmlwf/xmlfile.c            |    2 +-
- libs/xmlrpc-c/lib/libutil/Makefile                 |   18 +-
- libs/xmlrpc-c/lib/libutil/asprintf.c               |  135 +-
- libs/xmlrpc-c/lib/libutil/base64.c                 |   49 +
- libs/xmlrpc-c/lib/libutil/error.c                  |    4 +-
- libs/xmlrpc-c/lib/libutil/make_printable.c         |    2 +-
- libs/xmlrpc-c/lib/libutil/memblock.c               |   47 +-
- libs/xmlrpc-c/lib/libutil/select.c                 |    6 +-
- libs/xmlrpc-c/lib/libutil/string_number.c          |   46 +
- libs/xmlrpc-c/lib/libutil/utf8.c                   |  370 ++-
- libs/xmlrpc-c/lib/libwww_transport/Makefile        |   15 +-
- .../lib/libwww_transport/xmlrpc_libwww_transport.c |    1 +
- .../lib/libwww_transport/xmlrpc_libwww_transport.h |    8 -
- libs/xmlrpc-c/lib/util/Makefile                    |   15 +-
- libs/xmlrpc-c/lib/util/casprintf.c                 |   86 +-
- libs/xmlrpc-c/lib/util/cmdline_parser.c            |    2 +
- libs/xmlrpc-c/lib/util/include/int.h               |   16 +-
- libs/xmlrpc-c/lib/util/include/mallocvar.h         |    4 +-
- libs/xmlrpc-c/lib/util/include/pthreadx.h          |   18 +-
- libs/xmlrpc-c/lib/util/include/sstring.h           |   15 -
- libs/xmlrpc-c/lib/util/include/stdargx.h           |    2 +-
- libs/xmlrpc-c/lib/util/pthreadx_win32.c            |   54 +-
- libs/xmlrpc-c/lib/util/string_parser.c             |   10 +-
- libs/xmlrpc-c/lib/util/stripcaseeq.c               |    1 -
- libs/xmlrpc-c/lib/wininet_transport/Makefile       |   13 +-
- .../wininet_transport/xmlrpc_wininet_transport.c   |   19 +-
- .../wininet_transport/xmlrpc_wininet_transport.h   |    8 -
- libs/xmlrpc-c/ltconfig                             | 3078 --------------------
- libs/xmlrpc-c/src/.cvsignore                       |    6 -
- libs/xmlrpc-c/src/Makefile                         |   64 +-
- libs/xmlrpc-c/src/cpp/.cvsignore                   |    1 -
- libs/xmlrpc-c/src/cpp/Makefile                     |  179 +-
- libs/xmlrpc-c/src/cpp/base64.cpp                   |    2 +-
- libs/xmlrpc-c/src/cpp/client.cpp                   |   47 +-
- libs/xmlrpc-c/src/cpp/cpptest.cpp                  | 1187 --------
- libs/xmlrpc-c/src/cpp/curl.cpp                     |  147 +-
- libs/xmlrpc-c/src/cpp/env_wrap.hpp                 |    3 +-
- libs/xmlrpc-c/src/cpp/libwww.cpp                   |    3 +-
- libs/xmlrpc-c/src/cpp/packetsocket.cpp             |  561 +++-
- libs/xmlrpc-c/src/cpp/pstream.cpp                  |   49 +-
- libs/xmlrpc-c/src/cpp/registry.cpp                 |  170 +-
- libs/xmlrpc-c/src/cpp/server_abyss.cpp             |  571 +++-
- libs/xmlrpc-c/src/cpp/server_cgi.cpp               |  354 +++
- libs/xmlrpc-c/src/cpp/server_pstream.cpp           |  265 +-
- libs/xmlrpc-c/src/cpp/server_pstream_conn.cpp      |  364 +++
- libs/xmlrpc-c/src/cpp/test/Makefile                |   33 +-
- libs/xmlrpc-c/src/cpp/test/base64.cpp              |   54 +
- libs/xmlrpc-c/src/cpp/test/base64.hpp              |    9 +
- libs/xmlrpc-c/src/cpp/test/registry.cpp            |  270 +-
- libs/xmlrpc-c/src/cpp/test/server_abyss.cpp        |   61 +-
- libs/xmlrpc-c/src/cpp/test/server_pstream.cpp      |  777 ++++-
- libs/xmlrpc-c/src/cpp/test/test.cpp                |  403 +--
- libs/xmlrpc-c/src/cpp/test/testclient.cpp          |   81 +-
- libs/xmlrpc-c/src/cpp/test/value.cpp               |  453 +++
- libs/xmlrpc-c/src/cpp/test/value.hpp               |    9 +
- libs/xmlrpc-c/src/cpp/test/xml.cpp                 |  100 +
- libs/xmlrpc-c/src/cpp/test/xml.hpp                 |    9 +
- libs/xmlrpc-c/src/cpp/value.cpp                    |  232 +-
- libs/xmlrpc-c/src/cpp/xml.cpp                      |  155 +-
- libs/xmlrpc-c/src/double.c                         |   29 +-
- libs/xmlrpc-c/src/json.c                           | 1466 ++++++++++
- libs/xmlrpc-c/src/method.c                         |   18 +-
- libs/xmlrpc-c/src/method.h                         |    5 +
- libs/xmlrpc-c/src/parse_datetime.c                 |  466 +++
- libs/xmlrpc-c/src/parse_datetime.h                 |   12 +
- libs/xmlrpc-c/src/parse_value.c                    |   95 +-
- libs/xmlrpc-c/src/registry.c                       |   73 +-
- libs/xmlrpc-c/src/system_method.c                  |  172 +-
- libs/xmlrpc-c/src/test/.cvsignore                  |    3 -
- libs/xmlrpc-c/src/test/Makefile                    |   21 +-
- libs/xmlrpc-c/src/test/abyss.c                     |   13 +-
- libs/xmlrpc-c/src/test/cgi.c                       |    2 +-
- libs/xmlrpc-c/src/test/cgitest1.c                  |    2 +-
- libs/xmlrpc-c/src/test/client.c                    |   76 +-
- libs/xmlrpc-c/src/test/method_registry.c           |  201 +-
- libs/xmlrpc-c/src/test/parse_xml.c                 |   62 +-
- libs/xmlrpc-c/src/test/req_out_of_order.xml        |   12 -
- libs/xmlrpc-c/src/test/req_value_name.xml          |   14 -
- libs/xmlrpc-c/src/test/sample_add_call.xml         |    8 -
- libs/xmlrpc-c/src/test/serialize.c                 |   12 +-
- libs/xmlrpc-c/src/test/serialize_value.c           |    3 +-
- libs/xmlrpc-c/src/test/server_abyss.c              |   43 +-
- libs/xmlrpc-c/src/test/test.c                      |   87 +-
- libs/xmlrpc-c/src/test/test.h                      |  109 -
- libs/xmlrpc-c/src/test/testtool.c                  |   65 +
- libs/xmlrpc-c/src/test/testtool.h                  |   80 +
- libs/xmlrpc-c/src/test/value.c                     |  258 +-
- libs/xmlrpc-c/src/test/value_datetime.c            |  424 +++
- libs/xmlrpc-c/src/test/value_datetime.h            |    7 +
- libs/xmlrpc-c/src/test/xml_data.h                  |    3 +
- libs/xmlrpc-c/src/trace.c                          |    3 +-
- libs/xmlrpc-c/src/version.c                        |   11 +
- libs/xmlrpc-c/src/xmlrpc_array.c                   |   37 +-
- libs/xmlrpc-c/src/xmlrpc_base64.c                  |  195 +-
- libs/xmlrpc-c/src/xmlrpc_build.c                   |   26 +-
- libs/xmlrpc-c/src/xmlrpc_builddecomp.c             |  973 -------
- libs/xmlrpc-c/src/xmlrpc_client.c                  |  403 ++-
- libs/xmlrpc-c/src/xmlrpc_client_global.c           |  114 +-
- libs/xmlrpc-c/src/xmlrpc_data.c                    |   37 +-
- libs/xmlrpc-c/src/xmlrpc_datetime.c                |  587 ++--
- libs/xmlrpc-c/src/xmlrpc_decompose.c               |    7 +-
- libs/xmlrpc-c/src/xmlrpc_expat.c                   |   32 +-
- libs/xmlrpc-c/src/xmlrpc_libxml2.c                 |   15 +-
- libs/xmlrpc-c/src/xmlrpc_parse.c                   |  161 +-
- libs/xmlrpc-c/src/xmlrpc_registry.c                |  830 ------
- libs/xmlrpc-c/src/xmlrpc_serialize.c               |  176 +-
- libs/xmlrpc-c/src/xmlrpc_server_abyss.c            |  672 +++--
- libs/xmlrpc-c/src/xmlrpc_server_cgi.c              |   13 +-
- libs/xmlrpc-c/src/xmlrpc_server_info.c             |    7 +
- libs/xmlrpc-c/src/xmlrpc_server_w32httpsys.c       |   42 +-
- libs/xmlrpc-c/src/xmlrpc_string.c                  |   34 +-
- libs/xmlrpc-c/src/xmlrpc_struct.c                  |  114 +-
- libs/xmlrpc-c/src/xmlrpc_strutil.c                 |   75 -
- libs/xmlrpc-c/src/xmlrpc_support.c                 |  394 ---
- libs/xmlrpc-c/src/xmlrpc_transport.c               |  143 -
- libs/xmlrpc-c/src/xmlrpc_utf8.c                    |  376 ---
- libs/xmlrpc-c/srcdir.mk.in                         |    1 +
- libs/xmlrpc-c/tools/.cvsignore                     |    1 -
- libs/xmlrpc-c/tools/Makefile                       |   13 +-
- libs/xmlrpc-c/tools/Makefile.common                |   47 -
- libs/xmlrpc-c/tools/common.mk                      |    2 +-
- libs/xmlrpc-c/tools/lib/Makefile                   |    8 +-
- libs/xmlrpc-c/tools/lib/dumpvalue.c                |   12 +-
- libs/xmlrpc-c/tools/turbocharger/.cvsignore        |    1 -
- libs/xmlrpc-c/tools/xml-rpc-api2cpp/.cvsignore     |    1 -
- libs/xmlrpc-c/tools/xml-rpc-api2cpp/Makefile       |   29 +-
- libs/xmlrpc-c/tools/xml-rpc-api2cpp/README         |    6 -
- libs/xmlrpc-c/tools/xml-rpc-api2txt                |  147 -
- libs/xmlrpc-c/tools/xml-rpc-api2txt.1              |   47 -
- libs/xmlrpc-c/tools/xmlrpc/.cvsignore              |    1 -
- libs/xmlrpc-c/tools/xmlrpc/Makefile                |    8 +-
- libs/xmlrpc-c/tools/xmlrpc/xmlrpc.c                |   74 +-
- libs/xmlrpc-c/tools/xmlrpc/xmlrpc.html             |    6 +-
- libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/Makefile      |   10 +-
- libs/xmlrpc-c/tools/xmlrpc_pstream/Makefile        |   10 +-
- .../tools/xmlrpc_pstream/xmlrpc_pstream.cpp        |    7 +-
- .../tools/xmlrpc_pstream/xmlrpc_pstream.html       |    2 +-
- libs/xmlrpc-c/tools/xmlrpc_transport/.cvsignore    |    1 -
- libs/xmlrpc-c/tools/xmlrpc_transport/Makefile      |   17 +-
- .../tools/xmlrpc_transport/xmlrpc_transport        |  120 -
- .../tools/xmlrpc_transport/xmlrpc_transport.c      |    2 +-
- libs/xmlrpc-c/transport_config.make                |   39 -
- libs/xmlrpc-c/transport_config.mk                  |   39 +
- libs/xmlrpc-c/unix-common.make                     |   79 -
- libs/xmlrpc-c/unix-common.mk                       |   82 +
- libs/xmlrpc-c/version.h                            |    8 -
- libs/xmlrpc-c/version.mk                           |   11 +
- libs/xmlrpc-c/xmlrpc-c-config.in                   |  180 --
- libs/xmlrpc-c/xmlrpc-c-config.main                 |   24 +-
- libs/xmlrpc-c/xmlrpc-c-config.test.in              |  153 -
- libs/xmlrpc-c/xmlrpc-c-config.test.main            |   33 +-
- libs/xmlrpc-c/xmlrpc_amconfig.h.in                 |    9 +-
- libs/xmlrpc-c/xmlrpc_config.h.in                   |   76 +-
- src/include/switch_event.h                         |   16 +-
- src/include/switch_xml.h                           |    8 +-
- src/mod/applications/mod_commands/mod_commands.c   |  766 ++---
- src/mod/languages/mod_lua/mod_lua.cpp              |   10 +-
- src/mod/xml_int/mod_xml_rpc/Makefile               |   27 +-
- .../xml_int/mod_xml_rpc/mod_xml_rpc.2010.vcxproj   |   28 +-
- src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c          |  467 +--
- src/switch_loadable_module.c                       |    4 +-
- src/switch_xml.c                                   |   25 +-
- w32/xmlrpc.props                                   |   15 +
- w32/xmlrpc.vsprops                                 |   15 +
- 413 files changed, 34400 insertions(+), 26419 deletions(-)
-
-diff --git a/.gitignore b/.gitignore
-index 1039628..9df71cc 100644
---- a/.gitignore
-+++ b/.gitignore
-@@ -29,6 +29,7 @@
- *.ilk
- *.bsc
- *.pch
-+*.opensdf
- *.tar
- *.gz
- *.tgz
-@@ -50,6 +51,7 @@ TAGS
- *.unsuccessfulbuild
- *.cache
- *.lastbuildstate
-+*.sdf
- /w32/Library/lastversion
- /w32/Library/tmpVersion.Bat
-@@ -81,9 +83,9 @@ TAGS
- /tone2wav
- /All/
--/Debug/
-+Debug/
- /bin/
--/Release/
-+Release/
- /ipch/
- /*.log
-@@ -165,63 +167,18 @@ TAGS
- /src/mod/say/mod_say_zh/Makefile
- BuildLog.htm
--/w32/Console/Debug/
--/w32/Console/Release/
--/w32/Library/Debug/
--/w32/Library/Release/
--Freeswitch.2010.sdf
-+Win32/
-+win32/
-+!/libs/win32/
-+*.suo
-+*.sdf
-+x64/
-+ipch/
--/Win32/
--/x64/
--src/mod/codecs/mod_celt/*/*/mod_celt.log
--src/mod/endpoints/mod_skinny/*/*/mod_skinny_2010.log
--src/mod/formats/mod_shout/*/*/mod_shout.log
-+/libs/xmlrpc-c/tools/xml-rpc-api2txt
- /w32/Setup/obj
--/src/mod/asr_tts/mod_pocketsphinx/x64/Debug/mod_pocketsphinx_manifest.rc
--/src/mod/endpoints/mod_h323/x64/Debug/mod_h323_manifest.rc
--/src/mod/endpoints/mod_rtmp/Win32/Debug/mod_rtmp_2010.log
--/src/mod/endpoints/mod_rtmp/Win32/Release/mod_rtmp_2010.log
--/src/mod/endpoints/mod_rtmp/x64/Debug/mod_rtmp_2010.log
--/src/mod/endpoints/mod_rtmp/x64/Debug/mod_rtmp_manifest.rc
--/src/mod/endpoints/mod_rtmp/x64/Release/mod_rtmp_2010.log
--/src/mod/endpoints/mod_skinny/x64/Debug/mod_skinny_manifest.rc
--/src/mod/languages/mod_managed/x64/Debug_CLR/FREESWITCH.MANAGED.DLL.metagen
--/src/mod/languages/mod_managed/x64/Debug_CLR/RSAENH.DLL.bi
--/src/mod/languages/mod_managed/x64/Debug_CLR/TZRES.DLL.bi
--/w32/Library/x64/Debug/FreeSwitch_manifest.rc
--/src/mod/endpoints/mod_h323/Win32/Debug/mod_h323_manifest.rc
--/src/mod/endpoints/mod_rtmp/Win32/Debug/mod_rtmp_manifest.rc
--/src/mod/endpoints/mod_skinny/Win32/Debug/mod_skinny_manifest.rc
--/src/mod/languages/mod_managed/Win32/Debug_CLR/FREESWITCH.MANAGED.DLL.metagen
--/src/mod/languages/mod_managed/Win32/Debug_CLR/RSAENH.DLL.bi
--/src/mod/languages/mod_managed/Win32/Debug_CLR/TZRES.DLL.bi
--/w32/Library/Win32/Debug/FreeSwitch_manifest.rc
--/src/mod/languages/mod_managed/Win32/Release_CLR/FREESWITCH.MANAGED.DLL.metagen
--/src/mod/languages/mod_managed/Win32/Release_CLR/RSAENH.DLL.bi
--/src/mod/languages/mod_managed/Win32/Release_CLR/TZRES.DLL.bi
--/src/mod/languages/mod_managed/x64/Release_CLR/FREESWITCH.MANAGED.DLL.metagen
--/src/mod/languages/mod_managed/x64/Release_CLR/RSAENH.DLL.bi
--/src/mod/languages/mod_managed/x64/Release_CLR/TZRES.DLL.bi
--libs/apr-util/a.out.dSYM/Contents/Info.plist
--libs/apr-util/a.out.dSYM/Contents/Resources/DWARF/a.out
--libs/apr/a.out.dSYM/Contents/Info.plist
--libs/apr/a.out.dSYM/Contents/Resources/DWARF/a.out
--libs/iksemel/a.out.dSYM/Contents/Info.plist
--libs/iksemel/a.out.dSYM/Contents/Resources/DWARF/a.out
--libs/ilbc/a.out.dSYM/Contents/Info.plist
--libs/ilbc/a.out.dSYM/Contents/Resources/DWARF/a.out
--libs/libedit/a.out.dSYM/Contents/Info.plist
--libs/libedit/a.out.dSYM/Contents/Resources/DWARF/a.out
--libs/pcre/a.out.dSYM/Contents/Info.plist
--libs/pcre/a.out.dSYM/Contents/Resources/DWARF/a.out
--libs/sqlite/lemon.dSYM/Contents/Info.plist
--libs/sqlite/lemon.dSYM/Contents/Resources/DWARF/lemon
--libs/sqlite/mkkeywordhash.dSYM/Contents/Info.plist
--libs/sqlite/mkkeywordhash.dSYM/Contents/Resources/DWARF/mkkeywordhash
--libs/sqlite/sqlite3.dSYM/Contents/Info.plist
--libs/sqlite/sqlite3.dSYM/Contents/Resources/DWARF/sqlite3
--libs/srtp/a.out.dSYM/Contents/Info.plist
--libs/srtp/a.out.dSYM/Contents/Resources/DWARF/a.out
-+*dSYM*
-+/libs/xmlrpc-c/lib/expat/xmltok/nametab.h\r
-diff --git a/Freeswitch.2008.sln b/Freeswitch.2008.sln
-index 62b2459..edb049f 100644
---- a/Freeswitch.2008.sln
-+++ b/Freeswitch.2008.sln
-@@ -281,12 +281,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_console", "src\mod\logg
- EndProject\r
- Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_xml_rpc", "src\mod\xml_int\mod_xml_rpc\mod_xml_rpc.2008.vcproj", "{CBEC7225-0C21-4DA8-978E-1F158F8AD950}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647} = {0D108721-EAE8-4BAF-8102-D8960EC93647}\r
--              {B535402E-38D2-4D54-8360-423ACBD17192} = {B535402E-38D2-4D54-8360-423ACBD17192}\r
-               {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}\r
--              {87EE9DA4-DE1E-4448-8324-183C98DCA588} = {87EE9DA4-DE1E-4448-8324-183C98DCA588}\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA} = {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9} = {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}\r
-+              {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B} = {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}\r
-+              {A4D67895-E709-40C7-82B6-DE1D12DDDE04} = {A4D67895-E709-40C7-82B6-DE1D12DDDE04}\r
-+              {510BDAA8-C04D-47DB-8482-E6AF380D3E07} = {510BDAA8-C04D-47DB-8482-E6AF380D3E07}\r
-+              {E5A9BCDA-B82D-4B08-B23E-9A782E367888} = {E5A9BCDA-B82D-4B08-B23E-9A782E367888}\r
-+              {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268} = {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}\r
-       EndProjectSection\r
- EndProject\r
- Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_rss", "src\mod\applications\mod_rss\mod_rss.2008.vcproj", "{B69247FA-ECD6-40ED-8E44-5CA6C3BAF9A4}"\r
-@@ -549,14 +549,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_lua", "src\mod\language
-               {D0B36172-CD76-454A-9B89-990025266C2A} = {D0B36172-CD76-454A-9B89-990025266C2A}\r
-       EndProjectSection\r
- EndProject\r
--Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "abyss", "libs\xmlrpc-c\Windows\abyss.2008.vcproj", "{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}"\r
--EndProject\r
--Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlrpc", "libs\xmlrpc-c\Windows\xmlrpc.2008.vcproj", "{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}"\r
--EndProject\r
--Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlparse", "libs\xmlrpc-c\Windows\xmlparse.2008.vcproj", "{0D108721-EAE8-4BAF-8102-D8960EC93647}"\r
--EndProject\r
--Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmltok", "libs\xmlrpc-c\Windows\xmltok.2008.vcproj", "{B535402E-38D2-4D54-8360-423ACBD17192}"\r
--EndProject\r
- Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download sphinxbase", "libs\win32\Download sphinxbase.2008.vcproj", "{4F92B672-DADB-4047-8D6A-4BB3796733FD}"\r
- EndProject\r
- Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download sphinxmodel", "libs\win32\Download sphinxmodel.2008.vcproj", "{2DEE4895-1134-439C-B688-52203E57D878}"\r
-@@ -968,6 +960,21 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjpeg", "libs\win32\libjp
- EndProject\r
- Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download libjpeg", "libs\win32\Download libjpeg.2008.vcproj", "{21A7DA70-555E-49FA-942B-D84A38B61243}"\r
- EndProject\r
-+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "xmlrpc-c", "xmlrpc-c", "{3783935D-7C0A-4166-A376-C3D8E64F3A9C}"\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "abyss", "libs\win32\xmlrpc-c\abyss.2008.vcproj", "{A4D67895-E709-40C7-82B6-DE1D12DDDE04}"\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gennmtab", "libs\win32\xmlrpc-c\gennmtab.2008.vcproj", "{2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {E5A9BCDA-B82D-4B08-B23E-9A782E367888} = {E5A9BCDA-B82D-4B08-B23E-9A782E367888}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlparse", "libs\win32\xmlrpc-c\xmlparse.2008.vcproj", "{E5A9BCDA-B82D-4B08-B23E-9A782E367888}"\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlrpc", "libs\win32\xmlrpc-c\xmlrpc.2008.vcproj", "{510BDAA8-C04D-47DB-8482-E6AF380D3E07}"\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmltok", "libs\win32\xmlrpc-c\xmltok.2008.vcproj", "{3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}"\r
-+EndProject\r
- Global\r
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
-               All|Win32 = All|Win32\r
-@@ -1728,50 +1735,6 @@ Global
-               {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|Win32.Build.0 = Release|Win32\r
-               {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64.ActiveCfg = Release|x64\r
-               {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64.Build.0 = Release|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|Win32.ActiveCfg = Release|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64.ActiveCfg = Release|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64.Build.0 = Release|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.ActiveCfg = Debug|Win32\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.Build.0 = Debug|Win32\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64.ActiveCfg = Debug|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64.Build.0 = Debug|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.ActiveCfg = Release|Win32\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.Build.0 = Release|Win32\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64.ActiveCfg = Release|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64.Build.0 = Release|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|Win32.ActiveCfg = Release|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64.ActiveCfg = Release|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64.Build.0 = Release|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.ActiveCfg = Debug|Win32\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.Build.0 = Debug|Win32\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64.ActiveCfg = Debug|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64.Build.0 = Debug|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.ActiveCfg = Release|Win32\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.Build.0 = Release|Win32\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64.ActiveCfg = Release|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64.Build.0 = Release|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|Win32.ActiveCfg = Debug|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64.ActiveCfg = Debug|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64.Build.0 = Debug|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.ActiveCfg = Debug|Win32\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.Build.0 = Debug|Win32\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64.ActiveCfg = Debug|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64.Build.0 = Debug|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.ActiveCfg = Release|Win32\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.Build.0 = Release|Win32\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.ActiveCfg = Release|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.Build.0 = Release|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.All|Win32.ActiveCfg = Release|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64.ActiveCfg = Release|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64.Build.0 = Release|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.ActiveCfg = Debug|Win32\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.Build.0 = Debug|Win32\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64.ActiveCfg = Debug|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64.Build.0 = Debug|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.ActiveCfg = Release|Win32\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.Build.0 = Release|Win32\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64.ActiveCfg = Release|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64.Build.0 = Release|x64\r
-               {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|Win32.ActiveCfg = Release|Win32\r
-               {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|Win32.Build.0 = Release|Win32\r
-               {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x64.ActiveCfg = Release|Win32\r
-@@ -2749,6 +2712,61 @@ Global
-               {21A7DA70-555E-49FA-942B-D84A38B61243}.Release|Win32.Build.0 = Release|Win32\r
-               {21A7DA70-555E-49FA-942B-D84A38B61243}.Release|x64.ActiveCfg = Release|Win32\r
-               {21A7DA70-555E-49FA-942B-D84A38B61243}.Release|x64.Build.0 = Release|Win32\r
-+              {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.All|Win32.ActiveCfg = Release|x64\r
-+              {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.All|x64.ActiveCfg = Release|x64\r
-+              {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.All|x64.Build.0 = Release|x64\r
-+              {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.Debug|x64.Build.0 = Debug|x64\r
-+              {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.Release|Win32.Build.0 = Release|Win32\r
-+              {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.Release|x64.ActiveCfg = Release|x64\r
-+              {A4D67895-E709-40C7-82B6-DE1D12DDDE04}.Release|x64.Build.0 = Release|x64\r
-+              {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.All|Win32.ActiveCfg = Release|x64\r
-+              {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.All|x64.ActiveCfg = Release|x64\r
-+              {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.All|x64.Build.0 = Release|x64\r
-+              {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.Debug|x64.Build.0 = Debug|x64\r
-+              {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.Release|Win32.Build.0 = Release|Win32\r
-+              {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.Release|x64.ActiveCfg = Release|x64\r
-+              {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}.Release|x64.Build.0 = Release|x64\r
-+              {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.All|Win32.ActiveCfg = Debug|x64\r
-+              {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.All|x64.ActiveCfg = Debug|x64\r
-+              {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.All|x64.Build.0 = Debug|x64\r
-+              {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.Debug|x64.Build.0 = Debug|x64\r
-+              {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.Release|Win32.Build.0 = Release|Win32\r
-+              {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.Release|x64.ActiveCfg = Release|x64\r
-+              {E5A9BCDA-B82D-4B08-B23E-9A782E367888}.Release|x64.Build.0 = Release|x64\r
-+              {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.All|Win32.ActiveCfg = Release|x64\r
-+              {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.All|x64.ActiveCfg = Release|x64\r
-+              {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.All|x64.Build.0 = Release|x64\r
-+              {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.Debug|x64.Build.0 = Debug|x64\r
-+              {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.Release|Win32.Build.0 = Release|Win32\r
-+              {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.Release|x64.ActiveCfg = Release|x64\r
-+              {510BDAA8-C04D-47DB-8482-E6AF380D3E07}.Release|x64.Build.0 = Release|x64\r
-+              {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.All|Win32.ActiveCfg = Release|x64\r
-+              {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.All|x64.ActiveCfg = Release|x64\r
-+              {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.All|x64.Build.0 = Release|x64\r
-+              {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.Debug|x64.Build.0 = Debug|x64\r
-+              {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.Release|Win32.Build.0 = Release|Win32\r
-+              {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.Release|x64.ActiveCfg = Release|x64\r
-+              {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}.Release|x64.Build.0 = Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(SolutionProperties) = preSolution\r
-               HideSolutionNode = FALSE\r
-@@ -2846,10 +2864,6 @@ Global
-               {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {0A18A071-125E-442F-AFF7-A3F68ABECF99} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
--              {B535402E-38D2-4D54-8360-423ACBD17192} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {94001A0E-A837-445C-8004-F918F10D0226} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {0AD1177E-1FD8-4643-9391-431467A11084} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-@@ -2876,6 +2890,7 @@ Global
-               {23B4D303-79FC-49E0-89E2-2280E7E28940} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {FE02CD06-DD97-489C-8F61-B5E7F89BCC0A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-+              {3783935D-7C0A-4166-A376-C3D8E64F3A9C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {8B3B4C4C-13C2-446C-BEB0-F412CC2CFB9A} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
-               {4F92B672-DADB-4047-8D6A-4BB3796733FD} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
-               {2DEE4895-1134-439C-B688-52203E57D878} = {C120A020-773F-4EA3-923F-B67AF28B750D}\r
-@@ -2937,5 +2952,10 @@ Global
-               {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {B376D494-D7DD-4B2A-99E2-52916D5A8CD8}\r
-               {B4B62169-5AD4-4559-8707-3D933AC5DB39} = {B376D494-D7DD-4B2A-99E2-52916D5A8CD8}\r
-               {25BD39B1-C8BF-4676-A738-9CABD9C6BC79} = {B376D494-D7DD-4B2A-99E2-52916D5A8CD8}\r
-+              {A4D67895-E709-40C7-82B6-DE1D12DDDE04} = {3783935D-7C0A-4166-A376-C3D8E64F3A9C}\r
-+              {2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B} = {3783935D-7C0A-4166-A376-C3D8E64F3A9C}\r
-+              {E5A9BCDA-B82D-4B08-B23E-9A782E367888} = {3783935D-7C0A-4166-A376-C3D8E64F3A9C}\r
-+              {510BDAA8-C04D-47DB-8482-E6AF380D3E07} = {3783935D-7C0A-4166-A376-C3D8E64F3A9C}\r
-+              {3CF7C0E0-07C2-473A-A1E4-2274AEEC1268} = {3783935D-7C0A-4166-A376-C3D8E64F3A9C}\r
-       EndGlobalSection\r
- EndGlobal\r
-diff --git a/Freeswitch.2010.sln b/Freeswitch.2010.sln
-index fd8eda1..c232e9a 100644
---- a/Freeswitch.2010.sln
-+++ b/Freeswitch.2010.sln
-@@ -315,14 +315,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_spidermonkey_curl", "sr
- EndProject\r
- Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_lua", "src\mod\languages\mod_lua\mod_lua.2010.vcxproj", "{7B077E7F-1BE7-4291-AB86-55E527B25CAC}"\r
- EndProject\r
--Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "abyss", "libs\xmlrpc-c\Windows\abyss.2010.vcxproj", "{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}"\r
--EndProject\r
--Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlrpc", "libs\xmlrpc-c\Windows\xmlrpc.2010.vcxproj", "{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}"\r
--EndProject\r
--Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlparse", "libs\xmlrpc-c\Windows\xmlparse.2010.vcxproj", "{0D108721-EAE8-4BAF-8102-D8960EC93647}"\r
--EndProject\r
--Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmltok", "libs\xmlrpc-c\Windows\xmltok.2010.vcxproj", "{B535402E-38D2-4D54-8360-423ACBD17192}"\r
--EndProject\r
- Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download sphinxbase", "libs\win32\Download sphinxbase.2010.vcxproj", "{4F92B672-DADB-4047-8D6A-4BB3796733FD}"\r
- EndProject\r
- Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Download sphinxmodel", "libs\win32\Download sphinxmodel.2010.vcxproj", "{2DEE4895-1134-439C-B688-52203E57D878}"\r
-@@ -529,6 +521,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_abstraction", "src\mod\
- EndProject\r
- Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sms", "src\mod\applications\mod_sms\mod_sms.2010.vcxproj", "{2469B306-B027-4FF2-8815-C9C1EA2CAE79}"\r
- EndProject\r
-+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "xmlrpc-c", "xmlrpc-c", "{9DE35039-A8F6-4FBF-B1B6-EB527F802411}"\r
-+EndProject\r
- Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsmlib", "src\mod\endpoints\mod_gsmopen\gsmlib\gsmlib-1.10-patched-13ubuntu\win32\gsmlib.2010.vcxproj", "{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}"\r
- EndProject\r
- Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_gsmopen", "src\mod\endpoints\mod_gsmopen\mod_gsmopen.2010.vcxproj", "{74B120FF-6935-4DFE-A142-CDB6BEA99C90}"\r
-@@ -544,6 +538,31 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjpeg", "libs\win32\libjp
-               {652AD5F7-8488-489F-AAD0-7FBE064703B6} = {652AD5F7-8488-489F-AAD0-7FBE064703B6}\r
-       EndProjectSection\r
- EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "abyss", "libs\win32\xmlrpc-c\abyss.2010.vcxproj", "{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647} = {0D108721-EAE8-4BAF-8102-D8960EC93647}\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192} = {B535402E-38D2-4D54-8360-423ACBD17192}\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA} = {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gennmtab", "libs\win32\xmlrpc-c\gennmtab.2010.vcxproj", "{BED7539C-0099-4A14-AD5D-30828F15A171}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647} = {0D108721-EAE8-4BAF-8102-D8960EC93647}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlparse", "libs\win32\xmlrpc-c\xmlparse.2010.vcxproj", "{0D108721-EAE8-4BAF-8102-D8960EC93647}"\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlrpc", "libs\win32\xmlrpc-c\xmlrpc.2010.vcxproj", "{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647} = {0D108721-EAE8-4BAF-8102-D8960EC93647}\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192} = {B535402E-38D2-4D54-8360-423ACBD17192}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmltok", "libs\win32\xmlrpc-c\xmltok.2010.vcxproj", "{B535402E-38D2-4D54-8360-423ACBD17192}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171} = {BED7539C-0099-4A14-AD5D-30828F15A171}\r
-+      EndProjectSection\r
-+EndProject\r
- Global\r
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
-               All|Win32 = All|Win32\r
-@@ -1826,78 +1845,6 @@ Global
-               {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64.Build.0 = Release|x64\r
-               {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x64 Setup.ActiveCfg = Release|x64\r
-               {7B077E7F-1BE7-4291-AB86-55E527B25CAC}.Release|x86 Setup.ActiveCfg = Release|Win32\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|Win32.ActiveCfg = Release|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64.ActiveCfg = Release|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64.Build.0 = Release|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64 Setup.ActiveCfg = Release|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64 Setup.Build.0 = Release|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x86 Setup.ActiveCfg = Release|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.ActiveCfg = Debug|Win32\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.Build.0 = Debug|Win32\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64.ActiveCfg = Debug|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64.Build.0 = Debug|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.ActiveCfg = Release|Win32\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.Build.0 = Release|Win32\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64.ActiveCfg = Release|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64.Build.0 = Release|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64 Setup.ActiveCfg = Release|x64\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x86 Setup.ActiveCfg = Release|Win32\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|Win32.ActiveCfg = Release|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64.ActiveCfg = Release|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64.Build.0 = Release|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64 Setup.ActiveCfg = Release|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64 Setup.Build.0 = Release|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x86 Setup.ActiveCfg = Release|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.ActiveCfg = Debug|Win32\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.Build.0 = Debug|Win32\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64.ActiveCfg = Debug|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64.Build.0 = Debug|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.ActiveCfg = Release|Win32\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.Build.0 = Release|Win32\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64.ActiveCfg = Release|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64.Build.0 = Release|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64 Setup.ActiveCfg = Release|x64\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x86 Setup.ActiveCfg = Release|Win32\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|Win32.ActiveCfg = Debug|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64.ActiveCfg = Debug|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64.Build.0 = Debug|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64 Setup.ActiveCfg = Debug|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64 Setup.Build.0 = Debug|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x86 Setup.ActiveCfg = Debug|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.ActiveCfg = Debug|Win32\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.Build.0 = Debug|Win32\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64.ActiveCfg = Debug|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64.Build.0 = Debug|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.ActiveCfg = Release|Win32\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.Build.0 = Release|Win32\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.ActiveCfg = Release|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.Build.0 = Release|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64 Setup.ActiveCfg = Release|x64\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x86 Setup.ActiveCfg = Release|Win32\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.All|Win32.ActiveCfg = Release|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64.ActiveCfg = Release|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64.Build.0 = Release|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64 Setup.ActiveCfg = Release|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64 Setup.Build.0 = Release|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.All|x86 Setup.ActiveCfg = Release|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.ActiveCfg = Debug|Win32\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.Build.0 = Debug|Win32\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64.ActiveCfg = Debug|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64.Build.0 = Debug|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x86 Setup.ActiveCfg = Debug|Win32\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.ActiveCfg = Release|Win32\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.Build.0 = Release|Win32\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64.ActiveCfg = Release|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64.Build.0 = Release|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64 Setup.ActiveCfg = Release|x64\r
--              {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x86 Setup.ActiveCfg = Release|Win32\r
-               {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|Win32.ActiveCfg = Release|Win32\r
-               {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|Win32.Build.0 = Release|Win32\r
-               {4F92B672-DADB-4047-8D6A-4BB3796733FD}.All|x64.ActiveCfg = Release|Win32\r
-@@ -3718,6 +3665,91 @@ Global
-               {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|x64.Build.0 = Release|x64\r
-               {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|x64 Setup.ActiveCfg = Release|Win32\r
-               {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}.Release|x86 Setup.ActiveCfg = Release|Win32\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|Win32.ActiveCfg = Release|x64\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64.ActiveCfg = Release|x64\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64.Build.0 = Release|x64\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x64 Setup.ActiveCfg = Release|x64\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.All|x86 Setup.ActiveCfg = Release|x64\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64.Build.0 = Debug|x64\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Debug|x86 Setup.ActiveCfg = Debug|x64\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|Win32.Build.0 = Release|Win32\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64.ActiveCfg = Release|x64\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64.Build.0 = Release|x64\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x64 Setup.ActiveCfg = Release|x64\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}.Release|x86 Setup.ActiveCfg = Release|x64\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171}.All|Win32.ActiveCfg = Release|x64\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171}.All|x64.ActiveCfg = Release|x64\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171}.All|x64.Build.0 = Release|x64\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171}.All|x64 Setup.ActiveCfg = Release|x64\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171}.All|x86 Setup.ActiveCfg = Release|x64\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171}.Debug|x64.Build.0 = Debug|x64\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171}.Debug|x86 Setup.ActiveCfg = Debug|x64\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171}.Release|Win32.Build.0 = Release|Win32\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171}.Release|x64.ActiveCfg = Release|x64\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171}.Release|x64.Build.0 = Release|x64\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171}.Release|x64 Setup.ActiveCfg = Release|x64\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171}.Release|x86 Setup.ActiveCfg = Release|x64\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|Win32.ActiveCfg = Release|x64\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64.ActiveCfg = Release|x64\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64.Build.0 = Release|x64\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x64 Setup.ActiveCfg = Release|x64\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647}.All|x86 Setup.ActiveCfg = Release|x64\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64.Build.0 = Debug|x64\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Debug|x86 Setup.ActiveCfg = Debug|x64\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|Win32.Build.0 = Release|Win32\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.ActiveCfg = Release|x64\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64.Build.0 = Release|x64\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x64 Setup.ActiveCfg = Release|x64\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647}.Release|x86 Setup.ActiveCfg = Release|x64\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|Win32.ActiveCfg = Release|x64\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64.ActiveCfg = Release|x64\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64.Build.0 = Release|x64\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x64 Setup.ActiveCfg = Release|x64\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.All|x86 Setup.ActiveCfg = Release|x64\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64.Build.0 = Debug|x64\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Debug|x86 Setup.ActiveCfg = Debug|x64\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|Win32.Build.0 = Release|Win32\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64.ActiveCfg = Release|x64\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64.Build.0 = Release|x64\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x64 Setup.ActiveCfg = Release|x64\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}.Release|x86 Setup.ActiveCfg = Release|x64\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192}.All|Win32.ActiveCfg = Release|x64\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64.ActiveCfg = Release|x64\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64.Build.0 = Release|x64\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192}.All|x64 Setup.ActiveCfg = Release|x64\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192}.All|x86 Setup.ActiveCfg = Release|x64\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64.Build.0 = Debug|x64\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x64 Setup.ActiveCfg = Debug|x64\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192}.Debug|x86 Setup.ActiveCfg = Debug|x64\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192}.Release|Win32.Build.0 = Release|Win32\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64.ActiveCfg = Release|x64\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64.Build.0 = Release|x64\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x64 Setup.ActiveCfg = Release|x64\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192}.Release|x86 Setup.ActiveCfg = Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(SolutionProperties) = preSolution\r
-               HideSolutionNode = FALSE\r
-@@ -3804,10 +3836,6 @@ Global
-               {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {4043FC6A-9A30-4577-8AD5-9B233C9575D8} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {0A18A071-125E-442F-AFF7-A3F68ABECF99} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
--              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
--              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
--              {0D108721-EAE8-4BAF-8102-D8960EC93647} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
--              {B535402E-38D2-4D54-8360-423ACBD17192} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {2F025EAD-99BD-40F5-B2CC-F0A28CAD7F2D} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {94001A0E-A837-445C-8004-F918F10D0226} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {0AD1177E-1FD8-4643-9391-431467A11084} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-@@ -3832,6 +3860,7 @@ Global
-               {E4D29906-8B73-4F8A-B5F4-CA8BFA648F5A} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {70A49BC2-7500-41D0-B75D-EDCC5BE987A0} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {23B4D303-79FC-49E0-89E2-2280E7E28940} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-+              {9DE35039-A8F6-4FBF-B1B6-EB527F802411} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {C13CC324-0032-4492-9A30-310A6BD64FF5} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-               {019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}\r
-@@ -3917,5 +3946,10 @@ Global
-               {D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {E4D29906-8B73-4F8A-B5F4-CA8BFA648F5A}\r
-               {B4B62169-5AD4-4559-8707-3D933AC5DB39} = {E4D29906-8B73-4F8A-B5F4-CA8BFA648F5A}\r
-               {25BD39B1-C8BF-4676-A738-9CABD9C6BC79} = {E4D29906-8B73-4F8A-B5F4-CA8BFA648F5A}\r
-+              {D2396DD7-7D38-473A-ABB7-6F96D65AE1B9} = {9DE35039-A8F6-4FBF-B1B6-EB527F802411}\r
-+              {BED7539C-0099-4A14-AD5D-30828F15A171} = {9DE35039-A8F6-4FBF-B1B6-EB527F802411}\r
-+              {0D108721-EAE8-4BAF-8102-D8960EC93647} = {9DE35039-A8F6-4FBF-B1B6-EB527F802411}\r
-+              {CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA} = {9DE35039-A8F6-4FBF-B1B6-EB527F802411}\r
-+              {B535402E-38D2-4D54-8360-423ACBD17192} = {9DE35039-A8F6-4FBF-B1B6-EB527F802411}\r
-       EndGlobalSection\r
- EndGlobal\r
-diff --git a/configure.in b/configure.in
-index b8db9bc..89cf47d 100644
---- a/configure.in
-+++ b/configure.in
-@@ -497,9 +497,8 @@ AC_SUBST(LIBTOOL_LIB_EXTEN)
- # Checks for header files.
- AC_HEADER_DIRENT
- AC_HEADER_STDC
--AC_CHECK_HEADERS([sys/types.h sys/resource.h sched.h wchar.h sys/filio.h sys/ioctl.h netdb.h execinfo.h])
-+AC_CHECK_HEADERS([sys/types.h sys/resource.h sched.h wchar.h sys/filio.h sys/ioctl.h sys/select.h netdb.h execinfo.h])
--# for xmlrpc-c config.h
- if test x"$ac_cv_header_wchar_h" = xyes; then
-   HAVE_WCHAR_H_DEFINE=1
- else
-@@ -507,6 +506,31 @@ else
- fi
- AC_SUBST(HAVE_WCHAR_H_DEFINE)
-+# Needed by Abyss on Solaris:
-+
-+if test x"$ac_cv_header_sys_filio_h" = xyes; then
-+  HAVE_SYS_FILIO_H_DEFINE=1
-+else
-+  HAVE_SYS_FILIO_H_DEFINE=0
-+fi
-+AC_SUBST(HAVE_SYS_FILIO_H_DEFINE)
-+
-+# Needed by Abyss on Solaris:
-+
-+if test x"$ac_cv_header_sys_ioctl_h" = xyes; then
-+  HAVE_SYS_IOCTL_H_DEFINE=1
-+else
-+  HAVE_SYS_IOCTL_H_DEFINE=0
-+fi
-+AC_SUBST(HAVE_SYS_IOCTL_H_DEFINE)
-+
-+if test x"$ac_cv_header_sys_select_h" = xyes; then
-+  HAVE_SYS_SELECT_H_DEFINE=1
-+else
-+  HAVE_SYS_SELECT_H_DEFINE=0
-+fi
-+AC_SUBST(HAVE_SYS_SELECT_H_DEFINE)
-+
- # Checks for typedefs, structures, and compiler characteristics.
- AC_C_CONST
- AC_C_INLINE
-@@ -610,6 +634,7 @@ fi
- # xmlrpc-c checks
- #
-+AC_CHECK_FUNCS(setenv strtoll strtoull strtoq strtouq __strtoll __strtoull)
- HAVE_LIBWWW_SSL_DEFINE=0
- AC_SUBST(HAVE_LIBWWW_SSL_DEFINE)
-@@ -1056,8 +1081,10 @@ AC_CONFIG_FILES([Makefile
-               build/getg729.sh
-               build/freeswitch.pc
-               build/modmake.rules
--              libs/xmlrpc-c/include/xmlrpc-c/config.h
-               libs/xmlrpc-c/xmlrpc_config.h
-+              libs/xmlrpc-c/config.mk
-+              libs/xmlrpc-c/srcdir.mk
-+              libs/xmlrpc-c/stamp-h
-               scripts/gentls_cert])
- AM_CONDITIONAL(ISLINUX, [test `uname -s` = Linux])
-diff --git a/libs/.gitignore b/libs/.gitignore
-index 1bc99bc..ed326e9 100644
---- a/libs/.gitignore
-+++ b/libs/.gitignore
-@@ -884,11 +884,14 @@ opal
- /win32/libshout/*/*/libshout.log
- /win32/pcre/pcre_chartables.c
- /win32/tmp*.bat
--/xmlrpc-c/include/xmlrpc-c/config.h
- !/xmlrpc-c/include/xmlrpc-c/config.h.in
- /xmlrpc-c/stamp-h2
--/xmlrpc-c/xmlrpc_amconfig.h
-+/xmlrpc-c/examples/config.h
-+/xmlrpc-c/include/xmlrpc-c/config.h
-+/xmlrpc-c/transport_config.h
-+/xmlrpc-c/version.h
- /xmlrpc-c/xmlrpc_config.h
-+# /xmlrpc-c/xmlrpc_amconfig.h
- /yaml/
- /yaml/config.h
- /yaml/stamp-h1
-@@ -944,4 +947,3 @@ opal
- !/yaml/config/ltmain.sh
- !/yaml/config/missing
- !/yaml/configure
--
-diff --git a/libs/win32/apr-util/libaprutil.2010.vcxproj.filters b/libs/win32/apr-util/libaprutil.2010.vcxproj.filters
-index 9ba92f9..c7cf5f2 100644
---- a/libs/win32/apr-util/libaprutil.2010.vcxproj.filters
-+++ b/libs/win32/apr-util/libaprutil.2010.vcxproj.filters
-@@ -46,6 +46,9 @@
-     <Filter Include="Public Header Files">\r
-       <UniqueIdentifier>{ee62af10-73ee-4af5-85d1-442efcd33aa2}</UniqueIdentifier>\r
-     </Filter>\r
-+    <Filter Include="Source Files\xml">\r
-+      <UniqueIdentifier>{0ea472ce-22be-43c7-b06d-a50dd027a9fe}</UniqueIdentifier>\r
-+    </Filter>\r
-   </ItemGroup>\r
-   <ItemGroup>\r
-     <ClCompile Include="..\..\apr-util\buckets\apr_brigade.c">\r
-@@ -174,8 +177,8 @@
-     <ClCompile Include="..\..\apr-util\xlate\xlate.c">\r
-       <Filter>Source Files\xlate</Filter>\r
-     </ClCompile>\r
--    <ClCompile Include="..\..\apr-util\xml\apr_xml.c" />\r
--  </ItemGroup>\r
-+    <ClCompile Include="..\..\apr-util\xml\apr_xml.c" />
-+  </ItemGroup>
-   <ItemGroup>\r
-     <ClInclude Include="..\..\apr-util\include\apr_anylock.h">\r
-       <Filter>Public Header Files</Filter>\r
-diff --git a/libs/win32/xmlrpc-c/abyss.2008.vcproj b/libs/win32/xmlrpc-c/abyss.2008.vcproj
-new file mode 100644
-index 0000000..4ade18c
---- /dev/null
-+++ b/libs/win32/xmlrpc-c/abyss.2008.vcproj
-@@ -0,0 +1,410 @@
-+<?xml version="1.0" encoding="Windows-1252"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9.00"\r
-+      Name="abyss"\r
-+      ProjectGUID="{A4D67895-E709-40C7-82B6-DE1D12DDDE04}"\r
-+      RootNamespace="abyss"\r
-+      TargetFrameworkVersion="131072"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory=".\Debug\abyss"\r
-+                      IntermediateDirectory=".\Debug\abyss"\r
-+                      ConfigurationType="4"\r
-+                      InheritedPropertySheets="..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="..\,..\include,..\lib\util\include,."\r
-+                              PreprocessorDefinitions="WIN32;_DEBUG;_LIB;ABYSS_WIN32;_THREAD"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile=".\Debug\abyss/abyss.pch"\r
-+                              AssemblerListingLocation=".\Debug\abyss/"\r
-+                              ObjectFile=".\Debug\abyss/"\r
-+                              ProgramDataBaseFileName=".\Debug\abyss/"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLibrarianTool"\r
-+                              OutputFile="..\lib\abyssD.lib"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Debug\abyss/abyss.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      ConfigurationType="4"\r
-+                      InheritedPropertySheets="..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="..\,..\include,..\lib\util\include,."\r
-+                              PreprocessorDefinitions="WIN32;_DEBUG;_LIB;ABYSS_WIN32;_THREAD"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile=".\Debug\abyss/abyss.pch"\r
-+                              ObjectFile="$(IntDir)\Abyss\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\Abyss\vc90.pdb"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLibrarianTool"\r
-+                              OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\abyssD.lib"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Debug\abyss/abyss.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory=".\Release\Abyss"\r
-+                      IntermediateDirectory=".\Release\Abyss"\r
-+                      ConfigurationType="4"\r
-+                      InheritedPropertySheets="..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="..\,..\include,..\lib\util\include,."\r
-+                              PreprocessorDefinitions="WIN32;NDEBUG;_LIB;ABYSS_WIN32;_THREAD"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile=".\Release\Abyss/abyss.pch"\r
-+                              AssemblerListingLocation=".\Release\Abyss/"\r
-+                              ObjectFile=".\Release\Abyss/"\r
-+                              ProgramDataBaseFileName=".\Release\Abyss/"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLibrarianTool"\r
-+                              OutputFile="..\lib\abyss.lib"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Release\Abyss/abyss.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      ConfigurationType="4"\r
-+                      InheritedPropertySheets="..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="..\,..\include,..\lib\util\include,."\r
-+                              PreprocessorDefinitions="WIN32;NDEBUG;_LIB;ABYSS_WIN32;_THREAD"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile=".\Release\Abyss/abyss.pch"\r
-+                              ObjectFile="$(IntDir)\Abyss\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\Abyss\vc90.pdb"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLibrarianTool"\r
-+                              OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\abyss.lib"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Release\Abyss/abyss.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\channel.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\chanswitch.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\conf.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\conn.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\data.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\date.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\file.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\handler.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\http.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\init.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\response.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\server.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\session.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\socket.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\socket_win.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\thread_windows.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\token.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\abyss\src\trace.c"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/win32/xmlrpc-c/abyss.2010.vcxproj b/libs/win32/xmlrpc-c/abyss.2010.vcxproj
-new file mode 100644
-index 0000000..e35b99f
---- /dev/null
-+++ b/libs/win32/xmlrpc-c/abyss.2010.vcxproj
-@@ -0,0 +1,197 @@
-+<?xml version="1.0" encoding="utf-8"?>\r
-+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-+  <ItemGroup Label="ProjectConfigurations">\r
-+    <ProjectConfiguration Include="Debug|Win32">\r
-+      <Configuration>Debug</Configuration>\r
-+      <Platform>Win32</Platform>\r
-+    </ProjectConfiguration>\r
-+    <ProjectConfiguration Include="Debug|x64">\r
-+      <Configuration>Debug</Configuration>\r
-+      <Platform>x64</Platform>\r
-+    </ProjectConfiguration>\r
-+    <ProjectConfiguration Include="Release|Win32">\r
-+      <Configuration>Release</Configuration>\r
-+      <Platform>Win32</Platform>\r
-+    </ProjectConfiguration>\r
-+    <ProjectConfiguration Include="Release|x64">\r
-+      <Configuration>Release</Configuration>\r
-+      <Platform>x64</Platform>\r
-+    </ProjectConfiguration>\r
-+  </ItemGroup>\r
-+  <PropertyGroup Label="Globals">\r
-+    <ProjectName>abyss</ProjectName>\r
-+    <ProjectGuid>{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}</ProjectGuid>\r
-+    <RootNamespace>abyss</RootNamespace>\r
-+  </PropertyGroup>\r
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+    <CharacterSet>MultiByte</CharacterSet>\r
-+  </PropertyGroup>\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+    <CharacterSet>MultiByte</CharacterSet>\r
-+  </PropertyGroup>\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+    <CharacterSet>MultiByte</CharacterSet>\r
-+  </PropertyGroup>\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+    <CharacterSet>MultiByte</CharacterSet>\r
-+  </PropertyGroup>\r
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-+  <ImportGroup Label="ExtensionSettings">\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="..\..\..\w32\extlib.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="..\..\..\w32\extlib.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="..\..\..\w32\extlib.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="..\..\..\w32\extlib.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <PropertyGroup Label="UserMacros" />\r
-+  <PropertyGroup>\r
-+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PlatformName)\abyss\$(Configuration)\</IntDir>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PlatformName)\abyss\$(Configuration)\</IntDir>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(PlatformName)\abyss\$(Configuration)\</IntDir>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(PlatformName)\abyss\$(Configuration)\</IntDir>\r
-+  </PropertyGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-+    <ClCompile>\r
-+      <Optimization>Disabled</Optimization>\r
-+      <AdditionalIncludeDirectories>..\;..\include;..\lib\util\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;ABYSS_WIN32;_THREAD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <MinimalRebuild>true</MinimalRebuild>\r
-+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0409</Culture>\r
-+    </ResourceCompile>\r
-+    <Lib>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Lib>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Bscmake>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-+    <Midl>\r
-+      <TargetEnvironment>X64</TargetEnvironment>\r
-+    </Midl>\r
-+    <ClCompile>\r
-+      <Optimization>Disabled</Optimization>\r
-+      <AdditionalIncludeDirectories>..\;..\include;..\lib\util\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;ABYSS_WIN32;_THREAD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <MinimalRebuild>true</MinimalRebuild>\r
-+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0409</Culture>\r
-+    </ResourceCompile>\r
-+    <Lib>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Lib>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Bscmake>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-+    <ClCompile>\r
-+      <Optimization>MaxSpeed</Optimization>\r
-+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-+      <AdditionalIncludeDirectories>..\;..\include;..\lib\util\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;ABYSS_WIN32;_THREAD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <StringPooling>true</StringPooling>\r
-+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0409</Culture>\r
-+    </ResourceCompile>\r
-+    <Lib>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Lib>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Bscmake>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-+    <Midl>\r
-+      <TargetEnvironment>X64</TargetEnvironment>\r
-+    </Midl>\r
-+    <ClCompile>\r
-+      <Optimization>MaxSpeed</Optimization>\r
-+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-+      <AdditionalIncludeDirectories>..\;..\include;..\lib\util\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;ABYSS_WIN32;_THREAD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <StringPooling>true</StringPooling>\r
-+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0409</Culture>\r
-+    </ResourceCompile>\r
-+    <Lib>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Lib>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Bscmake>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemGroup>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\channel.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\chanswitch.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\conf.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\conn.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\data.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\date.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\file.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\handler.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\http.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\init.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\response.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\server.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\session.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\socket.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\socket_win.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\thread_windows.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\token.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\trace.c" />\r
-+  </ItemGroup>\r
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-+  <ImportGroup Label="ExtensionTargets">\r
-+  </ImportGroup>\r
-+</Project>
-\ No newline at end of file
-diff --git a/libs/win32/xmlrpc-c/abyss.2010.vcxproj.filters b/libs/win32/xmlrpc-c/abyss.2010.vcxproj.filters
-new file mode 100644
-index 0000000..f73f272
---- /dev/null
-+++ b/libs/win32/xmlrpc-c/abyss.2010.vcxproj.filters
-@@ -0,0 +1,69 @@
-+<?xml version="1.0" encoding="utf-8"?>\r
-+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-+  <ItemGroup>\r
-+    <Filter Include="Source Files">\r
-+      <UniqueIdentifier>{8ac4971f-a9ba-4930-a7e3-b291ad24d6ca}</UniqueIdentifier>\r
-+      <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>\r
-+    </Filter>\r
-+    <Filter Include="Header Files">\r
-+      <UniqueIdentifier>{05489d43-6c6b-4bb8-95db-414e8137ee9e}</UniqueIdentifier>\r
-+      <Extensions>h;hpp;hxx;hm;inl</Extensions>\r
-+    </Filter>\r
-+  </ItemGroup>\r
-+  <ItemGroup>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\file.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\handler.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\http.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\init.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\server.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\session.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\socket.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\socket_win.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\thread_windows.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\token.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\trace.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\channel.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\chanswitch.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\conf.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\conn.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\data.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\date.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\abyss\src\response.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+  </ItemGroup>\r
-+</Project>
-\ No newline at end of file
-diff --git a/libs/win32/xmlrpc-c/gennmtab.2008.vcproj b/libs/win32/xmlrpc-c/gennmtab.2008.vcproj
-new file mode 100644
-index 0000000..a4a5b35
---- /dev/null
-+++ b/libs/win32/xmlrpc-c/gennmtab.2008.vcproj
-@@ -0,0 +1,404 @@
-+<?xml version="1.0" encoding="Windows-1252"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9.00"\r
-+      Name="gennmtab"\r
-+      ProjectGUID="{2390F054-A7F1-4CB9-ACB0-F46EC6E77B5B}"\r
-+      RootNamespace="gennmtab"\r
-+      TargetFrameworkVersion="131072"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TypeLibraryName=".\Debug\gennmtab/gennmtab.tlb"\r
-+                              HeaderFileName=""\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="..;."\r
-+                              PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"\r
-+                              MinimalRebuild="true"\r
-+                              RuntimeLibrary="1"\r
-+                              PrecompiledHeaderFile=".\Debug\gennmtab/gennmtab.pch"\r
-+                              AssemblerListingLocation=".\Debug\gennmtab/"\r
-+                              ObjectFile=".\Debug\gennmtab/"\r
-+                              ProgramDataBaseFileName=".\Debug\gennmtab/"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="2057"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              LinkLibraryDependencies="false"\r
-+                              LinkIncremental="2"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile=".\Debug\gennmtab/gennmtabD.pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Debug\gennmtab/gennmtab.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              Description="(D) Generating nametab.h ..."\r
-+                              CommandLine="$(OutDir)\$(ProjectName).exe &gt; $(XMLRPCDir)lib\expat\xmltok\nametab.h"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                              TypeLibraryName=".\Debug\gennmtab/gennmtab.tlb"\r
-+                              HeaderFileName=""\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="..;."\r
-+                              PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"\r
-+                              MinimalRebuild="true"\r
-+                              RuntimeLibrary="1"\r
-+                              PrecompiledHeaderFile=".\Debug\gennmtab/gennmtab.pch"\r
-+                              AssemblerListingLocation=".\Debug\gennmtab/"\r
-+                              ObjectFile=".\Debug\gennmtab/"\r
-+                              ProgramDataBaseFileName=".\Debug\gennmtab/"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="2057"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              LinkLibraryDependencies="false"\r
-+                              LinkIncremental="2"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile=".\Debug\gennmtab/gennmtabD.pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Debug\gennmtab/gennmtab.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              Description="(D) Generating nametab.h ..."\r
-+                              CommandLine="$(OutDir)\$(ProjectName).exe &gt; $(XMLRPCDir)lib\expat\xmltok\nametab.h"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TypeLibraryName=".\Release\gennmtab/gennmtab.tlb"\r
-+                              HeaderFileName=""\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories=""\r
-+                              PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="0"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile=".\Release\gennmtab/gennmtab.pch"\r
-+                              AssemblerListingLocation=".\Release\gennmtab/"\r
-+                              ObjectFile=".\Release\gennmtab/"\r
-+                              ProgramDataBaseFileName=".\Release\gennmtab/"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="2057"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              LinkLibraryDependencies="false"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile=".\Release\gennmtab/gennmtab.pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Release\gennmtab/gennmtab.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              Description="(R) Generating nametab.h ..."\r
-+                              CommandLine="$(OutDir)\$(ProjectName).exe &gt; $(XMLRPCDir)lib\expat\xmltok\nametab.h"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                              TypeLibraryName=".\Release\gennmtab/gennmtab.tlb"\r
-+                              HeaderFileName=""\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="..;."\r
-+                              PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="0"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile=".\Release\gennmtab/gennmtab.pch"\r
-+                              AssemblerListingLocation=".\Release\gennmtab/"\r
-+                              ObjectFile=".\Release\gennmtab/"\r
-+                              ProgramDataBaseFileName=".\Release\gennmtab/"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="2057"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              LinkLibraryDependencies="false"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile=".\Release\gennmtab/gennmtab.pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Release\gennmtab/gennmtab.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              Description="(R) Generating nametab.h ..."\r
-+                              CommandLine="$(OutDir)\$(ProjectName).exe &gt; $(XMLRPCDir)lib\expat\xmltok\nametab.h"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\expat\gennmtab\gennmtab.c"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl;fi;fd"\r
-+                      >\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/win32/xmlrpc-c/gennmtab.2010.vcxproj b/libs/win32/xmlrpc-c/gennmtab.2010.vcxproj
-new file mode 100644
-index 0000000..cb99ac4
---- /dev/null
-+++ b/libs/win32/xmlrpc-c/gennmtab.2010.vcxproj
-@@ -0,0 +1,304 @@
-+<?xml version="1.0" encoding="utf-8"?>\r
-+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-+  <ItemGroup Label="ProjectConfigurations">\r
-+    <ProjectConfiguration Include="Debug|Win32">\r
-+      <Configuration>Debug</Configuration>\r
-+      <Platform>Win32</Platform>\r
-+    </ProjectConfiguration>\r
-+    <ProjectConfiguration Include="Debug|x64">\r
-+      <Configuration>Debug</Configuration>\r
-+      <Platform>x64</Platform>\r
-+    </ProjectConfiguration>\r
-+    <ProjectConfiguration Include="Release|Win32">\r
-+      <Configuration>Release</Configuration>\r
-+      <Platform>Win32</Platform>\r
-+    </ProjectConfiguration>\r
-+    <ProjectConfiguration Include="Release|x64">\r
-+      <Configuration>Release</Configuration>\r
-+      <Platform>x64</Platform>\r
-+    </ProjectConfiguration>\r
-+  </ItemGroup>\r
-+  <PropertyGroup Label="Globals">\r
-+    <ProjectGuid>{BED7539C-0099-4A14-AD5D-30828F15A171}</ProjectGuid>\r
-+    <ProjectName>gennmtab</ProjectName>\r
-+  </PropertyGroup>\r
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-+    <ConfigurationType>Application</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+  </PropertyGroup>\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-+    <ConfigurationType>Application</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+  </PropertyGroup>\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-+    <ConfigurationType>Application</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+  </PropertyGroup>\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-+    <ConfigurationType>Application</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+  </PropertyGroup>\r
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-+  <ImportGroup Label="ExtensionSettings">\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <PropertyGroup Label="UserMacros" />\r
-+  <PropertyGroup>\r
-+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PlatformName)\$(Configuration)\</OutDir>\r
-+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(PlatformName)\$(Configuration)\</OutDir>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PlatformName)\gennmtab\$(Configuration)\</IntDir>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(PlatformName)\gennmtab\$(Configuration)\</IntDir>\r
-+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
-+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
-+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PlatformName)\$(Configuration)\</OutDir>\r
-+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(PlatformName)\$(Configuration)\</OutDir>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PlatformName)\gennmtab\$(Configuration)\</IntDir>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(PlatformName)\gennmtab\$(Configuration)\</IntDir>\r
-+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
-+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
-+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
-+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
-+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
-+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
-+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
-+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />\r
-+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
-+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>\r
-+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
-+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
-+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
-+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />\r
-+    <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</PreBuildEventUseInBuild>\r
-+    <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</PreBuildEventUseInBuild>\r
-+    <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</PreBuildEventUseInBuild>\r
-+    <PreBuildEventUseInBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</PreBuildEventUseInBuild>\r
-+    <CustomBuildAfterTargets Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Clean</CustomBuildAfterTargets>\r
-+    <CustomBuildAfterTargets Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Clean</CustomBuildAfterTargets>\r
-+    <CustomBuildAfterTargets Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Clean</CustomBuildAfterTargets>\r
-+    <CustomBuildAfterTargets Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Clean</CustomBuildAfterTargets>\r
-+  </PropertyGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-+    <Midl>\r
-+      <TypeLibraryName>.\Debug\gennmtab/gennmtab.tlb</TypeLibraryName>\r
-+      <HeaderFileName>\r
-+      </HeaderFileName>\r
-+    </Midl>\r
-+    <ClCompile>\r
-+      <Optimization>Disabled</Optimization>\r
-+      <AdditionalIncludeDirectories>..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <MinimalRebuild>true</MinimalRebuild>\r
-+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
-+      <AssemblerListingLocation>\r
-+      </AssemblerListingLocation>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0809</Culture>\r
-+    </ResourceCompile>\r
-+    <Link>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-+      <SubSystem>Console</SubSystem>\r
-+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-+      <DataExecutionPrevention>\r
-+      </DataExecutionPrevention>\r
-+      <TargetMachine>MachineX86</TargetMachine>\r
-+    </Link>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+      <OutputFile>.\Debug\gennmtab/gennmtab.bsc</OutputFile>\r
-+    </Bscmake>\r
-+    <PostBuildEvent>\r
-+      <Message>Generating nametab.h ...</Message>\r
-+      <Command>$(OutDir)$(TargetName) &gt; $(XMLRPCDir)lib\expat\xmltok\nametab.h</Command>\r
-+    </PostBuildEvent>\r
-+    <PreBuildEvent>\r
-+      <Command>\r
-+      </Command>\r
-+    </PreBuildEvent>\r
-+    <CustomBuildStep>\r
-+      <Command>del $(XMLRPCDir)lib\expat\xmltok\nametab.h</Command>\r
-+    </CustomBuildStep>\r
-+    <CustomBuildStep>\r
-+      <Outputs>NoOutput</Outputs>\r
-+    </CustomBuildStep>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-+    <Midl>\r
-+      <TypeLibraryName>.\Debug\gennmtab/gennmtab.tlb</TypeLibraryName>\r
-+      <HeaderFileName>\r
-+      </HeaderFileName>\r
-+    </Midl>\r
-+    <ClCompile>\r
-+      <Optimization>Disabled</Optimization>\r
-+      <AdditionalIncludeDirectories>..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
-+      <AssemblerListingLocation>\r
-+      </AssemblerListingLocation>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0809</Culture>\r
-+    </ResourceCompile>\r
-+    <Link>\r
-+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-+      <SubSystem>Console</SubSystem>\r
-+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-+      <DataExecutionPrevention>\r
-+      </DataExecutionPrevention>\r
-+    </Link>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+      <OutputFile>.\Debug\gennmtab/gennmtab.bsc</OutputFile>\r
-+    </Bscmake>\r
-+    <PostBuildEvent>\r
-+      <Message>Generating nametab.h ...</Message>\r
-+      <Command>$(OutDir)$(TargetName) &gt; $(XMLRPCDir)lib\expat\xmltok\nametab.h</Command>\r
-+    </PostBuildEvent>\r
-+    <PreBuildEvent>\r
-+      <Command>\r
-+      </Command>\r
-+    </PreBuildEvent>\r
-+    <CustomBuildStep>\r
-+      <Command>del $(XMLRPCDir)lib\expat\xmltok\nametab.h</Command>\r
-+    </CustomBuildStep>\r
-+    <CustomBuildStep>\r
-+      <Outputs>NoOutput</Outputs>\r
-+    </CustomBuildStep>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-+    <Midl>\r
-+      <TypeLibraryName>.\Release\gennmtab/gennmtab.tlb</TypeLibraryName>\r
-+      <HeaderFileName>\r
-+      </HeaderFileName>\r
-+    </Midl>\r
-+    <ClCompile>\r
-+      <Optimization>MaxSpeed</Optimization>\r
-+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-+      <AdditionalIncludeDirectories>..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <StringPooling>true</StringPooling>\r
-+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-+      <AssemblerListingLocation>\r
-+      </AssemblerListingLocation>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0809</Culture>\r
-+    </ResourceCompile>\r
-+    <Link>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+      <SubSystem>Console</SubSystem>\r
-+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-+      <DataExecutionPrevention>\r
-+      </DataExecutionPrevention>\r
-+      <TargetMachine>MachineX86</TargetMachine>\r
-+    </Link>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+      <OutputFile>.\Release\gennmtab/gennmtab.bsc</OutputFile>\r
-+    </Bscmake>\r
-+    <PostBuildEvent>\r
-+      <Message>Generating nametab.h ...</Message>\r
-+      <Command>$(OutDir)$(TargetName) &gt; $(XMLRPCDir)lib\expat\xmltok\nametab.h</Command>\r
-+    </PostBuildEvent>\r
-+    <PreBuildEvent>\r
-+      <Command>\r
-+      </Command>\r
-+    </PreBuildEvent>\r
-+    <CustomBuildStep>\r
-+      <Outputs>NoOutput</Outputs>\r
-+      <Command>del $(XMLRPCDir)lib\expat\xmltok\nametab.h</Command>\r
-+    </CustomBuildStep>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-+    <Midl>\r
-+      <TypeLibraryName>.\Release\gennmtab/gennmtab.tlb</TypeLibraryName>\r
-+      <HeaderFileName>\r
-+      </HeaderFileName>\r
-+    </Midl>\r
-+    <ClCompile>\r
-+      <Optimization>MaxSpeed</Optimization>\r
-+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-+      <AdditionalIncludeDirectories>..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <StringPooling>true</StringPooling>\r
-+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-+      <AssemblerListingLocation>\r
-+      </AssemblerListingLocation>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0809</Culture>\r
-+    </ResourceCompile>\r
-+    <Link>\r
-+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+      <SubSystem>Console</SubSystem>\r
-+      <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
-+      <DataExecutionPrevention>\r
-+      </DataExecutionPrevention>\r
-+    </Link>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+      <OutputFile>.\Release\gennmtab/gennmtab.bsc</OutputFile>\r
-+    </Bscmake>\r
-+    <PostBuildEvent>\r
-+      <Message>Generating nametab.h ...</Message>\r
-+      <Command>$(OutDir)$(TargetName) &gt; $(XMLRPCDir)lib\expat\xmltok\nametab.h</Command>\r
-+    </PostBuildEvent>\r
-+    <PreBuildEvent>\r
-+      <Command>\r
-+      </Command>\r
-+    </PreBuildEvent>\r
-+    <CustomBuildStep>\r
-+      <Command>del $(XMLRPCDir)lib\expat\xmltok\nametab.h</Command>\r
-+    </CustomBuildStep>\r
-+    <CustomBuildStep>\r
-+      <Outputs>NoOutput</Outputs>\r
-+    </CustomBuildStep>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemGroup>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\expat\gennmtab\gennmtab.c" />\r
-+  </ItemGroup>\r
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-+  <ImportGroup Label="ExtensionTargets">\r
-+  </ImportGroup>\r
-+</Project>
-\ No newline at end of file
-diff --git a/libs/win32/xmlrpc-c/xmlparse.2008.vcproj b/libs/win32/xmlrpc-c/xmlparse.2008.vcproj
-new file mode 100644
-index 0000000..009c66a
---- /dev/null
-+++ b/libs/win32/xmlrpc-c/xmlparse.2008.vcproj
-@@ -0,0 +1,394 @@
-+<?xml version="1.0" encoding="Windows-1252"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9.00"\r
-+      Name="xmlparse"\r
-+      ProjectGUID="{E5A9BCDA-B82D-4B08-B23E-9A782E367888}"\r
-+      RootNamespace="xmlparse"\r
-+      TargetFrameworkVersion="131072"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      ConfigurationType="4"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops;..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                              CommandLine="if not exist &quot;$(XMLRPCDir)version.h&quot; (&#x0D;&#x0A;pushd $(XMLRPCDir)Windows&#x0D;&#x0A;&quot;ConfigureWin32.bat&quot;&#x0D;&#x0A;popd&#x0D;&#x0A;)&#x0D;&#x0A;"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                              CommandLine=""\r
-+                              Outputs=""\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="&quot;$(XMLRPCDir)lib\expat\xmltok&quot;;&quot;$(XMLRPCDir)lib\expat\xmlwf&quot;"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;XML_DTD;_LIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="0"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile=".\Release\xmlparse/xmlparse.pch"\r
-+                              AssemblerListingLocation=".\Release\xmlparse/"\r
-+                              ObjectFile=".\Release\xmlparse/"\r
-+                              ProgramDataBaseFileName=".\Release\xmlparse/"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLibrarianTool"\r
-+                              OutputFile="..\lib\xmlparse.lib"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Release\xmlparse/xmlparse.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      ConfigurationType="4"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops;..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                              CommandLine="if not exist &quot;$(XMLRPCDir)version.h&quot; (&#x0D;&#x0A;pushd $(XMLRPCDir)Windows&#x0D;&#x0A;&quot;ConfigureWin32.bat&quot;&#x0D;&#x0A;popd&#x0D;&#x0A;)&#x0D;&#x0A;"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                              CommandLine=""\r
-+                              Outputs=""\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="&quot;$(XMLRPCDir)lib\expat\xmltok&quot;;&quot;$(XMLRPCDir)lib\expat\xmlwf&quot;"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;XML_DTD;_LIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="0"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile=".\Release\xmlparse/xmlparse.pch"\r
-+                              ObjectFile="$(IntDir)\xmlparse\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\xmlparse\vc90.pdb"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLibrarianTool"\r
-+                              OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmlparse.lib"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Release\xmlparse/xmlparse.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      ConfigurationType="4"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops;..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                              CommandLine="if not exist &quot;$(XMLRPCDir)version.h&quot; (&#x0D;&#x0A;pushd $(XMLRPCDir)Windows&#x0D;&#x0A;&quot;ConfigureWin32.bat&quot;&#x0D;&#x0A;popd&#x0D;&#x0A;)&#x0D;&#x0A;"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                              CommandLine=""\r
-+                              Outputs=""\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="&quot;$(XMLRPCDir)lib\expat\xmltok&quot;;&quot;$(XMLRPCDir)lib\expat\xmlwf&quot;"\r
-+                              PreprocessorDefinitions="WIN32;_WINDOWS;XML_DTD;_LIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile=".\Debug\xmlparse/xmlparse.pch"\r
-+                              AssemblerListingLocation=".\Debug\xmlparse/"\r
-+                              ObjectFile=".\Debug\xmlparse/"\r
-+                              ProgramDataBaseFileName=".\Debug\xmlparse/"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLibrarianTool"\r
-+                              OutputFile="..\lib\xmlparseD.lib"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Debug\xmlparse/xmlparse.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      ConfigurationType="4"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops;..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                              CommandLine="if not exist &quot;$(XMLRPCDir)version.h&quot; (&#x0D;&#x0A;pushd $(XMLRPCDir)Windows&#x0D;&#x0A;&quot;ConfigureWin32.bat&quot;&#x0D;&#x0A;popd&#x0D;&#x0A;)&#x0D;&#x0A;"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                              CommandLine=""\r
-+                              Outputs=""\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="&quot;$(XMLRPCDir)lib\expat\xmltok&quot;;&quot;$(XMLRPCDir)lib\expat\xmlwf&quot;"\r
-+                              PreprocessorDefinitions="WIN32;_WINDOWS;XML_DTD;_LIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile=".\Debug\xmlparse/xmlparse.pch"\r
-+                              ObjectFile="$(IntDir)\xmlparse\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\xmlparse\vc90.pdb"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLibrarianTool"\r
-+                              OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmlparseD.lib"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Debug\xmlparse/xmlparse.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\expat\xmlparse\xmlparse.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl;fi;fd"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\expat\xmlparse\xmlparse.h"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/win32/xmlrpc-c/xmlparse.2010.vcxproj b/libs/win32/xmlrpc-c/xmlparse.2010.vcxproj
-new file mode 100644
-index 0000000..4d1b9ce
---- /dev/null
-+++ b/libs/win32/xmlrpc-c/xmlparse.2010.vcxproj
-@@ -0,0 +1,254 @@
-+<?xml version="1.0" encoding="utf-8"?>\r
-+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-+  <ItemGroup Label="ProjectConfigurations">\r
-+    <ProjectConfiguration Include="Debug|Win32">\r
-+      <Configuration>Debug</Configuration>\r
-+      <Platform>Win32</Platform>\r
-+    </ProjectConfiguration>\r
-+    <ProjectConfiguration Include="Debug|x64">\r
-+      <Configuration>Debug</Configuration>\r
-+      <Platform>x64</Platform>\r
-+    </ProjectConfiguration>\r
-+    <ProjectConfiguration Include="Release|Win32">\r
-+      <Configuration>Release</Configuration>\r
-+      <Platform>Win32</Platform>\r
-+    </ProjectConfiguration>\r
-+    <ProjectConfiguration Include="Release|x64">\r
-+      <Configuration>Release</Configuration>\r
-+      <Platform>x64</Platform>\r
-+    </ProjectConfiguration>\r
-+  </ItemGroup>\r
-+  <PropertyGroup Label="Globals">\r
-+    <ProjectName>xmlparse</ProjectName>\r
-+    <ProjectGuid>{0D108721-EAE8-4BAF-8102-D8960EC93647}</ProjectGuid>\r
-+    <RootNamespace>xmlparse</RootNamespace>\r
-+  </PropertyGroup>\r
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+    <CharacterSet>MultiByte</CharacterSet>\r
-+  </PropertyGroup>\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+    <CharacterSet>MultiByte</CharacterSet>\r
-+  </PropertyGroup>\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+    <CharacterSet>MultiByte</CharacterSet>\r
-+  </PropertyGroup>\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+    <CharacterSet>MultiByte</CharacterSet>\r
-+  </PropertyGroup>\r
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-+  <ImportGroup Label="ExtensionSettings">\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
-+    <Import Project="..\..\..\w32\extlib.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
-+    <Import Project="..\..\..\w32\extlib.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
-+    <Import Project="..\..\..\w32\extlib.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
-+    <Import Project="..\..\..\w32\extlib.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <PropertyGroup Label="UserMacros" />\r
-+  <PropertyGroup>\r
-+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PlatformName)\xmlparse\$(Configuration)\</IntDir>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PlatformName)\xmlparse\$(Configuration)\</IntDir>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(PlatformName)\xmlparse\$(Configuration)\</IntDir>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(PlatformName)\xmlparse\$(Configuration)\</IntDir>\r
-+    <ExtensionsToDeleteOnClean Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)..\version.h;$(ExtensionsToDeleteOnClean)</ExtensionsToDeleteOnClean>\r
-+    <CustomBuildAfterTargets Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Clean</CustomBuildAfterTargets>\r
-+    <CustomBuildAfterTargets Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Clean</CustomBuildAfterTargets>\r
-+    <CustomBuildAfterTargets Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Clean</CustomBuildAfterTargets>\r
-+    <CustomBuildAfterTargets Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Clean</CustomBuildAfterTargets>\r
-+  </PropertyGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-+    <ClCompile>\r
-+      <Optimization>MaxSpeed</Optimization>\r
-+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-+      <AdditionalIncludeDirectories>$(XMLRPCDir)lib\expat\xmltok;$(XMLRPCDir)lib\expat\xmlwf;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <StringPooling>true</StringPooling>\r
-+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0409</Culture>\r
-+    </ResourceCompile>\r
-+    <Lib>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Lib>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Bscmake>\r
-+    <PreBuildEvent>\r
-+      <Command>if not exist "$(XMLRPCDir)version.h" (\r
-+pushd $(XMLRPCDir)Windows\r
-+"ConfigureWin32.bat"\r
-+popd\r
-+)\r
-+      </Command>\r
-+    </PreBuildEvent>\r
-+    <CustomBuildStep>\r
-+      <Command>pushd $(XMLRPCDir)Windows\r
-+"$(XMLRPCDir)Windows\CleanWin32.bat"\r
-+popd\r
-+</Command>\r
-+      <Outputs>NoOutput</Outputs>\r
-+    </CustomBuildStep>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-+    <Midl>\r
-+      <TargetEnvironment>X64</TargetEnvironment>\r
-+    </Midl>\r
-+    <ClCompile>\r
-+      <Optimization>MaxSpeed</Optimization>\r
-+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-+      <AdditionalIncludeDirectories>$(XMLRPCDir)lib\expat\xmltok;$(XMLRPCDir)lib\expat\xmlwf;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <StringPooling>true</StringPooling>\r
-+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0409</Culture>\r
-+    </ResourceCompile>\r
-+    <Lib>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Lib>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Bscmake>\r
-+    <PreBuildEvent>\r
-+      <Command>if not exist "$(XMLRPCDir)version.h" (\r
-+pushd $(XMLRPCDir)Windows\r
-+"ConfigureWin32.bat"\r
-+popd\r
-+)     \r
-+      </Command>\r
-+    </PreBuildEvent>\r
-+    <CustomBuildStep>\r
-+      <Command>pushd $(XMLRPCDir)Windows\r
-+"$(XMLRPCDir)Windows\CleanWin32.bat"\r
-+popd\r
-+</Command>\r
-+      <Outputs>NoOutput</Outputs>\r
-+    </CustomBuildStep>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-+    <ClCompile>\r
-+      <Optimization>Disabled</Optimization>\r
-+      <AdditionalIncludeDirectories>$(XMLRPCDir)lib\expat\xmltok;$(XMLRPCDir)lib\expat\xmlwf;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <MinimalRebuild>true</MinimalRebuild>\r
-+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0409</Culture>\r
-+    </ResourceCompile>\r
-+    <Lib>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Lib>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Bscmake>\r
-+    <PreBuildEvent>\r
-+      <Command>if not exist "$(XMLRPCDir)version.h" (\r
-+pushd $(XMLRPCDir)Windows\r
-+"ConfigureWin32.bat"\r
-+popd\r
-+)     \r
-+      </Command>\r
-+    </PreBuildEvent>\r
-+    <CustomBuildStep>\r
-+      <Command>pushd $(XMLRPCDir)Windows\r
-+"$(XMLRPCDir)Windows\CleanWin32.bat"\r
-+popd\r
-+</Command>\r
-+      <Outputs>NoOutput</Outputs>\r
-+    </CustomBuildStep>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-+    <Midl>\r
-+      <TargetEnvironment>X64</TargetEnvironment>\r
-+    </Midl>\r
-+    <ClCompile>\r
-+      <Optimization>Disabled</Optimization>\r
-+      <AdditionalIncludeDirectories>$(XMLRPCDir)lib\expat\xmltok;$(XMLRPCDir)lib\expat\xmlwf;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <MinimalRebuild>true</MinimalRebuild>\r
-+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0409</Culture>\r
-+    </ResourceCompile>\r
-+    <Lib>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Lib>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Bscmake>\r
-+    <PreBuildEvent>\r
-+      <Command>if not exist "$(XMLRPCDir)version.h" (\r
-+pushd $(XMLRPCDir)Windows\r
-+"ConfigureWin32.bat"\r
-+popd\r
-+)     \r
-+      </Command>\r
-+    </PreBuildEvent>\r
-+    <CustomBuildStep>\r
-+      <Command>pushd $(XMLRPCDir)Windows\r
-+"$(XMLRPCDir)Windows\CleanWin32.bat"\r
-+popd\r
-+</Command>\r
-+      <Outputs>NoOutput</Outputs>\r
-+    </CustomBuildStep>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemGroup>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\expat\xmlparse\xmlparse.c" />\r
-+  </ItemGroup>\r
-+  <ItemGroup>\r
-+    <ClInclude Include="..\..\xmlrpc-c\lib\expat\xmlparse\xmlparse.h" />\r
-+  </ItemGroup>\r
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-+  <ImportGroup Label="ExtensionTargets">\r
-+  </ImportGroup>\r
-+</Project>
-\ No newline at end of file
-diff --git a/libs/win32/xmlrpc-c/xmlrpc.2008.vcproj b/libs/win32/xmlrpc-c/xmlrpc.2008.vcproj
-new file mode 100644
-index 0000000..2de82d7
---- /dev/null
-+++ b/libs/win32/xmlrpc-c/xmlrpc.2008.vcproj
-@@ -0,0 +1,490 @@
-+<?xml version="1.0" encoding="Windows-1252"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9.00"\r
-+      Name="xmlrpc"\r
-+      ProjectGUID="{510BDAA8-C04D-47DB-8482-E6AF380D3E07}"\r
-+      RootNamespace="xmlrpc"\r
-+      TargetFrameworkVersion="131072"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory=".\Debug\xmlrpc"\r
-+                      IntermediateDirectory=".\Debug\xmlrpc"\r
-+                      ConfigurationType="4"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops;..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="&quot;$(XMLRPCDir)lib\expat\xmlparse&quot;"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile=".\Debug\xmlrpc/xmlrpc.pch"\r
-+                              AssemblerListingLocation=".\Debug\xmlrpc/"\r
-+                              ObjectFile=".\Debug\xmlrpc/"\r
-+                              ProgramDataBaseFileName=".\Debug\xmlrpc/"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLibrarianTool"\r
-+                              OutputFile="..\lib\xmlrpcD.lib"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Debug\xmlrpc/xmlrpc.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      ConfigurationType="4"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops;..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="&quot;$(XMLRPCDir)lib\expat\xmlparse&quot;"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile=".\Debug\xmlrpc/xmlrpc.pch"\r
-+                              ObjectFile="$(IntDir)\xmlrpc\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\xmlrpc\vc90.pdb"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLibrarianTool"\r
-+                              OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmlrpcD.lib"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Debug\xmlrpc/xmlrpc.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory=".\Release\xmlrpc"\r
-+                      IntermediateDirectory=".\Release\xmlrpc"\r
-+                      ConfigurationType="4"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops;..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="&quot;$(XMLRPCDir)lib\expat\xmlparse&quot;"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile=".\Release\xmlrpc/xmlrpc.pch"\r
-+                              AssemblerListingLocation=".\Release\xmlrpc/"\r
-+                              ObjectFile=".\Release\xmlrpc/"\r
-+                              ProgramDataBaseFileName=".\Release\xmlrpc/"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLibrarianTool"\r
-+                              OutputFile="..\lib\xmlrpc.lib"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Release\xmlrpc/xmlrpc.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      ConfigurationType="4"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops;..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="&quot;$(XMLRPCDir)lib\expat\xmlparse&quot;"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile=".\Release\xmlrpc/xmlrpc.pch"\r
-+                              ObjectFile="$(IntDir)\xmlrpc\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\xmlrpc\vc90.pdb"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLibrarianTool"\r
-+                              OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmlrpc.lib"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Release\xmlrpc/xmlrpc.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\libutil\asprintf.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\libutil\base64.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\double.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\libutil\error.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\libutil\make_printable.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\libutil\memblock.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\method.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\parse_datetime.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\parse_value.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\util\pthreadx_win32.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\registry.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\resource.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\libutil\select.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\libutil\sleep.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\libutil\string_number.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\system_method.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\libutil\time.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\trace.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\libutil\utf8.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\version.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\xmlrpc_array.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\xmlrpc_authcookie.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\xmlrpc_base64.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\xmlrpc_build.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\xmlrpc_client.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\xmlrpc_client_global.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\xmlrpc_data.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\xmlrpc_datetime.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\xmlrpc_decompose.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\xmlrpc_expat.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\xmlrpc_parse.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\xmlrpc_serialize.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\xmlrpc_server_abyss.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\xmlrpc_server_cgi.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\xmlrpc_server_info.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\xmlrpc_string.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\src\xmlrpc_struct.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\wininet_transport\xmlrpc_wininet_transport.c"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/win32/xmlrpc-c/xmlrpc.2010.vcxproj b/libs/win32/xmlrpc-c/xmlrpc.2010.vcxproj
-new file mode 100644
-index 0000000..9902363
---- /dev/null
-+++ b/libs/win32/xmlrpc-c/xmlrpc.2010.vcxproj
-@@ -0,0 +1,240 @@
-+<?xml version="1.0" encoding="utf-8"?>\r
-+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-+  <ItemGroup Label="ProjectConfigurations">\r
-+    <ProjectConfiguration Include="Debug|Win32">\r
-+      <Configuration>Debug</Configuration>\r
-+      <Platform>Win32</Platform>\r
-+    </ProjectConfiguration>\r
-+    <ProjectConfiguration Include="Debug|x64">\r
-+      <Configuration>Debug</Configuration>\r
-+      <Platform>x64</Platform>\r
-+    </ProjectConfiguration>\r
-+    <ProjectConfiguration Include="Release|Win32">\r
-+      <Configuration>Release</Configuration>\r
-+      <Platform>Win32</Platform>\r
-+    </ProjectConfiguration>\r
-+    <ProjectConfiguration Include="Release|x64">\r
-+      <Configuration>Release</Configuration>\r
-+      <Platform>x64</Platform>\r
-+    </ProjectConfiguration>\r
-+  </ItemGroup>\r
-+  <PropertyGroup Label="Globals">\r
-+    <ProjectName>xmlrpc</ProjectName>\r
-+    <ProjectGuid>{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}</ProjectGuid>\r
-+    <RootNamespace>xmlrpc</RootNamespace>\r
-+  </PropertyGroup>\r
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+    <CharacterSet>MultiByte</CharacterSet>\r
-+  </PropertyGroup>\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+    <CharacterSet>MultiByte</CharacterSet>\r
-+  </PropertyGroup>\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+    <CharacterSet>MultiByte</CharacterSet>\r
-+  </PropertyGroup>\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+    <CharacterSet>MultiByte</CharacterSet>\r
-+  </PropertyGroup>\r
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-+  <ImportGroup Label="ExtensionSettings">\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="..\..\..\w32\extlib.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="..\..\..\w32\extlib.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="..\..\..\w32\extlib.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="..\..\..\w32\extlib.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <PropertyGroup Label="UserMacros" />\r
-+  <PropertyGroup>\r
-+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PlatformName)\xmlrpc\$(Configuration)\</IntDir>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PlatformName)\xmlrpc\$(Configuration)\</IntDir>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(PlatformName)\xmlrpc\$(Configuration)\</IntDir>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(PlatformName)\xmlrpc\$(Configuration)\</IntDir>\r
-+    <CustomBuildBeforeTargets Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-+    </CustomBuildBeforeTargets>\r
-+  </PropertyGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-+    <ClCompile>\r
-+      <Optimization>Disabled</Optimization>\r
-+      <AdditionalIncludeDirectories>$(XMLRPCDir)lib\expat\xmlparse;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <MinimalRebuild>true</MinimalRebuild>\r
-+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0409</Culture>\r
-+    </ResourceCompile>\r
-+    <Lib>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Lib>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Bscmake>\r
-+    <CustomBuildStep>\r
-+      <Outputs>\r
-+      </Outputs>\r
-+    </CustomBuildStep>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-+    <Midl>\r
-+      <TargetEnvironment>X64</TargetEnvironment>\r
-+    </Midl>\r
-+    <ClCompile>\r
-+      <Optimization>Disabled</Optimization>\r
-+      <AdditionalIncludeDirectories>$(XMLRPCDir)lib\expat\xmlparse;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <MinimalRebuild>true</MinimalRebuild>\r
-+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0409</Culture>\r
-+    </ResourceCompile>\r
-+    <Lib>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Lib>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+      <OutputFile>.\Debug\xmlrpc/xmlrpc.bsc</OutputFile>\r
-+    </Bscmake>\r
-+    <CustomBuildStep>\r
-+      <Outputs>\r
-+      </Outputs>\r
-+    </CustomBuildStep>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-+    <ClCompile>\r
-+      <Optimization>MaxSpeed</Optimization>\r
-+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-+      <AdditionalIncludeDirectories>$(XMLRPCDir)lib\expat\xmlparse;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <StringPooling>true</StringPooling>\r
-+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0409</Culture>\r
-+    </ResourceCompile>\r
-+    <Lib>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Lib>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Bscmake>\r
-+    <CustomBuildStep>\r
-+      <Outputs>\r
-+      </Outputs>\r
-+    </CustomBuildStep>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-+    <Midl>\r
-+      <TargetEnvironment>X64</TargetEnvironment>\r
-+    </Midl>\r
-+    <ClCompile>\r
-+      <Optimization>MaxSpeed</Optimization>\r
-+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-+      <AdditionalIncludeDirectories>$(XMLRPCDir)lib\expat\xmlparse;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <StringPooling>true</StringPooling>\r
-+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0409</Culture>\r
-+    </ResourceCompile>\r
-+    <Lib>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Lib>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Bscmake>\r
-+    <CustomBuildStep>\r
-+      <Command>\r
-+      </Command>\r
-+      <Outputs>\r
-+      </Outputs>\r
-+      <Message>\r
-+      </Message>\r
-+    </CustomBuildStep>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemGroup>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\asprintf.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\base64.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\error.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\make_printable.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\memblock.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\select.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\sleep.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\string_number.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\time.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\utf8.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\util\pthreadx_win32.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\wininet_transport\xmlrpc_wininet_transport.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\double.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\method.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\parse_datetime.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\parse_value.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\registry.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\resource.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\system_method.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\trace.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\version.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_array.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_authcookie.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_base64.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_build.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_client.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_client_global.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_data.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_datetime.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_decompose.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_expat.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_parse.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_serialize.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_server_abyss.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_server_cgi.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_server_info.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_string.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_struct.c" />\r
-+  </ItemGroup>\r
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-+  <ImportGroup Label="ExtensionTargets">\r
-+  </ImportGroup>\r
-+</Project>
-\ No newline at end of file
-diff --git a/libs/win32/xmlrpc-c/xmlrpc.2010.vcxproj.filters b/libs/win32/xmlrpc-c/xmlrpc.2010.vcxproj.filters
-new file mode 100644
-index 0000000..aa044ff
---- /dev/null
-+++ b/libs/win32/xmlrpc-c/xmlrpc.2010.vcxproj.filters
-@@ -0,0 +1,125 @@
-+<?xml version="1.0" encoding="utf-8"?>\r
-+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-+  <ItemGroup>\r
-+    <Filter Include="Source Files">\r
-+      <UniqueIdentifier>{7ca2b8b9-bf59-4407-aedf-588e548fe34a}</UniqueIdentifier>\r
-+      <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc</Extensions>\r
-+    </Filter>\r
-+  </ItemGroup>\r
-+  <ItemGroup>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\wininet_transport\xmlrpc_wininet_transport.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\string_number.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\time.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\utf8.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\asprintf.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\base64.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\error.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\make_printable.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\memblock.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\select.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\libutil\sleep.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\double.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\method.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\registry.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\trace.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\parse_datetime.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\parse_value.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\util\pthreadx_win32.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\resource.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\system_method.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\version.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_datetime.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_decompose.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_expat.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_parse.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_serialize.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_server_abyss.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_server_cgi.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_server_info.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_string.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_struct.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_array.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_authcookie.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_base64.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_build.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_client.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_client_global.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\src\xmlrpc_data.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+  </ItemGroup>\r
-+</Project>
-\ No newline at end of file
-diff --git a/libs/win32/xmlrpc-c/xmltok.2008.vcproj b/libs/win32/xmlrpc-c/xmltok.2008.vcproj
-new file mode 100644
-index 0000000..71be879
---- /dev/null
-+++ b/libs/win32/xmlrpc-c/xmltok.2008.vcproj
-@@ -0,0 +1,378 @@
-+<?xml version="1.0" encoding="Windows-1252"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9.00"\r
-+      Name="xmltok"\r
-+      ProjectGUID="{3CF7C0E0-07C2-473A-A1E4-2274AEEC1268}"\r
-+      RootNamespace="xmltok"\r
-+      TargetFrameworkVersion="131072"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory=".\Debug\xmltok"\r
-+                      IntermediateDirectory=".\Debug\xmltok"\r
-+                      ConfigurationType="4"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops;..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories=""\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile=".\Debug\xmltok/xmltok.pch"\r
-+                              AssemblerListingLocation=".\Debug\xmltok/"\r
-+                              ObjectFile=".\Debug\xmltok/"\r
-+                              ProgramDataBaseFileName=".\Debug\xmltok/"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLibrarianTool"\r
-+                              OutputFile="..\lib\xmltokD.lib"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Debug\xmltok/xmltok.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      ConfigurationType="4"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops;..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories=""\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile=".\Debug\xmltok/xmltok.pch"\r
-+                              ObjectFile="$(IntDir)\xmltok\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\xmltok\vc90.pdb"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLibrarianTool"\r
-+                              OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmltokD.lib"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Debug\xmltok/xmltok.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory=".\Release\xmltok"\r
-+                      IntermediateDirectory=".\Release\xmltok"\r
-+                      ConfigurationType="4"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops;..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories=""\r
-+                              PreprocessorDefinitions="NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="0"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile=".\Release\xmltok/xmltok.pch"\r
-+                              AssemblerListingLocation=".\Release\xmltok/"\r
-+                              ObjectFile=".\Release\xmltok/"\r
-+                              ProgramDataBaseFileName=".\Release\xmltok/"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLibrarianTool"\r
-+                              OutputFile="..\lib\xmltok.lib"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Release\xmltok/xmltok.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
-+                      ConfigurationType="4"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops;..\..\..\w32\xmlrpc.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories=""\r
-+                              PreprocessorDefinitions="NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="0"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile=".\Release\xmltok/xmltok.pch"\r
-+                              ObjectFile="$(IntDir)\xmltok\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\xmltok\vc90.pdb"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLibrarianTool"\r
-+                              OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmltok.lib"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile=".\Release\xmltok/xmltok.bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\expat\xmltok\xmlrole.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\xmlrpc-c\lib\expat\xmltok\xmltok.c"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl;fi;fd"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\lib\expat\xmltok\asciitab.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\lib\expat\xmltok\iasciitab.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\lib\expat\xmltok\latin1tab.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\lib\expat\xmltok\nametab.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\lib\expat\xmltok\utf8tab.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\lib\expat\xmltok\xmldef.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\lib\expat\xmltok\xmlrole.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\lib\expat\xmltok\xmltok.h"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/win32/xmlrpc-c/xmltok.2010.vcxproj b/libs/win32/xmlrpc-c/xmltok.2010.vcxproj
-new file mode 100644
-index 0000000..119ca26
---- /dev/null
-+++ b/libs/win32/xmlrpc-c/xmltok.2010.vcxproj
-@@ -0,0 +1,199 @@
-+<?xml version="1.0" encoding="utf-8"?>\r
-+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-+  <ItemGroup Label="ProjectConfigurations">\r
-+    <ProjectConfiguration Include="Debug|Win32">\r
-+      <Configuration>Debug</Configuration>\r
-+      <Platform>Win32</Platform>\r
-+    </ProjectConfiguration>\r
-+    <ProjectConfiguration Include="Debug|x64">\r
-+      <Configuration>Debug</Configuration>\r
-+      <Platform>x64</Platform>\r
-+    </ProjectConfiguration>\r
-+    <ProjectConfiguration Include="Release|Win32">\r
-+      <Configuration>Release</Configuration>\r
-+      <Platform>Win32</Platform>\r
-+    </ProjectConfiguration>\r
-+    <ProjectConfiguration Include="Release|x64">\r
-+      <Configuration>Release</Configuration>\r
-+      <Platform>x64</Platform>\r
-+    </ProjectConfiguration>\r
-+  </ItemGroup>\r
-+  <PropertyGroup Label="Globals">\r
-+    <ProjectName>xmltok</ProjectName>\r
-+    <ProjectGuid>{B535402E-38D2-4D54-8360-423ACBD17192}</ProjectGuid>\r
-+    <RootNamespace>xmltok</RootNamespace>\r
-+  </PropertyGroup>\r
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
-+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+    <CharacterSet>MultiByte</CharacterSet>\r
-+  </PropertyGroup>\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
-+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+    <CharacterSet>MultiByte</CharacterSet>\r
-+  </PropertyGroup>\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
-+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+    <CharacterSet>MultiByte</CharacterSet>\r
-+  </PropertyGroup>\r
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
-+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-+    <UseOfMfc>false</UseOfMfc>\r
-+    <CharacterSet>MultiByte</CharacterSet>\r
-+  </PropertyGroup>\r
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-+  <ImportGroup Label="ExtensionSettings">\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
-+    <Import Project="..\..\..\w32\extlib.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
-+    <Import Project="..\..\..\w32\extlib.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
-+    <Import Project="..\..\..\w32\extlib.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
-+    <Import Project="..\..\..\w32\extlib.props" />\r
-+    <Import Project="..\..\..\w32\xmlrpc.props" />\r
-+  </ImportGroup>\r
-+  <PropertyGroup Label="UserMacros" />\r
-+  <PropertyGroup>\r
-+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PlatformName)\xmltok\$(Configuration)\</IntDir>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PlatformName)\xmltok\$(Configuration)\</IntDir>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(PlatformName)\xmltok\$(Configuration)\</IntDir>\r
-+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(PlatformName)\xmltok\$(Configuration)\</IntDir>\r
-+  </PropertyGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-+    <ClCompile>\r
-+      <Optimization>Disabled</Optimization>\r
-+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <MinimalRebuild>true</MinimalRebuild>\r
-+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0409</Culture>\r
-+    </ResourceCompile>\r
-+    <Lib>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Lib>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+      <OutputFile>.\Debug\xmltok/xmltok.bsc</OutputFile>\r
-+    </Bscmake>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
-+    <Midl>\r
-+      <TargetEnvironment>X64</TargetEnvironment>\r
-+    </Midl>\r
-+    <ClCompile>\r
-+      <Optimization>Disabled</Optimization>\r
-+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <MinimalRebuild>true</MinimalRebuild>\r
-+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0409</Culture>\r
-+    </ResourceCompile>\r
-+    <Lib>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Lib>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+      <OutputFile>.\Debug\xmltok/xmltok.bsc</OutputFile>\r
-+    </Bscmake>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-+    <ClCompile>\r
-+      <Optimization>MaxSpeed</Optimization>\r
-+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <StringPooling>true</StringPooling>\r
-+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0409</Culture>\r
-+    </ResourceCompile>\r
-+    <Lib>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Lib>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+      <OutputFile>.\Release\xmltok/xmltok.bsc</OutputFile>\r
-+    </Bscmake>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
-+    <Midl>\r
-+      <TargetEnvironment>X64</TargetEnvironment>\r
-+    </Midl>\r
-+    <ClCompile>\r
-+      <Optimization>MaxSpeed</Optimization>\r
-+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <PreprocessorDefinitions>NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <StringPooling>true</StringPooling>\r
-+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
-+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-+      <WarningLevel>Level3</WarningLevel>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </ClCompile>\r
-+    <ResourceCompile>\r
-+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-+      <Culture>0x0409</Culture>\r
-+    </ResourceCompile>\r
-+    <Lib>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+    </Lib>\r
-+    <Bscmake>\r
-+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
-+      <OutputFile>.\Release\xmltok/xmltok.bsc</OutputFile>\r
-+    </Bscmake>\r
-+  </ItemDefinitionGroup>\r
-+  <ItemGroup>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\expat\xmltok\xmlrole.c" />\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\expat\xmltok\xmltok.c" />\r
-+  </ItemGroup>\r
-+  <ItemGroup>\r
-+    <ClInclude Include="..\..\xmlrpc-c\lib\expat\xmltok\asciitab.h" />\r
-+    <ClInclude Include="..\..\xmlrpc-c\lib\expat\xmltok\iasciitab.h" />\r
-+    <ClInclude Include="..\..\xmlrpc-c\lib\expat\xmltok\latin1tab.h" />\r
-+    <ClInclude Include="..\..\xmlrpc-c\lib\expat\xmltok\utf8tab.h" />\r
-+    <ClInclude Include="..\..\xmlrpc-c\lib\expat\xmltok\xmldef.h" />\r
-+    <ClInclude Include="..\..\xmlrpc-c\lib\expat\xmltok\xmlrole.h" />\r
-+    <ClInclude Include="..\..\xmlrpc-c\lib\expat\xmltok\xmltok.h" />\r
-+    <ClInclude Include="..\lib\expat\xmltok\nametab.h" />\r
-+  </ItemGroup>\r
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-+  <ImportGroup Label="ExtensionTargets">\r
-+  </ImportGroup>\r
-+</Project>
-\ No newline at end of file
-diff --git a/libs/win32/xmlrpc-c/xmltok.2010.vcxproj.filters b/libs/win32/xmlrpc-c/xmltok.2010.vcxproj.filters
-new file mode 100644
-index 0000000..98d22a2
---- /dev/null
-+++ b/libs/win32/xmlrpc-c/xmltok.2010.vcxproj.filters
-@@ -0,0 +1,45 @@
-+<?xml version="1.0" encoding="utf-8"?>\r
-+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-+  <ItemGroup>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\expat\xmltok\xmltok.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+    <ClCompile Include="..\..\xmlrpc-c\lib\expat\xmltok\xmlrole.c">\r
-+      <Filter>Source Files</Filter>\r
-+    </ClCompile>\r
-+  </ItemGroup>\r
-+  <ItemGroup>\r
-+    <ClInclude Include="..\..\xmlrpc-c\lib\expat\xmltok\xmltok.h">\r
-+      <Filter>Header Files</Filter>\r
-+    </ClInclude>\r
-+    <ClInclude Include="..\..\xmlrpc-c\lib\expat\xmltok\xmlrole.h">\r
-+      <Filter>Header Files</Filter>\r
-+    </ClInclude>\r
-+    <ClInclude Include="..\..\xmlrpc-c\lib\expat\xmltok\xmldef.h">\r
-+      <Filter>Header Files</Filter>\r
-+    </ClInclude>\r
-+    <ClInclude Include="..\..\xmlrpc-c\lib\expat\xmltok\utf8tab.h">\r
-+      <Filter>Header Files</Filter>\r
-+    </ClInclude>\r
-+    <ClInclude Include="..\lib\expat\xmltok\nametab.h">\r
-+      <Filter>Header Files</Filter>\r
-+    </ClInclude>\r
-+    <ClInclude Include="..\..\xmlrpc-c\lib\expat\xmltok\latin1tab.h">\r
-+      <Filter>Header Files</Filter>\r
-+    </ClInclude>\r
-+    <ClInclude Include="..\..\xmlrpc-c\lib\expat\xmltok\iasciitab.h">\r
-+      <Filter>Header Files</Filter>\r
-+    </ClInclude>\r
-+    <ClInclude Include="..\..\xmlrpc-c\lib\expat\xmltok\asciitab.h">\r
-+      <Filter>Header Files</Filter>\r
-+    </ClInclude>\r
-+  </ItemGroup>\r
-+  <ItemGroup>\r
-+    <Filter Include="Source Files">\r
-+      <UniqueIdentifier>{e8ec3017-8580-49f6-b5b5-4ba1c66c9b58}</UniqueIdentifier>\r
-+    </Filter>\r
-+    <Filter Include="Header Files">\r
-+      <UniqueIdentifier>{cf3bec2c-9e12-4a6c-8d1c-495721118adf}</UniqueIdentifier>\r
-+    </Filter>\r
-+  </ItemGroup>\r
-+</Project>
-\ No newline at end of file
-diff --git a/libs/xmlrpc-c/.cvsignore b/libs/xmlrpc-c/.cvsignore
-deleted file mode 100644
-index f007c35..0000000
---- a/libs/xmlrpc-c/.cvsignore
-+++ /dev/null
-@@ -1,18 +0,0 @@
--Makefile.config
--autogen.sh
--autom4te.cache
--configure
--config.log
--stamp-h
--stamp-h1
--config.cache
--libtool
--config.status
--xmlrpc_config.h
--xmlrpc_amconfig.h
--xmlrpc-c-config
--xmlrpc-c-config.test
--xmlrpc-c-*.tar.gz
--xmlrpc-c.spec
--transport_config.h
--
-diff --git a/libs/xmlrpc-c/.update b/libs/xmlrpc-c/.update
-deleted file mode 100644
-index 60fffd1..0000000
---- a/libs/xmlrpc-c/.update
-+++ /dev/null
-@@ -1 +0,0 @@
--date
-diff --git a/libs/xmlrpc-c/GNUmakefile b/libs/xmlrpc-c/GNUmakefile
-index be7e423..976e92c 100644
---- a/libs/xmlrpc-c/GNUmakefile
-+++ b/libs/xmlrpc-c/GNUmakefile
-@@ -1,4 +1,4 @@
--include Makefile.srcdir
-+include srcdir.mk
- BLDDIR = $(CURDIR)
- SUBDIR =
-@@ -6,7 +6,6 @@ SUBDIR =
- export SRCDIR
- export BLDDIR
--include $(BLDDIR)/Makefile.version
- include $(BLDDIR)/config.mk
- SUBDIRS = include lib src tools examples
-@@ -24,10 +23,25 @@ SUBDIRS = include lib src tools examples
- DEFAULT_SUBDIRS = include lib src
-+ifeq ($(BUILD_TOOLS),yes)
-+  DEFAULT_SUBDIRS += tools
-+endif
-+
- PROGRAMS_TO_INSTALL = xmlrpc-c-config
- default: xmlrpc-c-config xmlrpc-c-config.test $(DEFAULT_SUBDIRS:%=%/all)
-+# We don't want common.mk's rule for version.h
-+OMIT_VERSION_H = Y
-+
-+# We don't want common.mk's rule for transport_config.h
-+OMIT_TRANSPORT_CONFIG_H = Y
-+
-+# We don't want common.mk's rule for xmlrpc-c-config.test:
-+OMIT_XMLRPC_C_CONFIG_TEST = Y
-+
-+include $(SRCDIR)/common.mk
-+
- .PHONY: all
- all: xmlrpc-c-config xmlrpc-c-config.test $(SUBDIRS:%=%/all)
-@@ -61,22 +75,15 @@ src/all: lib/all
- MAJOR := $(XMLRPC_MAJOR_RELEASE)
- MINOR := $(XMLRPC_MINOR_RELEASE)
- POINT := $(XMLRPC_POINT_RELEASE)
--version.h: $(SRCDIR)/Makefile.version
-+version.h: $(SRCDIR)/version.mk
-       rm -f $@
-       echo "/* Generated by make file rule */" >>$@
--      echo "#define XMLRPC_C_VERSION" \
--        \"Xmlrpc-c $(MAJOR).$(MINOR).$(POINT)"\"" >>$@
-+      echo "#define XMLRPC_C_VERSION" \"$(MAJOR).$(MINOR).$(POINT)"\"" >>$@
-       echo "#define XMLRPC_VERSION_MAJOR $(MAJOR)" >>$@
-       echo "#define XMLRPC_VERSION_MINOR $(MINOR)" >>$@
-       echo "#define XMLRPC_VERSION_POINT $(POINT)" >>$@
--# We don't want common.mk's rule for version.h
--OMIT_VERSION_H = Y
--
--# We don't want common.mk's rule for transport_config.h
--OMIT_TRANSPORT_CONFIG_H = Y
--
--include transport_config.make
-+include transport_config.mk
- # shell_config is a fragment to place inside a Bourne shell program that
- # sets variables that tell how the build is configured.
-@@ -94,17 +101,15 @@ shell_config: $(BLDDIR)/config.mk
-       @echo 'MUST_BUILD_CURL_CLIENT="$(MUST_BUILD_CURL_CLIENT)"'      >>$@
-       @echo 'MUST_BUILD_LIBWWW_CLIENT="$(MUST_BUILD_LIBWWW_CLIENT)"'  >>$@
-       @echo 'NEED_RPATH="$(NEED_RPATH)"'                              >>$@
--      @echo 'NEED_WL_RPATH="$(NEED_WL)RPATH)"'                        >>$@
-+      @echo 'NEED_WL_RPATH="$(NEED_WL_RPATH)"'                        >>$@
-+      @echo 'LIBXMLRPCPP_NAME="$(LIBXMLRPCPP_NAME)"'                  >>$@
-       @echo 'LSOCKET="$(LSOCKET)"'                                    >>$@
-       @echo 'WININET_LDADD="$(WININET_LDADD)"'                        >>$@
--      @echo 'WININET_RPATH="$(WININET_RPATH)"'                        >>$@
--      @echo 'WININET_WL_RPATH="$(WININET_WL_RPATH)"'                  >>$@
-+      @echo 'WININET_LIBDIR="$(WININET_LIBDIR)"'                      >>$@
-       @echo 'CURL_LDADD="$(CURL_LDADD)"'                              >>$@
--      @echo 'CURL_RPATH="$(CURL_RPATH)"'                              >>$@
--      @echo 'CURL_WL_RPATH="$(CURL_WL_RPATH)"'                        >>$@
-+      @echo 'CURL_LIBDIR="$(CURL_LIBDIR)"'                            >>$@
-       @echo 'LIBWWW_LDADD="$(LIBWWW_LDADD)"'                          >>$@
--      @echo 'LIBWWW_RPATH="$(LIBWWW_RPATH)"'                          >>$@
--      @echo 'LIBWWW_WL_RPATH="$(LIBWWW_WL_RPATH)"'                    >>$@
-+      @echo 'LIBWWW_LIBDIR="$(LIBWWW_LIBDIR)"'                        >>$@
-       @echo 'XMLRPC_MAJOR_RELEASE="$(XMLRPC_MAJOR_RELEASE)"'          >>$@
-       @echo 'XMLRPC_MINOR_RELEASE="$(XMLRPC_MINOR_RELEASE)"'          >>$@
-       @echo 'XMLRPC_POINT_RELEASE="$(XMLRPC_POINT_RELEASE)"'          >>$@
-@@ -116,9 +121,6 @@ shell_config: $(BLDDIR)/config.mk
-       @echo 'ABS_SRCDIR="$(ABS_SRCDIR)"'                              >>$@
-       @echo '#######################################################' >>$@
--# We don't want config.mk's xmlrpc-c-config.test rule:
--OMIT_XMLRPC_C_CONFIG_TEST = Y
--
- xmlrpc-c-config xmlrpc-c-config.test:%: %.main shell_config
-       rm -f $@
-       @echo "Echoes to '$@' suppressed here ..."
-@@ -140,7 +142,7 @@ clean-local:
- distclean: $(SUBDIRS:%=%/distclean) distclean-common distclean-local
- distclean-local: clean-local
--      rm -f config.log config.status config.mk Makefile.srcdir
-+      rm -f config.log config.status config.mk srcdir.mk
-       rm -f xmlrpc_config.h xmlrpc_amconfig.h stamp-h 
-       rm -f shell_config xmlrpc-c-config xmlrpc-c-config.test
-       rm -f TAGS
-@@ -162,11 +164,8 @@ xmlrpc_config.h xmlrpc_amconfig.h \
-       :%:%.in $(SRCDIR)/configure
-       $(SRCDIR)/configure
--include $(SRCDIR)/common.mk
--
--
- # A trick to catch a common user error.  When you don't run 'configure',
--# you don't have a Makefile.srcdir, which means $(SRCDIR) is null.
-+# you don't have a srcdir.mk, which means $(SRCDIR) is null.
- /common.mk:
-       @echo =======================================
-diff --git a/libs/xmlrpc-c/Makefile.common b/libs/xmlrpc-c/Makefile.common
-deleted file mode 100644
-index bf51040..0000000
---- a/libs/xmlrpc-c/Makefile.common
-+++ /dev/null
-@@ -1,272 +0,0 @@
--# -*-makefile-*-    <-- an Emacs control
--
--# This file contains rules and variable settings for the convenience
--# of every other make file in the package.
--
--# No make file is required to use this file, but it usually saves a lot
--# of duplication.
--
--# The following make variables are meaningful as input to this file:
--#
--# SRCDIR:  Name of directory which is the top of the Xmlrpc-c source tree.
--# BUILDDIR: Name of directory which is the top of the Xmlrpc-c build tree.
--
--LIBTOOL = $(SRCDIR)/libtool
--LINK = $(LIBTOOL) --mode=link $(CCLD)
--
--GCC_WARNINGS = -Wall -Wundef -Wimplicit -W -Winline
--  # We need -Wwrite-strings after we fix all the missing consts
--
--GCC_C_WARNINGS = $(GCC_WARNINGS) \
--  -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes
--
--GCC_CXX_WARNINGS = $(GCC_WARNINGS) -Woverloaded-virtual -Wsynth
--
--ifeq ($(C_COMPILER_GNU),yes)
--  CFLAGS_COMMON = $(GCC_C_WARNINGS) $(COMPILER_CFLAGS) -fno-common -g
--else
--  CFLAGS_COMMON = $(COMPILER_CFLAGS)
--endif
--
--ifeq ($(CXX_COMPILER_GNU),yes)
--  CXXFLAGS_COMMON = $(GCC_CXX_WARNINGS) $(COMPILER_CXXFLAGS)
--else
--  CXXFLAGS_COMMON = $(COMPILER_CXXFLAGS)
--endif
--
--DISTDIR = $(BUILDDIR)/$(PACKAGE)-$(VERSION)/$(SUBDIR)
--
--LDFLAGS_VERSINFO = -version-info 7:0:4
--
--# CURDIR was introduced in GNU Make 3.77.
--ifeq ($(CURDIR)x,x)
--  CURDIR := $(shell /bin/pwd)
--endif
--
--##############################################################################
--#                             RULES                                          #
--##############################################################################
--
--$(SUBDIRS:%=%/all): %/all: $(CURDIR)/%
--      $(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
--          $(notdir $@) 
--
--$(SUBDIRS:%=%/install): %/install: $(CURDIR)/%
--      $(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
--          $(notdir $@) 
--
--$(SUBDIRS:%=%/clean): %/clean: $(CURDIR)/%
--      $(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
--          $(notdir $@) 
--
--$(SUBDIRS:%=%/distclean): %/distclean: $(CURDIR)/%
--      $(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
--          $(notdir $@) 
--
--$(SUBDIRS:%=%/distdir): %/distdir: $(CURDIR)/%
--      $(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
--          $(notdir $@) 
--
--$(SUBDIRS:%=%/dep): %/dep: $(CURDIR)/%
--      $(MAKE) -C $(dir $@) -f $(SRCDIR)/$(SUBDIR)/$(dir $@)Makefile \
--          $(notdir $@) 
--
--$(BUILDDIR)/lib/util/casprintf.lo: FORCE
--      $(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/util/Makefile $(notdir $@) 
--
--$(BUILDDIR)/lib/expat/xmlparse/libxmlrpc_xmlparse.la: FORCE
--      $(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/expat/xmlparse/Makefile \
--          $(notdir $@)
--
--$(BUILDDIR)/lib/expat/xmltok/libxmlrpc_xmltok.la: FORCE
--      $(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/expat/xmltok/Makefile \
--          $(notdir $@)
--
--$(BUILDDIR)/lib/wininet_transport/xmlrpc_wininet_transport.lo: FORCE
--      $(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/wininet_transport/Makefile \
--          $(notdir $@)
--
--$(BUILDDIR)/lib/curl_transport/xmlrpc_curl_transport.lo: FORCE
--      $(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/curl_transport/Makefile \
--          $(notdir $@)
--
--$(BUILDDIR)/lib/libwww_transport/xmlrpc_libwww_transport.lo: FORCE
--      $(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/libwww_transport/Makefile \
--          $(notdir $@)
--
--$(BUILDDIR)/src/libxmlrpc.la: FORCE
--      $(MAKE) -C $(dir $@) -f $(SRCDIR)/src/Makefile \
--          $(notdir $@)
--
--$(BUILDDIR)/src/libxmlrpc_client.la: FORCE
--      $(MAKE) -C $(dir $@) -f $(SRCDIR)/src/Makefile \
--          $(notdir $@)
--
--$(BUILDDIR)/src/libxmlrpc_server.la: FORCE
--      $(MAKE) -C $(dir $@) -f $(SRCDIR)/src/Makefile \
--          $(notdir $@)
--
--ifneq ($(OMIT_TRANSPORT_CONFIG_H),Y)
--$(BUILDDIR)/transport_config.h:
--      $(MAKE) -C $(dir $@) $(notdir $@)
--endif
--
--MKINSTALLDIRS = $(SHELL) $(SRCDIR)/mkinstalldirs
--
--.PHONY: install-common install-libraries install-headers install-bin
--install-common: \
--  install-ltlibraries install-libraries install-headers install-bin
--
--INSTALL_LIB_CMD = $(INSTALL_DATA) $$p $(DESTDIR)$(LIBINST_DIR)/$$p
--RANLIB_CMD = $(RANLIB) $(DESTDIR)$(LIBINST_DIR)/$$p
--
--install-libraries: $(LIBRARIES_TO_INSTALL)
--      $(MKINSTALLDIRS) $(DESTDIR)$(LIBINST_DIR)
--      @list='$(LIBRARIES_TO_INSTALL)'; for p in $$list; do \
--        if test -f $$p; then \
--          echo " $(INSTALL_LIB_CMD)"; \
--          $(INSTALL_LIB_CMD); \
--        else :; fi; \
--      done
--      @$(POST_INSTALL)
--      @list='$(LIBRARIES_TO_INSTALL)'; for p in $$list; do \
--        if test -f $$p; then \
--          echo " $(RANLIB_CMD)"; \
--          $(RANLIB_CMD); \
--        else :; fi; \
--      done
--
--LIBTOOL_INSTALL_CMD = $(LIBTOOL) --mode=install \
--  $(INSTALL) $$p $(DESTDIR)$(LIBINST_DIR)/$$p
--
--install-ltlibraries: $(LTLIBRARIES_TO_INSTALL)
--      $(MKINSTALLDIRS) $(DESTDIR)$(LIBINST_DIR)
--      @list='$(LTLIBRARIES_TO_INSTALL)'; for p in $$list; do \
--        if test -f $$p; then \
--          echo " $(LIBTOOL_INSTALL_CMD)"; \
--          $(LIBTOOL_INSTALL_CMD); \
--        else :; fi; \
--      done
--
--HEADERDESTDIR = $(DESTDIR)$(HEADERINST_DIR)
--INSTALL_HDR_CMD = $(INSTALL_DATA) $$d$$p $(HEADERDESTDIR)/$$p 
--
--install-headers: $(HEADERS_TO_INSTALL)
--      $(MKINSTALLDIRS) $(HEADERDESTDIR)
--      $(MKINSTALLDIRS) $(HEADERDESTDIR)/xmlrpc-c
--      @list='$(HEADERS_TO_INSTALL)'; for p in $$list; do \
--        if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
--        echo " $(INSTALL_HDR_CMD)"; \
--        $(INSTALL_HDR_CMD); \
--      done
--
--
--INSTALL_PROGRAM_CMD = $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p \
--  $(DESTDIR)$(PROGRAMINST_DIR)/$$p
--
--install-bin: $(PROGRAMS_TO_INSTALL) $(DESTDIR)$(PROGRAMINST_DIR)
--      @list='$(PROGRAMS_TO_INSTALL)'; \
--         for p in $$list; do \
--         echo "$(INSTALL_PROGRAM_CMD)"; \
--         $(INSTALL_PROGRAM_CMD); \
--         done
--
--$(DESTDIR)$(PROGRAMINST_DIR):
--      $(MKINSTALLDIRS) $@
--
--
--.PHONY: clean-common
--clean-common:
--      rm -f *.o *.a *.s *.i *.la *.lo
--      rm -rf .libs
--
--.PHONY: distclean-common
--distclean-common:
--# Makefile.depend is generated by 'make dep' and contains only dependencies
--# that make parts get _rebuilt_ when parts upon which they depend change.
--# It does not contain dependencies that are necessary to cause a part to
--# get built in the first place.  E.g. if foo.c uses bar.h and bar.h gets built
--# by a make rule, you must put the dependency of foo.c on bar.h somewhere
--# besides Makefile.depend.
--#
--# Because of this, a user doesn't need Makefile.depend, because he
--# doesn't modify source files.  A developer, on the other hand, must make his
--# own Makefile.depend, because 'make dep' creates Makefile.depend with 
--# absolute pathnames, specific to the developer's system.
--#
--# So we empty out Makefile.depend here.  The developer must do 'make dep' if
--# he wants to edit and rebuild.
--#
--# Other projects have 'make distclean' _remove_ Makefile.depend and then
--# have 'make' automatically build Makefile.depend.  We have
--# found that to be an utter disaster -- it's way too complicated and prone
--# to failure, especially with built .h files.  Better not to burden the user,
--# who gains nothing from it, with that.
--#
--      cat /dev/null >Makefile.depend
--      rm -f TAGS
--
--
--.PHONY: distdir-common
--distdir-common:
--      @for file in $(DISTFILES); do \
--        d=$(SRCDIR); \
--        if test -d $$d/$$file; then \
--          cp -pr $$d/$$file $(DISTDIR)/$$file; \
--        else \
--          test -f $(DISTDIR)/$$file \
--          || ln $$d/$$file $(DISTDIR)/$$file 2> /dev/null \
--          || cp -p $$d/$$file $(DISTDIR)/$$file || :; \
--        fi; \
--      done
--
--TAGS: $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
--      tags=; \
--      here=`pwd`; \
--      list='$(SUBDIRS)'; for subdir in $$list; do \
--   if test "$$subdir" = .; then :; else \
--          test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
--   fi; \
--      done; \
--      list='$(SOURCES) $(HEADERS)'; \
--      unique=`for i in $$list; do echo $$i; done | \
--        awk '    { files[$$0] = 1; } \
--             END { for (i in files) print i; }'`; \
--      test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
--        || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $$unique $(LISP) -o $$here/TAGS)
--
--DEP_SOURCES = $(wildcard *.c *.cpp)
--
--# This is a filter to turn "foo.o:" rules into "foo.o foo.lo:" because Libtool
--# uses .lo for object files.  I'd like to purge the build of Libtool some day
--# and eliminate this complication.
--
--LIBTOOL_DEPEND_MASSAGER = perl -walnpe's{^(.*)\.o:}{$$1.o $$1.lo:}'
--
--
--
--.PHONY: dep-common
--dep-common: FORCE
--ifneq ($(DEP_SOURCES)x,x)
--      -$(CC) -MM -MG -I. $(INCLUDES) $(DEP_SOURCES) | \
--        $(LIBTOOL_DEPEND_MASSAGER) \
--        >Makefile.depend
--endif
--
--Makefile.depend:
--      cat /dev/null >$@
--
--# The automatic dependency generation is a pain in the butt and
--# totally unnecessary for people just installing the distributed code,
--# so to avoid needless failures in the field and a complex build, the
--# 'distclean' target simply makes Makefile.depend an empty file.  A
--# developer may do 'make dep' to create a Makefile.depend full of real
--# dependencies.
--
--# Tell versions [3.59,3.63) of GNU make to not export all variables.
--# Otherwise a system limit (for SysV at least) may be exceeded.
--.NOEXPORT:
--
--
--# Use the FORCE target as a dependency to force a target to get remade
--FORCE:
-diff --git a/libs/xmlrpc-c/Makefile.config.in b/libs/xmlrpc-c/Makefile.config.in
-deleted file mode 100644
-index efdcf4f..0000000
---- a/libs/xmlrpc-c/Makefile.config.in
-+++ /dev/null
-@@ -1,79 +0,0 @@
--# Makefile.config is generated by 'configure' using Makefile.config.in
--# as a template and information that 'configure' gathers from the build
--# system and from user options.
--
--# Makefile.config should someday replace most of the other files that
--# 'configure' generates, thus simplifying development and customization.
--# Makefile.config is intended to contain information specific to the
--# particular build environment or user build choices.
--
--# Furthermore, most of the logic in 'configure', and thus 'configure.in',
--# should go into the make files to simplify the build.  Makefile.config
--# should just pass raw configure variables through to the make file.
--
--# Tokens of the form @TOKEN@ in the template file get replaced by
--# 'configure' with the values of variables of the same name within
--# 'configure', because of a AC_SUBST(TOKEN) statement in the
--# 'configure.in' from which 'configure' was built.
--
--# Here are the options the user chose on 'configure':
--
--ENABLE_ABYSS_SERVER    = @ENABLE_ABYSS_SERVER@
--ENABLE_ABYSS_THREADS   = @ENABLE_ABYSS_THREADS@
--ENABLE_CPLUSPLUS       = @ENABLE_CPLUSPLUS@
--ENABLE_CGI_SERVER      = @ENABLE_CGI_SERVER@
--ENABLE_LIBXML2_BACKEND = @ENABLE_LIBXML2_BACKEND@
--ENABLE_EFENCE          = @ENABLE_EFENCE@
--
--MUST_BUILD_WININET_CLIENT = @MUST_BUILD_WININET_CLIENT@
--MUST_BUILD_CURL_CLIENT    = @MUST_BUILD_CURL_CLIENT@
--MUST_BUILD_LIBWWW_CLIENT  = @MUST_BUILD_LIBWWW_CLIENT@
--
--LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
--LIBXML2_LIBS   = @LIBXML2_LIBS@
--
--MUST_BUILD_CLIENT = no
--ifeq ($(MUST_BUILD_WININET_CLIENT),yes)
--  MUST_BUILD_CLIENT = yes
--endif
--ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
--  MUST_BUILD_CLIENT = yes
--endif
--ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
--  MUST_BUILD_CLIENT = yes
--endif
--
--# Stuff 'configure' figured out about our build platform:
--
--SHELL = @SHELL@
--CC = @CC@
--CXX = @CXX@
--CCLD = $(CC)
--CXXLD = $(CXX)
--AR = ar
--RANLIB = @RANLIB@
--LN_S = @LN_S@
--INSTALL = @INSTALL@
--
--C_COMPILER_GNU = @C_COMPILER_GNU@
--CXX_COMPILER_GNU = @CXX_COMPILER_GNU@
--COMPILER_CFLAGS = @COMPILER_CFLAGS@
--COMPILER_CXXFLAGS = @COMPILER_CXXFLAGS@
--
--# Here are the commands 'make install' uses to install various kinds of files:
--
--INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
--INSTALL_DATA = @INSTALL_DATA@
--INSTALL_SCRIPT = @INSTALL_SCRIPT@
--
--# Here are the locations at which 'make install' puts files:
--
--# DESTDIR is designed to be overriden at make time in order to relocate
--# the entire install into a subdirectory.
--DESTDIR =
--
--exec_prefix = @exec_prefix@
--prefix = @prefix@
--LIBINST_DIR = @libdir@
--HEADERINST_DIR = @includedir@
--PROGRAMINST_DIR = @bindir@
-diff --git a/libs/xmlrpc-c/Makefile.depend b/libs/xmlrpc-c/Makefile.depend
-deleted file mode 100644
-index e69de29..0000000
-diff --git a/libs/xmlrpc-c/Makefile.srcdir.in b/libs/xmlrpc-c/Makefile.srcdir.in
-deleted file mode 100644
-index d389df1..0000000
---- a/libs/xmlrpc-c/Makefile.srcdir.in
-+++ /dev/null
-@@ -1 +0,0 @@
--SRCDIR=@abs_srcdir@
-diff --git a/libs/xmlrpc-c/Makefile.version b/libs/xmlrpc-c/Makefile.version
-deleted file mode 100644
-index 6dc75a2..0000000
---- a/libs/xmlrpc-c/Makefile.version
-+++ /dev/null
-@@ -1,11 +0,0 @@
--###############################################################################
--# This is not only a make file inclusion, but a source file for the program
--# 'mkvers' in the Windows build system.  The latter is very particular about
--# the format of this file.  Do not change white space, add comment lines, or
--# anything!
--#
--#
--###############################################################################
--XMLRPC_MAJOR_RELEASE = 1
--XMLRPC_MINOR_RELEASE = 14
--XMLRPC_POINT_RELEASE = 99
-diff --git a/libs/xmlrpc-c/Windows/CleanWin32.bat b/libs/xmlrpc-c/Windows/CleanWin32.bat
-index 907b32b..181c3aa 100644
---- a/libs/xmlrpc-c/Windows/CleanWin32.bat
-+++ b/libs/xmlrpc-c/Windows/CleanWin32.bat
-@@ -1,43 +1,30 @@
--@echo Windows build\r
--@echo This batch file deletes the copied header files,\r
--@echo Deleting Win32 header files...\r
--@echo #####################################################\r
--@echo IF YOU HAVE MADE CHANGES IN ..\xmlrpc_config.h, ..\include\xmlrpc-c\config.h etc ...\r
--@echo THESE CHANGES WILL BE LOST!\r
--@echo You should run diffcfg.bat first to check for changes,\r
--@echo and updcfg.bat if you have made changes ...\r
--@echo #####################################################\r
--@echo ARE YOU SURE YOU WANT TO DO THIS? Ctrl+C to abort ...\r
--@echo #####################################################\r
--@pause\r
--@set TEMP1=\r
--@if NOT EXIST ..\include\xmlrpc-c\config.h goto DN1\r
--del ..\include\xmlrpc-c\config.h > nul\r
--@set TEMP1=%TEMP1% ..\include\xmlrpc-c\config.h\r
--:DN1\r
--@if NOT EXIST ..\xmlrpc_config.h goto DN2\r
--del ..\xmlrpc_config.h > nul\r
--@set TEMP1=%TEMP1% ..\xmlrpc_config.h\r
--:DN2\r
--@if NOT EXIST ..\transport_config.h goto DN3\r
--del ..\transport_config.h > nul\r
--@set TEMP1=%TEMP1% ..\transport_config.h\r
--:DN3\r
--@if NOT EXIST ..\version.h goto DN4\r
--del ..\version.h > nul\r
--@set TEMP1=%TEMP1% ..\version.h\r
--:DN4\r
--@if NOT EXIST ..\examples\config.h goto DN5\r
--del ..\examples\config.h > nul\r
--@set TEMP1=%TEMP1% ..\examples\config.h\r
--:DN5\r
--@if "%TEMP1%." == "." goto ALLDN\r
--@echo DELETED win32 header files.\r
--@echo %TEMP1%\r
--@goto END\r
--\r
--:ALLDN\r
--@echo NOne to DELETE ...\r
--@goto END\r
--\r
--:END\r
-+@if NOT EXIST ..\include\xmlrpc-c\config.h goto DN1
-+del ..\include\xmlrpc-c\config.h > nul
-+@set TEMP1=%TEMP1% ..\include\xmlrpc-c\config.h
-+:DN1
-+@if NOT EXIST ..\xmlrpc_config.h goto DN2
-+del ..\xmlrpc_config.h > nul
-+@set TEMP1=%TEMP1% ..\xmlrpc_config.h
-+:DN2
-+@if NOT EXIST ..\transport_config.h goto DN3
-+del ..\transport_config.h > nul
-+@set TEMP1=%TEMP1% ..\transport_config.h
-+:DN3
-+@if NOT EXIST ..\version.h goto DN4
-+del ..\version.h > nul
-+@set TEMP1=%TEMP1% ..\version.h
-+:DN4
-+@if NOT EXIST ..\examples\config.h goto DN5
-+del ..\examples\config.h > nul
-+@set TEMP1=%TEMP1% ..\examples\config.h
-+:DN5
-+@if "%TEMP1%." == "." goto ALLDN
-+@echo DELETED win32 header files.
-+@echo %TEMP1%
-+@goto END
-+
-+:ALLDN
-+@echo NOne to DELETE ...
-+@goto END
-+
-+:END
-diff --git a/libs/xmlrpc-c/Windows/ReadMeWin32.txt b/libs/xmlrpc-c/Windows/ReadMeWin32.txt
-index 2da1575..1178159 100644
---- a/libs/xmlrpc-c/Windows/ReadMeWin32.txt
-+++ b/libs/xmlrpc-c/Windows/ReadMeWin32.txt
-@@ -1,11 +1,13 @@
- Build Instructions For XML-RPC For C/C++ On Windows\r
- ---------------------------------------------------\r
\r
--Latest Windows work was done by\r
--\r
--  Geoff McLane\r
--  19 October, 2007\r
--  home: http://geoffair.net\r
-+-------------------------------------------------------------------------\r
-+These instructions are for static link libraries, using Microsoft Visual\r
-+Studio 7 and later.  There are project files to create DLLs, using\r
-+Visual Studio 2008 or later, in the 'dll' subdirectory.  People maintain\r
-+those project files separately from the rest of the build system, so it's\r
-+not uncommon for something to work with one but not the other.\r
-+-------------------------------------------------------------------------\r
\r
\r
- 1. Run the batch file ConfigureWin32.bat, found in the Windows\r
-diff --git a/libs/xmlrpc-c/Windows/abyss.2008.vcproj b/libs/xmlrpc-c/Windows/abyss.2008.vcproj
-deleted file mode 100644
-index 45508db..0000000
---- a/libs/xmlrpc-c/Windows/abyss.2008.vcproj
-+++ /dev/null
-@@ -1,1298 +0,0 @@
--<?xml version="1.0" encoding="Windows-1252"?>\r
--<VisualStudioProject\r
--      ProjectType="Visual C++"\r
--      Version="9.00"\r
--      Name="abyss"\r
--      ProjectGUID="{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}"\r
--      RootNamespace="abyss"\r
--      TargetFrameworkVersion="131072"\r
--      >\r
--      <Platforms>\r
--              <Platform\r
--                      Name="Win32"\r
--              />\r
--              <Platform\r
--                      Name="x64"\r
--              />\r
--      </Platforms>\r
--      <ToolFiles>\r
--      </ToolFiles>\r
--      <Configurations>\r
--              <Configuration\r
--                      Name="Debug|Win32"\r
--                      OutputDirectory=".\Debug\abyss"\r
--                      IntermediateDirectory=".\Debug\abyss"\r
--                      ConfigurationType="4"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      CharacterSet="2"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="0"\r
--                              AdditionalIncludeDirectories="..\,..\include,..\lib\util\include,."\r
--                              PreprocessorDefinitions="WIN32;_DEBUG;_LIB;ABYSS_WIN32;_THREAD"\r
--                              MinimalRebuild="true"\r
--                              BasicRuntimeChecks="3"\r
--                              RuntimeLibrary="3"\r
--                              PrecompiledHeaderFile=".\Debug\abyss/abyss.pch"\r
--                              AssemblerListingLocation=".\Debug\abyss/"\r
--                              ObjectFile=".\Debug\abyss/"\r
--                              ProgramDataBaseFileName=".\Debug\abyss/"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                              DebugInformationFormat="3"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="_DEBUG"\r
--                              Culture="1033"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLibrarianTool"\r
--                              OutputFile="..\lib\abyssD.lib"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Debug\abyss/abyss.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                      />\r
--              </Configuration>\r
--              <Configuration\r
--                      Name="Debug|x64"\r
--                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
--                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
--                      ConfigurationType="4"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      CharacterSet="2"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                              TargetEnvironment="3"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="0"\r
--                              AdditionalIncludeDirectories="..\,..\include,..\lib\util\include,."\r
--                              PreprocessorDefinitions="WIN32;_DEBUG;_LIB;ABYSS_WIN32;_THREAD"\r
--                              MinimalRebuild="true"\r
--                              BasicRuntimeChecks="3"\r
--                              RuntimeLibrary="3"\r
--                              PrecompiledHeaderFile=".\Debug\abyss/abyss.pch"\r
--                              ObjectFile="$(IntDir)\Abyss\"\r
--                              ProgramDataBaseFileName="$(IntDir)\Abyss\vc90.pdb"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                              DebugInformationFormat="3"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="_DEBUG"\r
--                              Culture="1033"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLibrarianTool"\r
--                              OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\abyssD.lib"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Debug\abyss/abyss.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                      />\r
--              </Configuration>\r
--              <Configuration\r
--                      Name="Release|Win32"\r
--                      OutputDirectory=".\Release\Abyss"\r
--                      IntermediateDirectory=".\Release\Abyss"\r
--                      ConfigurationType="4"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      CharacterSet="2"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="2"\r
--                              InlineFunctionExpansion="1"\r
--                              AdditionalIncludeDirectories="..\,..\include,..\lib\util\include,."\r
--                              PreprocessorDefinitions="WIN32;NDEBUG;_LIB;ABYSS_WIN32;_THREAD"\r
--                              StringPooling="true"\r
--                              RuntimeLibrary="2"\r
--                              EnableFunctionLevelLinking="true"\r
--                              PrecompiledHeaderFile=".\Release\Abyss/abyss.pch"\r
--                              AssemblerListingLocation=".\Release\Abyss/"\r
--                              ObjectFile=".\Release\Abyss/"\r
--                              ProgramDataBaseFileName=".\Release\Abyss/"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="NDEBUG"\r
--                              Culture="1033"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLibrarianTool"\r
--                              OutputFile="..\lib\abyss.lib"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Release\Abyss/abyss.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                      />\r
--              </Configuration>\r
--              <Configuration\r
--                      Name="Release|x64"\r
--                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
--                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
--                      ConfigurationType="4"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      CharacterSet="2"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                              TargetEnvironment="3"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="2"\r
--                              InlineFunctionExpansion="1"\r
--                              AdditionalIncludeDirectories="..\,..\include,..\lib\util\include,."\r
--                              PreprocessorDefinitions="WIN32;NDEBUG;_LIB;ABYSS_WIN32;_THREAD"\r
--                              StringPooling="true"\r
--                              RuntimeLibrary="2"\r
--                              EnableFunctionLevelLinking="true"\r
--                              PrecompiledHeaderFile=".\Release\Abyss/abyss.pch"\r
--                              ObjectFile="$(IntDir)\Abyss\"\r
--                              ProgramDataBaseFileName="$(IntDir)\Abyss\vc90.pdb"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="NDEBUG"\r
--                              Culture="1033"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLibrarianTool"\r
--                              OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\abyss.lib"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Release\Abyss/abyss.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                      />\r
--              </Configuration>\r
--      </Configurations>\r
--      <References>\r
--      </References>\r
--      <Files>\r
--              <Filter\r
--                      Name="Source Files"\r
--                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
--                      >\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\channel.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\chanswitch.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\conf.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\conn.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\data.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\date.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\file.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\handler.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\http.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\init.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\response.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\server.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\session.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\socket.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\socket_openssl.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\socket_unix.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\socket_win.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\thread_fork.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\thread_pthread.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\thread_windows.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\token.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\trace.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--              </Filter>\r
--              <Filter\r
--                      Name="Header Files"\r
--                      Filter="h;hpp;hxx;hm;inl"\r
--                      >\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\abyss_info.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\channel.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\chanswitch.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\conn.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\data.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\date.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\file.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\handler.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\http.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\server.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\session.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\socket.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\socket_win.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\thread.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\token.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\trace.h"\r
--                              >\r
--                      </File>\r
--              </Filter>\r
--      </Files>\r
--      <Globals>\r
--      </Globals>\r
--</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/abyss.2010.vcxproj b/libs/xmlrpc-c/Windows/abyss.2010.vcxproj
-deleted file mode 100644
-index 8f366a8..0000000
---- a/libs/xmlrpc-c/Windows/abyss.2010.vcxproj
-+++ /dev/null
-@@ -1,437 +0,0 @@
--<?xml version="1.0" encoding="utf-8"?>\r
--<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
--  <ItemGroup Label="ProjectConfigurations">\r
--    <ProjectConfiguration Include="Debug|Win32">\r
--      <Configuration>Debug</Configuration>\r
--      <Platform>Win32</Platform>\r
--    </ProjectConfiguration>\r
--    <ProjectConfiguration Include="Debug|x64">\r
--      <Configuration>Debug</Configuration>\r
--      <Platform>x64</Platform>\r
--    </ProjectConfiguration>\r
--    <ProjectConfiguration Include="Release|Win32">\r
--      <Configuration>Release</Configuration>\r
--      <Platform>Win32</Platform>\r
--    </ProjectConfiguration>\r
--    <ProjectConfiguration Include="Release|x64">\r
--      <Configuration>Release</Configuration>\r
--      <Platform>x64</Platform>\r
--    </ProjectConfiguration>\r
--  </ItemGroup>\r
--  <PropertyGroup Label="Globals">\r
--    <ProjectName>abyss</ProjectName>\r
--    <ProjectGuid>{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9}</ProjectGuid>\r
--    <RootNamespace>abyss</RootNamespace>\r
--  </PropertyGroup>\r
--  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
--  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
--    <ConfigurationType>StaticLibrary</ConfigurationType>\r
--    <UseOfMfc>false</UseOfMfc>\r
--    <CharacterSet>MultiByte</CharacterSet>\r
--  </PropertyGroup>\r
--  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
--    <ConfigurationType>StaticLibrary</ConfigurationType>\r
--    <UseOfMfc>false</UseOfMfc>\r
--    <CharacterSet>MultiByte</CharacterSet>\r
--  </PropertyGroup>\r
--  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
--    <ConfigurationType>StaticLibrary</ConfigurationType>\r
--    <UseOfMfc>false</UseOfMfc>\r
--    <CharacterSet>MultiByte</CharacterSet>\r
--  </PropertyGroup>\r
--  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
--    <ConfigurationType>StaticLibrary</ConfigurationType>\r
--    <UseOfMfc>false</UseOfMfc>\r
--    <CharacterSet>MultiByte</CharacterSet>\r
--  </PropertyGroup>\r
--  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
--  <ImportGroup Label="ExtensionSettings">\r
--  </ImportGroup>\r
--  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
--    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
--    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
--    <Import Project="..\..\..\w32\extlib.props" />\r
--  </ImportGroup>\r
--  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
--    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
--    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
--    <Import Project="..\..\..\w32\extlib.props" />\r
--  </ImportGroup>\r
--  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
--    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
--    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
--    <Import Project="..\..\..\w32\extlib.props" />\r
--  </ImportGroup>\r
--  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
--    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
--    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
--    <Import Project="..\..\..\w32\extlib.props" />\r
--  </ImportGroup>\r
--  <PropertyGroup Label="UserMacros" />\r
--  <PropertyGroup>\r
--    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
--    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PlatformName)\abyss\$(Configuration)\</IntDir>\r
--    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PlatformName)\abyss\$(Configuration)\</IntDir>\r
--    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(PlatformName)\abyss\$(Configuration)\</IntDir>\r
--    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(PlatformName)\abyss\$(Configuration)\</IntDir>\r
--  </PropertyGroup>\r
--  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
--    <ClCompile>\r
--      <Optimization>Disabled</Optimization>\r
--      <AdditionalIncludeDirectories>..\;..\include;..\lib\util\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;ABYSS_WIN32;_THREAD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <MinimalRebuild>true</MinimalRebuild>\r
--      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
--      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
--      <WarningLevel>Level3</WarningLevel>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </ClCompile>\r
--    <ResourceCompile>\r
--      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <Culture>0x0409</Culture>\r
--    </ResourceCompile>\r
--    <Lib>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </Lib>\r
--    <Bscmake>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <OutputFile>.\Debug\abyss/abyss.bsc</OutputFile>\r
--    </Bscmake>\r
--  </ItemDefinitionGroup>\r
--  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
--    <Midl>\r
--      <TargetEnvironment>X64</TargetEnvironment>\r
--    </Midl>\r
--    <ClCompile>\r
--      <Optimization>Disabled</Optimization>\r
--      <AdditionalIncludeDirectories>..\;..\include;..\lib\util\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;ABYSS_WIN32;_THREAD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <MinimalRebuild>true</MinimalRebuild>\r
--      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
--      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
--      <WarningLevel>Level3</WarningLevel>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </ClCompile>\r
--    <ResourceCompile>\r
--      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <Culture>0x0409</Culture>\r
--    </ResourceCompile>\r
--    <Lib>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </Lib>\r
--    <Bscmake>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <OutputFile>.\Debug\abyss/abyss.bsc</OutputFile>\r
--    </Bscmake>\r
--  </ItemDefinitionGroup>\r
--  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
--    <ClCompile>\r
--      <Optimization>MaxSpeed</Optimization>\r
--      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
--      <AdditionalIncludeDirectories>..\;..\include;..\lib\util\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;ABYSS_WIN32;_THREAD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <StringPooling>true</StringPooling>\r
--      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
--      <FunctionLevelLinking>true</FunctionLevelLinking>\r
--      <WarningLevel>Level3</WarningLevel>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </ClCompile>\r
--    <ResourceCompile>\r
--      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <Culture>0x0409</Culture>\r
--    </ResourceCompile>\r
--    <Lib>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </Lib>\r
--    <Bscmake>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <OutputFile>.\Release\Abyss/abyss.bsc</OutputFile>\r
--    </Bscmake>\r
--  </ItemDefinitionGroup>\r
--  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
--    <Midl>\r
--      <TargetEnvironment>X64</TargetEnvironment>\r
--    </Midl>\r
--    <ClCompile>\r
--      <Optimization>MaxSpeed</Optimization>\r
--      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
--      <AdditionalIncludeDirectories>..\;..\include;..\lib\util\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;ABYSS_WIN32;_THREAD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <StringPooling>true</StringPooling>\r
--      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
--      <FunctionLevelLinking>true</FunctionLevelLinking>\r
--      <WarningLevel>Level3</WarningLevel>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </ClCompile>\r
--    <ResourceCompile>\r
--      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <Culture>0x0409</Culture>\r
--    </ResourceCompile>\r
--    <Lib>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </Lib>\r
--    <Bscmake>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <OutputFile>.\Release\Abyss/abyss.bsc</OutputFile>\r
--    </Bscmake>\r
--  </ItemDefinitionGroup>\r
--  <ItemGroup>\r
--    <ClCompile Include="..\lib\abyss\src\channel.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\chanswitch.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\conf.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\conn.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\data.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\date.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\file.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\handler.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\http.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\init.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\response.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\server.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\session.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\socket.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\socket_openssl.c">\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\socket_unix.c">\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\socket_win.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\thread_fork.c">\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\thread_pthread.c">\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\thread_windows.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\token.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\trace.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--  </ItemGroup>\r
--  <ItemGroup>\r
--    <ClInclude Include="..\lib\abyss\src\abyss_info.h" />\r
--    <ClInclude Include="..\lib\abyss\src\channel.h" />\r
--    <ClInclude Include="..\lib\abyss\src\chanswitch.h" />\r
--    <ClInclude Include="..\lib\abyss\src\conn.h" />\r
--    <ClInclude Include="..\lib\abyss\src\data.h" />\r
--    <ClInclude Include="..\lib\abyss\src\date.h" />\r
--    <ClInclude Include="..\lib\abyss\src\file.h" />\r
--    <ClInclude Include="..\lib\abyss\src\handler.h" />\r
--    <ClInclude Include="..\lib\abyss\src\http.h" />\r
--    <ClInclude Include="..\lib\abyss\src\server.h" />\r
--    <ClInclude Include="..\lib\abyss\src\session.h" />\r
--    <ClInclude Include="..\lib\abyss\src\socket.h" />\r
--    <ClInclude Include="..\lib\abyss\src\socket_win.h" />\r
--    <ClInclude Include="..\lib\abyss\src\thread.h" />\r
--    <ClInclude Include="..\lib\abyss\src\token.h" />\r
--    <ClInclude Include="..\lib\abyss\src\trace.h" />\r
--  </ItemGroup>\r
--  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
--  <ImportGroup Label="ExtensionTargets">\r
--  </ImportGroup>\r
--</Project>
-\ No newline at end of file
-diff --git a/libs/xmlrpc-c/Windows/abyss.2010.vcxproj.filters b/libs/xmlrpc-c/Windows/abyss.2010.vcxproj.filters
-deleted file mode 100644
-index 63a3cb3..0000000
---- a/libs/xmlrpc-c/Windows/abyss.2010.vcxproj.filters
-+++ /dev/null
-@@ -1,131 +0,0 @@
--<?xml version="1.0" encoding="utf-8"?>\r
--<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
--  <ItemGroup>\r
--    <Filter Include="Source Files">\r
--      <UniqueIdentifier>{8ac4971f-a9ba-4930-a7e3-b291ad24d6ca}</UniqueIdentifier>\r
--      <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>\r
--    </Filter>\r
--    <Filter Include="Header Files">\r
--      <UniqueIdentifier>{05489d43-6c6b-4bb8-95db-414e8137ee9e}</UniqueIdentifier>\r
--      <Extensions>h;hpp;hxx;hm;inl</Extensions>\r
--    </Filter>\r
--  </ItemGroup>\r
--  <ItemGroup>\r
--    <ClCompile Include="..\lib\abyss\src\channel.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\chanswitch.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\conf.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\conn.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\data.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\date.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\file.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\handler.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\http.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\init.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\response.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\server.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\session.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\socket.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\socket_openssl.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\socket_unix.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\socket_win.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\thread_fork.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\thread_pthread.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\thread_windows.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\token.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\abyss\src\trace.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--  </ItemGroup>\r
--  <ItemGroup>\r
--    <ClInclude Include="..\lib\abyss\src\abyss_info.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\channel.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\chanswitch.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\conn.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\data.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\date.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\file.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\handler.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\http.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\server.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\session.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\socket.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\socket_win.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\thread.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\token.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\trace.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--  </ItemGroup>\r
--</Project>
-\ No newline at end of file
-diff --git a/libs/xmlrpc-c/Windows/cpptest.dsp b/libs/xmlrpc-c/Windows/cpptest.dsp
-index 9db8ccc..4058491 100644
---- a/libs/xmlrpc-c/Windows/cpptest.dsp
-+++ b/libs/xmlrpc-c/Windows/cpptest.dsp
-@@ -85,6 +85,10 @@ LINK32=link.exe
- # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
- # Begin Source File\r
\r
-+SOURCE=..\src\cpp\test\value.cpp\r
-+# End Source File\r
-+# Begin Source File\r
-+\r
- SOURCE=..\src\cpp\test\registry.cpp\r
- # End Source File\r
- # Begin Source File\r
-@@ -94,7 +98,6 @@ SOURCE=..\src\cpp\test\server_abyss.cpp
- # Begin Source File\r
\r
- SOURCE=..\src\cpp\test\server_pstream.cpp\r
--# PROP Exclude_From_Build 1\r
- # End Source File\r
- # Begin Source File\r
\r
-@@ -108,6 +111,10 @@ SOURCE=..\src\cpp\test\testclient_dummy.cpp
\r
- SOURCE=..\src\cpp\test\tools.cpp\r
- # End Source File\r
-+# Begin Source File\r
-+\r
-+SOURCE=.\socketpair.cpp\r
-+# End Source File\r
- # End Group\r
- # Begin Group "Header Files"\r
\r
-diff --git a/libs/xmlrpc-c/Windows/curllink.h b/libs/xmlrpc-c/Windows/curllink.h
-index 516fec0..090e4bf 100644
---- a/libs/xmlrpc-c/Windows/curllink.h
-+++ b/libs/xmlrpc-c/Windows/curllink.h
-@@ -1,18 +1,18 @@
--/* We use pragma statements to tell the linker what we need to link
--   with.  Since Curl requires Winsock, Winmm, and libcurl, and no other
--   project does, we include this file into the Curl transport source code
--   to tell the linker to add these libs.
--   
--   Alternatively, the USER can add the libraries to LINK with as
--   NEEDED!
--*/
--
--#ifdef _DEBUG
--#pragma comment( lib, "C:\\FG\\FGCOMXML\\curl\\build\\Debug\\Lib_curl.lib" )
--#else
--#pragma comment( lib, "C:\\FG\\FGCOMXML\\curl\\build\\Release\\Lib_curl.lib" )
--#endif
--
--#pragma comment( lib, "Winmm.lib" )
--#pragma comment( lib, "Ws2_32.lib" )
--#pragma comment( lib, "Wldap32.lib" )
-+/* We use pragma statements to tell the linker what we need to link\r
-+   with.  Since Curl requires Winsock, Winmm, and libcurl, and no other\r
-+   project does, we include this file into the Curl transport source code\r
-+   to tell the linker to add these libs.\r
-+   \r
-+   Alternatively, the USER can add the libraries to LINK with as\r
-+   NEEDED!\r
-+*/\r
-+\r
-+#ifdef _DEBUG\r
-+#pragma comment( lib, "C:\\FG\\FGCOMXML\\curl\\build\\Debug\\Lib_curl.lib" )\r
-+#else\r
-+#pragma comment( lib, "C:\\FG\\FGCOMXML\\curl\\build\\Release\\Lib_curl.lib" )\r
-+#endif\r
-+\r
-+#pragma comment( lib, "Winmm.lib" )\r
-+#pragma comment( lib, "Ws2_32.lib" )\r
-+#pragma comment( lib, "Wldap32.lib" )\r
-diff --git a/libs/xmlrpc-c/Windows/dll/cpptest.vcproj b/libs/xmlrpc-c/Windows/dll/cpptest.vcproj
-new file mode 100644
-index 0000000..dcffa92
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/cpptest.vcproj
-@@ -0,0 +1,482 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="cpptest"\r
-+      ProjectGUID="{26FB3E14-7E0C-4B0C-AB1E-CFE4B48A1856}"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              AdditionalOptions="/D INTERNAL_EXPAT"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;ABYSS_WIN32;CURL_STATICLIB;_CRT_SECURE_NO_WARNINGS"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib Wininet.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateManifest="true"\r
-+                              IgnoreDefaultLibraryNames=""\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              AdditionalOptions="/D INTERNAL_EXPAT"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../..,../..,../../include,../../lib/util/include"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;ABYSS_WIN32;CURL_STATICLIB;_CRT_SECURE_NO_WARNINGS"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib Wininet.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateManifest="true"\r
-+                              IgnoreDefaultLibraryNames=""\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              AdditionalOptions="/D INTERNAL_EXPAT"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;ABYSS_WIN32;CURL_STATICLIB;_CRT_SECURE_NO_WARNINGS"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib Wininet.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateManifest="true"\r
-+                              IgnoreDefaultLibraryNames=""\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              AdditionalOptions="/D INTERNAL_EXPAT"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../..,../..,../../include,../../lib/util/include"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;ABYSS_WIN32;CURL_STATICLIB;_CRT_SECURE_NO_WARNINGS"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib Wininet.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateManifest="true"\r
-+                              IgnoreDefaultLibraryNames=""\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\test\base64.cpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\test\registry.cpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\test\server_abyss.cpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\test\server_pstream.cpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\socketpair.cpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\test\test.cpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\test\testclient_dummy.cpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\test\tools.cpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\test\value.cpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\test\xml.cpp"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\test\base64.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\test\registry.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\test\server_abyss.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\test\server_pstream.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\test\testclient.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\test\tools.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\test\value.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\test\xml.hpp"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Resource Files"\r
-+                      Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
-+                      >\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/gennmtab.vcproj b/libs/xmlrpc-c/Windows/dll/gennmtab.vcproj
-new file mode 100644
-index 0000000..0336147
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/gennmtab.vcproj
-@@ -0,0 +1,449 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="gennmtab"\r
-+      ProjectGUID="{99BD200E-A4D5-4ED4-9D00-A6A19EFE1412}"\r
-+      RootNamespace="gennmtab"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-+                              HeaderFileName=""\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../.."\r
-+                              PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"\r
-+                              MinimalRebuild="true"\r
-+                              RuntimeLibrary="0"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="2057"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="2"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              Description="(D) Generating nametab.h ..."\r
-+                              CommandLine="$(OutDir)\$(ProjectName).exe &gt;..\..\lib\expat\xmltok\nametab.h"\r
-+                              ExcludedFromBuild="false"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-+                              HeaderFileName=""\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../.."\r
-+                              PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="0"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="2057"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              Description="(R) Generating nametab.h ..."\r
-+                              CommandLine="$(OutDir)\$(ProjectName).exe &gt;..\..\lib\expat\xmltok\nametab.h"\r
-+                              ExcludedFromBuild="false"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                              TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-+                              HeaderFileName=""\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../.."\r
-+                              PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"\r
-+                              MinimalRebuild="true"\r
-+                              RuntimeLibrary="0"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="2057"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="2"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              Description="(D) Generating nametab.h ..."\r
-+                              CommandLine="$(OutDir)\$(ProjectName).exe &gt;..\..\lib\expat\xmltok\nametab.h"\r
-+                              ExcludedFromBuild="false"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                              TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-+                              HeaderFileName=""\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../.."\r
-+                              PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="0"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="2057"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              Description="(R) Generating nametab.h ..."\r
-+                              CommandLine="$(OutDir)\$(ProjectName).exe &gt;..\..\lib\expat\xmltok\nametab.h"\r
-+                              ExcludedFromBuild="false"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\lib\expat\gennmtab\gennmtab.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl;fi;fd"\r
-+                      >\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Resource Files"\r
-+                      Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"\r
-+                      >\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/rpctest.vcproj b/libs/xmlrpc-c/Windows/dll/rpctest.vcproj
-new file mode 100644
-index 0000000..3b5bfba
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/rpctest.vcproj
-@@ -0,0 +1,574 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="rpctest"\r
-+      ProjectGUID="{4CFB235E-56AE-4BF2-BE67-8FD4AF5F1722}"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../..;../..;../../include;../../lib/util/include;../../lib/expat/xmlparse"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;ABYSS_WIN32"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              Description="Copy test files"\r
-+                              CommandLine="if not exist $OutDir)\data md $(OutDir)\data&#x0D;&#x0A;copy ..\..\src\test\data\*.* $(OutDir)\data&#x0D;&#x0A;"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..;../../include;../../lib/util/include;../../..;../../lib/expat/xmlparse"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;ABYSS_WIN32"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(IntDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              Description="Copy test files"\r
-+                              CommandLine="if not exist $(OutDir)\data md $(OutDir)\data&#x0D;&#x0A;copy ..\..\src\test\data\*.* $(OutDir)\data&#x0D;&#x0A;"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../..;../..;../../include;../../lib/util/include;../../lib/expat/xmlparse"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;ABYSS_WIN32"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              Description="Copy test files"\r
-+                              CommandLine="if not exist $OutDir)\data md $(OutDir)\data&#x0D;&#x0A;copy ..\..\src\test\data\*.* $(OutDir)\data&#x0D;&#x0A;"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..;../../include;../../lib/util/include;../../..;../../lib/expat/xmlparse"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;ABYSS_WIN32"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(IntDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              Description="Copy test files"\r
-+                              CommandLine="if not exist $(OutDir)\data md $(OutDir)\data&#x0D;&#x0A;copy ..\..\src\test\data\*.* $(OutDir)\data&#x0D;&#x0A;"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\abyss.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\util\casprintf.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\cgi.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\client.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\method_registry.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\parse_xml.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\serialize.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\serialize_value.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\server_abyss.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\test.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\testtool.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\value.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\value_datetime.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\xml_data.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_expat.c"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\abyss.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\cgi.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\client.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\method_registry.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\parse_xml.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\serialize.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\serialize_value.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\server_abyss.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\test.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\testtool.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\value.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\value_datetime.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\test\xml_data.h"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="TestFiles"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\src\testdata\http-req-simple.txt"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\testdata\req_no_params.xml"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\testdata\req_out_of_order.xml"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\testdata\req_value_name.xml"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Resource Files"\r
-+                      Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
-+                      >\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/sample_add_asynch_client.vcproj b/libs/xmlrpc-c/Windows/dll/sample_add_asynch_client.vcproj
-new file mode 100644
-index 0000000..d5145ae
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/sample_add_asynch_client.vcproj
-@@ -0,0 +1,443 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="sample_add_asynch_client"\r
-+      ProjectGUID="{2D4A179E-E2BA-4ED9-934E-7E54C08F1652}"\r
-+      RootNamespace="sample_add_asynch_client"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              HeaderFileName=""\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="odbc32.lib odbccp32.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              HeaderFileName=""\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="WinInet.lib odbc32.lib odbccp32.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                              HeaderFileName=""\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="odbc32.lib odbccp32.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                              HeaderFileName=""\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="WinInet.lib odbc32.lib odbccp32.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\examples\xmlrpc_asynch_client.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Resource Files"\r
-+                      Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
-+                      >\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/sample_add_server.vcproj b/libs/xmlrpc-c/Windows/dll/sample_add_server.vcproj
-new file mode 100644
-index 0000000..6060a06
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/sample_add_server.vcproj
-@@ -0,0 +1,433 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="sample_add_server"\r
-+      ProjectGUID="{BEEB1B9C-BAF4-4B54-AB51-891156301702}"\r
-+      RootNamespace="sample_add_server"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;ABYSS_WIN32;_THREAD"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;ABYSS_WIN32;_THREAD"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;ABYSS_WIN32;_THREAD"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;ABYSS_WIN32;_THREAD"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\examples\xmlrpc_sample_add_server.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Resource Files"\r
-+                      Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
-+                      >\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/sample_add_server_w32httpsys.vcproj b/libs/xmlrpc-c/Windows/dll/sample_add_server_w32httpsys.vcproj
-new file mode 100644
-index 0000000..e4e7a74
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/sample_add_server_w32httpsys.vcproj
-@@ -0,0 +1,433 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="sample_add_server_w32httpsys"\r
-+      ProjectGUID="{B6887828-9480-4D4D-9CFC-AE4980D41707}"\r
-+      RootNamespace="sample_add_server_w32httpsys"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;ABYSS_WIN32;_THREAD"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;ABYSS_WIN32;_THREAD"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;ABYSS_WIN32;_THREAD"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;ABYSS_WIN32;_THREAD"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\examples\xmlrpc_sample_add_server_w32httpsys.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Resource Files"\r
-+                      Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
-+                      >\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/sample_add_sync_client.vcproj b/libs/xmlrpc-c/Windows/dll/sample_add_sync_client.vcproj
-new file mode 100644
-index 0000000..9151e8e
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/sample_add_sync_client.vcproj
-@@ -0,0 +1,435 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="sample_add_sync_client"\r
-+      ProjectGUID="{A7A81BBD-C84D-479A-A9BD-194ADA3B1710}"\r
-+      RootNamespace="sample_add_sync_client"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(IntDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(IntDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\examples\xmlrpc_sample_add_client.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Resource Files"\r
-+                      Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
-+                      >\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/sample_auth_client.vcproj b/libs/xmlrpc-c/Windows/dll/sample_auth_client.vcproj
-new file mode 100644
-index 0000000..07aeb90
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/sample_auth_client.vcproj
-@@ -0,0 +1,435 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="sample_auth_client"\r
-+      ProjectGUID="{29A2BBC4-9ED9-4162-817C-FEEB36FB1714}"\r
-+      RootNamespace="sample_auth_client"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(IntDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(IntDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../..,../../include,../../lib/util/include,../../.."\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\examples\auth_client.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Resource Files"\r
-+                      Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
-+                      >\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/tool_xmlrpc-transport.vcproj b/libs/xmlrpc-c/Windows/dll/tool_xmlrpc-transport.vcproj
-new file mode 100644
-index 0000000..1f35057
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/tool_xmlrpc-transport.vcproj
-@@ -0,0 +1,430 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="xmlrpc_transport"\r
-+      ProjectGUID="{4CFB235E-56AE-4BF2-BE67-8FD4AF5F1942}"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../..;../..;../../include;../../lib/util/include;../../lib/expat/xmlparse;../../tools/lib/include"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;ABYSS_WIN32"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              CommandLine=""\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..;../../include;../../lib/util/include;../../..;../../lib/expat/xmlparse;../../tools/lib/include"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;ABYSS_WIN32"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(IntDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              CommandLine=""\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../..;../..;../../include;../../lib/util/include;../../lib/expat/xmlparse;../../tools/lib/include"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;ABYSS_WIN32"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              CommandLine=""\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..;../../include;../../lib/util/include;../../..;../../lib/expat/xmlparse;../../tools/lib/include"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;ABYSS_WIN32"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(IntDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              CommandLine=""\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\lib\util\casprintf.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\util\cmdline_parser.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\tools\lib\dumpvalue.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\util\getoptx.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\util\string_parser.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\util\stripcaseeq.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\tools\xmlrpc_transport\xmlrpc_transport.c"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Resource Files"\r
-+                      Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
-+                      >\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/tool_xmlrpc.vcproj b/libs/xmlrpc-c/Windows/dll/tool_xmlrpc.vcproj
-new file mode 100644
-index 0000000..9708e11
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/tool_xmlrpc.vcproj
-@@ -0,0 +1,430 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="xmlrpc"\r
-+      ProjectGUID="{4CFB235E-56AE-4BF2-BE67-8FD4AF5F1940}"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../..;../..;../../include;../../lib/util/include;../../lib/expat/xmlparse;../../tools/lib/include"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;ABYSS_WIN32"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              CommandLine=""\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..;../../include;../../lib/util/include;../../..;../../lib/expat/xmlparse;../../tools/lib/include"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;ABYSS_WIN32"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(IntDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="1"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              CommandLine=""\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../..;../..;../../include;../../lib/util/include;../../lib/expat/xmlparse;../../tools/lib/include"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;ABYSS_WIN32"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              CommandLine=""\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="1"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../..;../../include;../../lib/util/include;../../..;../../lib/expat/xmlparse;../../tools/lib/include"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;ABYSS_WIN32"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).exe"\r
-+                              LinkIncremental="1"\r
-+                              SuppressStartupBanner="true"\r
-+                              ProgramDatabaseFile="$(IntDir)\$(ProjectName).pdb"\r
-+                              SubSystem="1"\r
-+                              RandomizedBaseAddress="1"\r
-+                              DataExecutionPrevention="0"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                              CommandLine=""\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\lib\util\casprintf.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\util\cmdline_parser.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\tools\lib\dumpvalue.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\util\getoptx.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\util\string_parser.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\util\stripcaseeq.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\tools\xmlrpc\xmlrpc.c"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Resource Files"\r
-+                      Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
-+                      >\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/xmlrpc.sln b/libs/xmlrpc-c/Windows/dll/xmlrpc.sln
-new file mode 100644
-index 0000000..814b373
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/xmlrpc.sln
-@@ -0,0 +1,327 @@
-+\r
-+Microsoft Visual Studio Solution File, Format Version 10.00\r
-+# Visual Studio 2008\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxmlrpc_xmlparse", "xmlrpc_xmlparse.vcproj", "{40B0756D-AFEE-4A38-9F38-A372CE431404}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {BD9F6041-A272-462D-8C41-87CEF1F11408} = {BD9F6041-A272-462D-8C41-87CEF1F11408}\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxmlrpc_xmltok", "xmlrpc_xmltok.vcproj", "{BD9F6041-A272-462D-8C41-87CEF1F11408}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {99BD200E-A4D5-4ED4-9D00-A6A19EFE1412} = {99BD200E-A4D5-4ED4-9D00-A6A19EFE1412}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gennmtab", "gennmtab.vcproj", "{99BD200E-A4D5-4ED4-9D00-A6A19EFE1412}"\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxmlrpc_util", "xmlrpc_util.vcproj", "{29FBABB6-E36A-4559-9514-B3DAF6AE1416}"\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxmlrpc", "xmlrpc.vcproj", "{226AB06F-60CA-4B21-9040-C6ECC0581522}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {40B0756D-AFEE-4A38-9F38-A372CE431404} = {40B0756D-AFEE-4A38-9F38-A372CE431404}\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxmlrpc_abyss", "xmlrpc_abyss.vcproj", "{20A8F64B-F738-4D32-A798-A65AD8291541}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxmlrpc_server", "xmlrpc_server.vcproj", "{74B67128-BC84-4BCB-A256-9286B6371552}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522} = {226AB06F-60CA-4B21-9040-C6ECC0581522}\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxmlrpc_server_abyss", "xmlrpc_server_abyss.vcproj", "{E98186CB-F1B0-40A6-87A5-77B13A3F1600}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {74B67128-BC84-4BCB-A256-9286B6371552} = {74B67128-BC84-4BCB-A256-9286B6371552}\r
-+              {20A8F64B-F738-4D32-A798-A65AD8291541} = {20A8F64B-F738-4D32-A798-A65AD8291541}\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522} = {226AB06F-60CA-4B21-9040-C6ECC0581522}\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxmlrpc_server_cgi", "xmlrpc_server_cgi.vcproj", "{A2AAAF37-F382-4A11-8D86-53B589921616}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {74B67128-BC84-4BCB-A256-9286B6371552} = {74B67128-BC84-4BCB-A256-9286B6371552}\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522} = {226AB06F-60CA-4B21-9040-C6ECC0581522}\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxmlrpc_server_w32httpsys", "xmlrpc_server_w32httpsys.vcproj", "{0EECB080-FC8F-4C46-9FB7-5DB22F9D1622}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {74B67128-BC84-4BCB-A256-9286B6371552} = {74B67128-BC84-4BCB-A256-9286B6371552}\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522} = {226AB06F-60CA-4B21-9040-C6ECC0581522}\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxmlrpc_client", "xmlrpc_client.vcproj", "{28BB53D9-D487-41DF-BBB3-FDB5846D1630}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522} = {226AB06F-60CA-4B21-9040-C6ECC0581522}\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sample_add_asynch_client", "sample_add_asynch_client.vcproj", "{2D4A179E-E2BA-4ED9-934E-7E54C08F1652}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522} = {226AB06F-60CA-4B21-9040-C6ECC0581522}\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+              {28BB53D9-D487-41DF-BBB3-FDB5846D1630} = {28BB53D9-D487-41DF-BBB3-FDB5846D1630}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sample_add_server", "sample_add_server.vcproj", "{BEEB1B9C-BAF4-4B54-AB51-891156301702}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {74B67128-BC84-4BCB-A256-9286B6371552} = {74B67128-BC84-4BCB-A256-9286B6371552}\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522} = {226AB06F-60CA-4B21-9040-C6ECC0581522}\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+              {E98186CB-F1B0-40A6-87A5-77B13A3F1600} = {E98186CB-F1B0-40A6-87A5-77B13A3F1600}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sample_add_server_w32httpsys", "sample_add_server_w32httpsys.vcproj", "{B6887828-9480-4D4D-9CFC-AE4980D41707}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {74B67128-BC84-4BCB-A256-9286B6371552} = {74B67128-BC84-4BCB-A256-9286B6371552}\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522} = {226AB06F-60CA-4B21-9040-C6ECC0581522}\r
-+              {0EECB080-FC8F-4C46-9FB7-5DB22F9D1622} = {0EECB080-FC8F-4C46-9FB7-5DB22F9D1622}\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sample_add_sync_client", "sample_add_sync_client.vcproj", "{A7A81BBD-C84D-479A-A9BD-194ADA3B1710}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522} = {226AB06F-60CA-4B21-9040-C6ECC0581522}\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+              {28BB53D9-D487-41DF-BBB3-FDB5846D1630} = {28BB53D9-D487-41DF-BBB3-FDB5846D1630}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sample_auth_client", "sample_auth_client.vcproj", "{29A2BBC4-9ED9-4162-817C-FEEB36FB1714}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522} = {226AB06F-60CA-4B21-9040-C6ECC0581522}\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+              {28BB53D9-D487-41DF-BBB3-FDB5846D1630} = {28BB53D9-D487-41DF-BBB3-FDB5846D1630}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rpctest", "rpctest.vcproj", "{4CFB235E-56AE-4BF2-BE67-8FD4AF5F1722}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {74B67128-BC84-4BCB-A256-9286B6371552} = {74B67128-BC84-4BCB-A256-9286B6371552}\r
-+              {20A8F64B-F738-4D32-A798-A65AD8291541} = {20A8F64B-F738-4D32-A798-A65AD8291541}\r
-+              {40B0756D-AFEE-4A38-9F38-A372CE431404} = {40B0756D-AFEE-4A38-9F38-A372CE431404}\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522} = {226AB06F-60CA-4B21-9040-C6ECC0581522}\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+              {E98186CB-F1B0-40A6-87A5-77B13A3F1600} = {E98186CB-F1B0-40A6-87A5-77B13A3F1600}\r
-+              {28BB53D9-D487-41DF-BBB3-FDB5846D1630} = {28BB53D9-D487-41DF-BBB3-FDB5846D1630}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxmlrpc++", "xmlrpc__.vcproj", "{3E7064F3-6200-4C39-85BE-775931D21828}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {74B67128-BC84-4BCB-A256-9286B6371552} = {74B67128-BC84-4BCB-A256-9286B6371552}\r
-+              {20A8F64B-F738-4D32-A798-A65AD8291541} = {20A8F64B-F738-4D32-A798-A65AD8291541}\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522} = {226AB06F-60CA-4B21-9040-C6ECC0581522}\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+              {E98186CB-F1B0-40A6-87A5-77B13A3F1600} = {E98186CB-F1B0-40A6-87A5-77B13A3F1600}\r
-+              {28BB53D9-D487-41DF-BBB3-FDB5846D1630} = {28BB53D9-D487-41DF-BBB3-FDB5846D1630}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpptest", "cpptest.vcproj", "{26FB3E14-7E0C-4B0C-AB1E-CFE4B48A1856}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {74B67128-BC84-4BCB-A256-9286B6371552} = {74B67128-BC84-4BCB-A256-9286B6371552}\r
-+              {20A8F64B-F738-4D32-A798-A65AD8291541} = {20A8F64B-F738-4D32-A798-A65AD8291541}\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522} = {226AB06F-60CA-4B21-9040-C6ECC0581522}\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+              {28BB53D9-D487-41DF-BBB3-FDB5846D1630} = {28BB53D9-D487-41DF-BBB3-FDB5846D1630}\r
-+              {3E7064F3-6200-4C39-85BE-775931D21828} = {3E7064F3-6200-4C39-85BE-775931D21828}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlrpc", "tool_xmlrpc.vcproj", "{4CFB235E-56AE-4BF2-BE67-8FD4AF5F1940}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522} = {226AB06F-60CA-4B21-9040-C6ECC0581522}\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+              {28BB53D9-D487-41DF-BBB3-FDB5846D1630} = {28BB53D9-D487-41DF-BBB3-FDB5846D1630}\r
-+      EndProjectSection\r
-+EndProject\r
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlrpc_transport", "tool_xmlrpc-transport.vcproj", "{4CFB235E-56AE-4BF2-BE67-8FD4AF5F1942}"\r
-+      ProjectSection(ProjectDependencies) = postProject\r
-+              {74B67128-BC84-4BCB-A256-9286B6371552} = {74B67128-BC84-4BCB-A256-9286B6371552}\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522} = {226AB06F-60CA-4B21-9040-C6ECC0581522}\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416} = {29FBABB6-E36A-4559-9514-B3DAF6AE1416}\r
-+              {28BB53D9-D487-41DF-BBB3-FDB5846D1630} = {28BB53D9-D487-41DF-BBB3-FDB5846D1630}\r
-+      EndProjectSection\r
-+EndProject\r
-+Global\r
-+      GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
-+              Debug|Win32 = Debug|Win32\r
-+              Debug|x64 = Debug|x64\r
-+              Release|Win32 = Release|Win32\r
-+              Release|x64 = Release|x64\r
-+      EndGlobalSection\r
-+      GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
-+              {40B0756D-AFEE-4A38-9F38-A372CE431404}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {40B0756D-AFEE-4A38-9F38-A372CE431404}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {40B0756D-AFEE-4A38-9F38-A372CE431404}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {40B0756D-AFEE-4A38-9F38-A372CE431404}.Debug|x64.Build.0 = Debug|x64\r
-+              {40B0756D-AFEE-4A38-9F38-A372CE431404}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {40B0756D-AFEE-4A38-9F38-A372CE431404}.Release|Win32.Build.0 = Release|Win32\r
-+              {40B0756D-AFEE-4A38-9F38-A372CE431404}.Release|x64.ActiveCfg = Release|x64\r
-+              {40B0756D-AFEE-4A38-9F38-A372CE431404}.Release|x64.Build.0 = Release|x64\r
-+              {BD9F6041-A272-462D-8C41-87CEF1F11408}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {BD9F6041-A272-462D-8C41-87CEF1F11408}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {BD9F6041-A272-462D-8C41-87CEF1F11408}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {BD9F6041-A272-462D-8C41-87CEF1F11408}.Debug|x64.Build.0 = Debug|x64\r
-+              {BD9F6041-A272-462D-8C41-87CEF1F11408}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {BD9F6041-A272-462D-8C41-87CEF1F11408}.Release|Win32.Build.0 = Release|Win32\r
-+              {BD9F6041-A272-462D-8C41-87CEF1F11408}.Release|x64.ActiveCfg = Release|x64\r
-+              {BD9F6041-A272-462D-8C41-87CEF1F11408}.Release|x64.Build.0 = Release|x64\r
-+              {99BD200E-A4D5-4ED4-9D00-A6A19EFE1412}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {99BD200E-A4D5-4ED4-9D00-A6A19EFE1412}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {99BD200E-A4D5-4ED4-9D00-A6A19EFE1412}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {99BD200E-A4D5-4ED4-9D00-A6A19EFE1412}.Debug|x64.Build.0 = Debug|x64\r
-+              {99BD200E-A4D5-4ED4-9D00-A6A19EFE1412}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {99BD200E-A4D5-4ED4-9D00-A6A19EFE1412}.Release|Win32.Build.0 = Release|Win32\r
-+              {99BD200E-A4D5-4ED4-9D00-A6A19EFE1412}.Release|x64.ActiveCfg = Release|x64\r
-+              {99BD200E-A4D5-4ED4-9D00-A6A19EFE1412}.Release|x64.Build.0 = Release|x64\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416}.Debug|x64.Build.0 = Debug|x64\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416}.Release|Win32.Build.0 = Release|Win32\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416}.Release|x64.ActiveCfg = Release|x64\r
-+              {29FBABB6-E36A-4559-9514-B3DAF6AE1416}.Release|x64.Build.0 = Release|x64\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522}.Debug|x64.Build.0 = Debug|x64\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522}.Release|Win32.Build.0 = Release|Win32\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522}.Release|x64.ActiveCfg = Release|x64\r
-+              {226AB06F-60CA-4B21-9040-C6ECC0581522}.Release|x64.Build.0 = Release|x64\r
-+              {20A8F64B-F738-4D32-A798-A65AD8291541}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {20A8F64B-F738-4D32-A798-A65AD8291541}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {20A8F64B-F738-4D32-A798-A65AD8291541}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {20A8F64B-F738-4D32-A798-A65AD8291541}.Debug|x64.Build.0 = Debug|x64\r
-+              {20A8F64B-F738-4D32-A798-A65AD8291541}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {20A8F64B-F738-4D32-A798-A65AD8291541}.Release|Win32.Build.0 = Release|Win32\r
-+              {20A8F64B-F738-4D32-A798-A65AD8291541}.Release|x64.ActiveCfg = Release|x64\r
-+              {20A8F64B-F738-4D32-A798-A65AD8291541}.Release|x64.Build.0 = Release|x64\r
-+              {74B67128-BC84-4BCB-A256-9286B6371552}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {74B67128-BC84-4BCB-A256-9286B6371552}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {74B67128-BC84-4BCB-A256-9286B6371552}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {74B67128-BC84-4BCB-A256-9286B6371552}.Debug|x64.Build.0 = Debug|x64\r
-+              {74B67128-BC84-4BCB-A256-9286B6371552}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {74B67128-BC84-4BCB-A256-9286B6371552}.Release|Win32.Build.0 = Release|Win32\r
-+              {74B67128-BC84-4BCB-A256-9286B6371552}.Release|x64.ActiveCfg = Release|x64\r
-+              {74B67128-BC84-4BCB-A256-9286B6371552}.Release|x64.Build.0 = Release|x64\r
-+              {E98186CB-F1B0-40A6-87A5-77B13A3F1600}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {E98186CB-F1B0-40A6-87A5-77B13A3F1600}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {E98186CB-F1B0-40A6-87A5-77B13A3F1600}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {E98186CB-F1B0-40A6-87A5-77B13A3F1600}.Debug|x64.Build.0 = Debug|x64\r
-+              {E98186CB-F1B0-40A6-87A5-77B13A3F1600}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {E98186CB-F1B0-40A6-87A5-77B13A3F1600}.Release|Win32.Build.0 = Release|Win32\r
-+              {E98186CB-F1B0-40A6-87A5-77B13A3F1600}.Release|x64.ActiveCfg = Release|x64\r
-+              {E98186CB-F1B0-40A6-87A5-77B13A3F1600}.Release|x64.Build.0 = Release|x64\r
-+              {A2AAAF37-F382-4A11-8D86-53B589921616}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {A2AAAF37-F382-4A11-8D86-53B589921616}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {A2AAAF37-F382-4A11-8D86-53B589921616}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {A2AAAF37-F382-4A11-8D86-53B589921616}.Debug|x64.Build.0 = Debug|x64\r
-+              {A2AAAF37-F382-4A11-8D86-53B589921616}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {A2AAAF37-F382-4A11-8D86-53B589921616}.Release|Win32.Build.0 = Release|Win32\r
-+              {A2AAAF37-F382-4A11-8D86-53B589921616}.Release|x64.ActiveCfg = Release|x64\r
-+              {A2AAAF37-F382-4A11-8D86-53B589921616}.Release|x64.Build.0 = Release|x64\r
-+              {0EECB080-FC8F-4C46-9FB7-5DB22F9D1622}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {0EECB080-FC8F-4C46-9FB7-5DB22F9D1622}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {0EECB080-FC8F-4C46-9FB7-5DB22F9D1622}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {0EECB080-FC8F-4C46-9FB7-5DB22F9D1622}.Debug|x64.Build.0 = Debug|x64\r
-+              {0EECB080-FC8F-4C46-9FB7-5DB22F9D1622}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {0EECB080-FC8F-4C46-9FB7-5DB22F9D1622}.Release|Win32.Build.0 = Release|Win32\r
-+              {0EECB080-FC8F-4C46-9FB7-5DB22F9D1622}.Release|x64.ActiveCfg = Release|x64\r
-+              {0EECB080-FC8F-4C46-9FB7-5DB22F9D1622}.Release|x64.Build.0 = Release|x64\r
-+              {28BB53D9-D487-41DF-BBB3-FDB5846D1630}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {28BB53D9-D487-41DF-BBB3-FDB5846D1630}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {28BB53D9-D487-41DF-BBB3-FDB5846D1630}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {28BB53D9-D487-41DF-BBB3-FDB5846D1630}.Debug|x64.Build.0 = Debug|x64\r
-+              {28BB53D9-D487-41DF-BBB3-FDB5846D1630}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {28BB53D9-D487-41DF-BBB3-FDB5846D1630}.Release|Win32.Build.0 = Release|Win32\r
-+              {28BB53D9-D487-41DF-BBB3-FDB5846D1630}.Release|x64.ActiveCfg = Release|x64\r
-+              {28BB53D9-D487-41DF-BBB3-FDB5846D1630}.Release|x64.Build.0 = Release|x64\r
-+              {2D4A179E-E2BA-4ED9-934E-7E54C08F1652}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {2D4A179E-E2BA-4ED9-934E-7E54C08F1652}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {2D4A179E-E2BA-4ED9-934E-7E54C08F1652}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {2D4A179E-E2BA-4ED9-934E-7E54C08F1652}.Debug|x64.Build.0 = Debug|x64\r
-+              {2D4A179E-E2BA-4ED9-934E-7E54C08F1652}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {2D4A179E-E2BA-4ED9-934E-7E54C08F1652}.Release|Win32.Build.0 = Release|Win32\r
-+              {2D4A179E-E2BA-4ED9-934E-7E54C08F1652}.Release|x64.ActiveCfg = Release|x64\r
-+              {2D4A179E-E2BA-4ED9-934E-7E54C08F1652}.Release|x64.Build.0 = Release|x64\r
-+              {BEEB1B9C-BAF4-4B54-AB51-891156301702}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {BEEB1B9C-BAF4-4B54-AB51-891156301702}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {BEEB1B9C-BAF4-4B54-AB51-891156301702}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {BEEB1B9C-BAF4-4B54-AB51-891156301702}.Debug|x64.Build.0 = Debug|x64\r
-+              {BEEB1B9C-BAF4-4B54-AB51-891156301702}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {BEEB1B9C-BAF4-4B54-AB51-891156301702}.Release|Win32.Build.0 = Release|Win32\r
-+              {BEEB1B9C-BAF4-4B54-AB51-891156301702}.Release|x64.ActiveCfg = Release|x64\r
-+              {BEEB1B9C-BAF4-4B54-AB51-891156301702}.Release|x64.Build.0 = Release|x64\r
-+              {B6887828-9480-4D4D-9CFC-AE4980D41707}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {B6887828-9480-4D4D-9CFC-AE4980D41707}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {B6887828-9480-4D4D-9CFC-AE4980D41707}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {B6887828-9480-4D4D-9CFC-AE4980D41707}.Debug|x64.Build.0 = Debug|x64\r
-+              {B6887828-9480-4D4D-9CFC-AE4980D41707}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {B6887828-9480-4D4D-9CFC-AE4980D41707}.Release|Win32.Build.0 = Release|Win32\r
-+              {B6887828-9480-4D4D-9CFC-AE4980D41707}.Release|x64.ActiveCfg = Release|x64\r
-+              {B6887828-9480-4D4D-9CFC-AE4980D41707}.Release|x64.Build.0 = Release|x64\r
-+              {A7A81BBD-C84D-479A-A9BD-194ADA3B1710}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {A7A81BBD-C84D-479A-A9BD-194ADA3B1710}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {A7A81BBD-C84D-479A-A9BD-194ADA3B1710}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {A7A81BBD-C84D-479A-A9BD-194ADA3B1710}.Debug|x64.Build.0 = Debug|x64\r
-+              {A7A81BBD-C84D-479A-A9BD-194ADA3B1710}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {A7A81BBD-C84D-479A-A9BD-194ADA3B1710}.Release|Win32.Build.0 = Release|Win32\r
-+              {A7A81BBD-C84D-479A-A9BD-194ADA3B1710}.Release|x64.ActiveCfg = Release|x64\r
-+              {A7A81BBD-C84D-479A-A9BD-194ADA3B1710}.Release|x64.Build.0 = Release|x64\r
-+              {29A2BBC4-9ED9-4162-817C-FEEB36FB1714}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {29A2BBC4-9ED9-4162-817C-FEEB36FB1714}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {29A2BBC4-9ED9-4162-817C-FEEB36FB1714}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {29A2BBC4-9ED9-4162-817C-FEEB36FB1714}.Debug|x64.Build.0 = Debug|x64\r
-+              {29A2BBC4-9ED9-4162-817C-FEEB36FB1714}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {29A2BBC4-9ED9-4162-817C-FEEB36FB1714}.Release|Win32.Build.0 = Release|Win32\r
-+              {29A2BBC4-9ED9-4162-817C-FEEB36FB1714}.Release|x64.ActiveCfg = Release|x64\r
-+              {29A2BBC4-9ED9-4162-817C-FEEB36FB1714}.Release|x64.Build.0 = Release|x64\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1722}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1722}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1722}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1722}.Debug|x64.Build.0 = Debug|x64\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1722}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1722}.Release|Win32.Build.0 = Release|Win32\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1722}.Release|x64.ActiveCfg = Release|x64\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1722}.Release|x64.Build.0 = Release|x64\r
-+              {3E7064F3-6200-4C39-85BE-775931D21828}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {3E7064F3-6200-4C39-85BE-775931D21828}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {3E7064F3-6200-4C39-85BE-775931D21828}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {3E7064F3-6200-4C39-85BE-775931D21828}.Debug|x64.Build.0 = Debug|x64\r
-+              {3E7064F3-6200-4C39-85BE-775931D21828}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {3E7064F3-6200-4C39-85BE-775931D21828}.Release|Win32.Build.0 = Release|Win32\r
-+              {3E7064F3-6200-4C39-85BE-775931D21828}.Release|x64.ActiveCfg = Release|x64\r
-+              {3E7064F3-6200-4C39-85BE-775931D21828}.Release|x64.Build.0 = Release|x64\r
-+              {26FB3E14-7E0C-4B0C-AB1E-CFE4B48A1856}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {26FB3E14-7E0C-4B0C-AB1E-CFE4B48A1856}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {26FB3E14-7E0C-4B0C-AB1E-CFE4B48A1856}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {26FB3E14-7E0C-4B0C-AB1E-CFE4B48A1856}.Debug|x64.Build.0 = Debug|x64\r
-+              {26FB3E14-7E0C-4B0C-AB1E-CFE4B48A1856}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {26FB3E14-7E0C-4B0C-AB1E-CFE4B48A1856}.Release|Win32.Build.0 = Release|Win32\r
-+              {26FB3E14-7E0C-4B0C-AB1E-CFE4B48A1856}.Release|x64.ActiveCfg = Release|x64\r
-+              {26FB3E14-7E0C-4B0C-AB1E-CFE4B48A1856}.Release|x64.Build.0 = Release|x64\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1940}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1940}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1940}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1940}.Debug|x64.Build.0 = Debug|x64\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1940}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1940}.Release|Win32.Build.0 = Release|Win32\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1940}.Release|x64.ActiveCfg = Release|x64\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1940}.Release|x64.Build.0 = Release|x64\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1942}.Debug|Win32.ActiveCfg = Debug|Win32\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1942}.Debug|Win32.Build.0 = Debug|Win32\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1942}.Debug|x64.ActiveCfg = Debug|x64\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1942}.Debug|x64.Build.0 = Debug|x64\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1942}.Release|Win32.ActiveCfg = Release|Win32\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1942}.Release|Win32.Build.0 = Release|Win32\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1942}.Release|x64.ActiveCfg = Release|x64\r
-+              {4CFB235E-56AE-4BF2-BE67-8FD4AF5F1942}.Release|x64.Build.0 = Release|x64\r
-+      EndGlobalSection\r
-+      GlobalSection(SolutionProperties) = preSolution\r
-+              HideSolutionNode = FALSE\r
-+      EndGlobalSection\r
-+EndGlobal\r
-diff --git a/libs/xmlrpc-c/Windows/dll/xmlrpc.vcproj b/libs/xmlrpc-c/Windows/dll/xmlrpc.vcproj
-new file mode 100644
-index 0000000..bd1515e
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/xmlrpc.vcproj
-@@ -0,0 +1,479 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="libxmlrpc"\r
-+      ProjectGUID="{226AB06F-60CA-4B21-9040-C6ECC0581522}"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              ShowProgress="0"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              ShowProgress="0"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\src\double.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\parse_datetime.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\parse_value.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\resource.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\trace.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\version.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_array.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_base64.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_build.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_data.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_datetime.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_decompose.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_expat.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_parse.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_serialize.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_string.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_struct.c"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\base.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\base_int.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\c_util.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\config.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\double.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\parse_datetime.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\parse_value.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\registry.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\string_int.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\system_method.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\util.h"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/xmlrpc__.vcproj b/libs/xmlrpc-c/Windows/dll/xmlrpc__.vcproj
-new file mode 100644
-index 0000000..7f2732b
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/xmlrpc__.vcproj
-@@ -0,0 +1,1296 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="libxmlrpc++"\r
-+      ProjectGUID="{3E7064F3-6200-4C39-85BE-775931D21828}"\r
-+      RootNamespace="xmlrpc++"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/curl_transport,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport,../../.."\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              RuntimeTypeInfo="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib Wininet.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).dll"\r
-+                              IgnoreDefaultLibraryNames=""\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/curl_transport,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport,../../.."\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;$(NOINHERIT)"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              RuntimeTypeInfo="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib Wininet.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).dll"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/curl_transport,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport,../../.."\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              RuntimeTypeInfo="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib Wininet.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).dll"\r
-+                              IgnoreDefaultLibraryNames=""\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/curl_transport,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport,../../.."\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;$(NOINHERIT)"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              RuntimeTypeInfo="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib Wininet.lib"\r
-+                              OutputFile="$(OutDir)\$(ProjectName).dll"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\base64.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\client.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\client_simple.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\curl.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\env_wrap.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\fault.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\girerr.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\girmem.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\libwww.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\outcome.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\packetsocket.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\param_list.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\pstream.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\util\pthreadx_win32.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\registry.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\server_abyss.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\server_cgi.cpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\server_pstream.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\server_pstream_conn.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\value.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\wininet.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\xml.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\wininet_transport\xmlrpc_wininet_transport.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\XmlRpcCpp.cpp"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\base.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\base64.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\client.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\client_simple.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\client_transport.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\cpp\env_wrap.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\girerr.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\girmem.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\oldcppwrapper.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\packetsocket.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\registry.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\server_abyss.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\server_cgi.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\server_pstream.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\timeout.hpp"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\xml.hpp"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/xmlrpc_abyss.vcproj b/libs/xmlrpc-c/Windows/dll/xmlrpc_abyss.vcproj
-new file mode 100644
-index 0000000..366acde
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/xmlrpc_abyss.vcproj
-@@ -0,0 +1,1342 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="libxmlrpc_abyss"\r
-+      ProjectGUID="{20A8F64B-F738-4D32-A798-A65AD8291541}"\r
-+      RootNamespace="xmlrpc_abyss"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="..\..\,..\..\include,..\..\lib\util\include"\r
-+                              PreprocessorDefinitions="WIN32;_DEBUG;_LIB;ABYSS_WIN32;_THREAD"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalOptions="ws2_32.lib"\r
-+                              GenerateManifest="false"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="..\..\,..\..\include,..\..\lib\util\include"\r
-+                              PreprocessorDefinitions="WIN32;NDEBUG;_LIB;ABYSS_WIN32;_THREAD"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalOptions="ws2_32.lib"\r
-+                              GenerateManifest="false"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="..\..\,..\..\include,..\..\lib\util\include"\r
-+                              PreprocessorDefinitions="WIN32;_DEBUG;_LIB;ABYSS_WIN32;_THREAD"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalOptions="ws2_32.lib"\r
-+                              GenerateManifest="false"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="..\..\,..\..\include,..\..\lib\util\include"\r
-+                              PreprocessorDefinitions="WIN32;NDEBUG;_LIB;ABYSS_WIN32;_THREAD"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalOptions="ws2_32.lib"\r
-+                              GenerateManifest="false"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\channel.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\chanswitch.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\conf.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\conn.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\data.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\date.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\file.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\handler.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\http.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\init.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\response.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\server.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\session.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\socket.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\socket_openssl.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      ExcludedFromBuild="true"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      ExcludedFromBuild="true"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      ExcludedFromBuild="true"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      ExcludedFromBuild="true"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\socket_unix.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      ExcludedFromBuild="true"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      ExcludedFromBuild="true"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      ExcludedFromBuild="true"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      ExcludedFromBuild="true"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\socket_win.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\thread_fork.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      ExcludedFromBuild="true"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      ExcludedFromBuild="true"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      ExcludedFromBuild="true"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      ExcludedFromBuild="true"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\thread_pthread.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      ExcludedFromBuild="true"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      ExcludedFromBuild="true"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      ExcludedFromBuild="true"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      ExcludedFromBuild="true"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\thread_windows.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\token.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\trace.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\abyss.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\abyss_info.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\abyss_winsock.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\channel.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\chanswitch.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\conn.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\data.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\date.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\file.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\handler.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\http.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\server.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\session.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\socket.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\socket_win.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\thread.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\token.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\abyss\src\trace.h"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/xmlrpc_client.vcproj b/libs/xmlrpc-c/Windows/dll/xmlrpc_client.vcproj
-new file mode 100644
-index 0000000..b8424f2
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/xmlrpc_client.vcproj
-@@ -0,0 +1,425 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="libxmlrpc_client"\r
-+      ProjectGUID="{28BB53D9-D487-41DF-BBB3-FDB5846D1630}"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="wininet.lib"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="wininet.lib"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="wininet.lib"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="wininet.lib"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\lib\util\pthreadx_win32.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_client.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_client_global.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_server_info.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\wininet_transport\xmlrpc_wininet_transport.c"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\base.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\base_int.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\c_util.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\client.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\client_global.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\config.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\server.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\string_int.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\util.h"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/xmlrpc_server.vcproj b/libs/xmlrpc-c/Windows/dll/xmlrpc_server.vcproj
-new file mode 100644
-index 0000000..d1d7ff5
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/xmlrpc_server.vcproj
-@@ -0,0 +1,413 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="libxmlrpc_server"\r
-+      ProjectGUID="{74B67128-BC84-4BCB-A256-9286B6371552}"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\src\method.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\registry.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\system_method.c"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\base.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\base_int.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\c_util.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\config.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\method.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\server.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\string_int.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\src\system_method.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\util.h"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/xmlrpc_server_abyss.vcproj b/libs/xmlrpc-c/Windows/dll/xmlrpc_server_abyss.vcproj
-new file mode 100644
-index 0000000..4c71bc4
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/xmlrpc_server_abyss.vcproj
-@@ -0,0 +1,401 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="libxmlrpc_server_abyss"\r
-+      ProjectGUID="{E98186CB-F1B0-40A6-87A5-77B13A3F1600}"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_server_abyss.c"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\base.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\base_int.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\c_util.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\config.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\server.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\server_abyss.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\string_int.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\util.h"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/xmlrpc_server_cgi.vcproj b/libs/xmlrpc-c/Windows/dll/xmlrpc_server_cgi.vcproj
-new file mode 100644
-index 0000000..2eb2fae
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/xmlrpc_server_cgi.vcproj
-@@ -0,0 +1,401 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="libxmlrpc_server_cgi"\r
-+      ProjectGUID="{A2AAAF37-F382-4A11-8D86-53B589921616}"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_server_cgi.c"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\base.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\base_int.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\c_util.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\config.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\server.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\server_cgi.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\string_int.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\util.h"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/xmlrpc_server_w32httpsys.vcproj b/libs/xmlrpc-c/Windows/dll/xmlrpc_server_w32httpsys.vcproj
-new file mode 100644
-index 0000000..3e1fab7
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/xmlrpc_server_w32httpsys.vcproj
-@@ -0,0 +1,405 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="libxmlrpc_server_w32httpsys"\r
-+      ProjectGUID="{0EECB080-FC8F-4C46-9FB7-5DB22F9D1622}"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="&quot;C:\Program Files (x86)\Microsoft SDKs\Windows\v5.0\Include\&quot;;../../lib;../../lib/util/include;../../include;../..;../../lib/expat/xmlparse;../../lib/abyss/src;../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="&quot;C:\Program Files (x86)\Microsoft SDKs\Windows\v5.0\Include\&quot;;../../lib;../../lib/util/include;../../include;../..;../../lib/expat/xmlparse;../../lib/abyss/src;../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="&quot;C:\Program Files (x86)\Microsoft SDKs\Windows\v5.0\Include\&quot;;../../lib;../../lib/util/include;../../include;../..;../../lib/expat/xmlparse;../../lib/abyss/src;../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="&quot;C:\Program Files (x86)\Microsoft SDKs\Windows\v5.0\Include\&quot;;../../lib;../../lib/util/include;../../include;../..;../../lib/expat/xmlparse;../../lib/abyss/src;../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\src\xmlrpc_server_w32httpsys.c"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\base.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\base_int.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\c_util.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\config.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\server.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\server_cgi.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\server_w32httpsys.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\string_int.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\util.h"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/xmlrpc_util.vcproj b/libs/xmlrpc-c/Windows/dll/xmlrpc_util.vcproj
-new file mode 100644
-index 0000000..1f7670f
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/xmlrpc_util.vcproj
-@@ -0,0 +1,449 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="libxmlrpc_util"\r
-+      ProjectGUID="{29FBABB6-E36A-4559-9514-B3DAF6AE1416}"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib"\r
-+                              ShowProgress="0"\r
-+                              GenerateManifest="false"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              MapExports="true"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib"\r
-+                              ShowProgress="0"\r
-+                              GenerateManifest="false"\r
-+                              MapExports="true"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib"\r
-+                              ShowProgress="0"\r
-+                              GenerateManifest="false"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              MapExports="true"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="../../lib,../../lib/util/include,../../include,../..,../../lib/expat/xmlparse,../../lib/abyss/src,../../lib/wininet_transport"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              AdditionalDependencies="ws2_32.lib"\r
-+                              ShowProgress="0"\r
-+                              GenerateManifest="false"\r
-+                              MapExports="true"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\lib\libutil\asprintf.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\libutil\base64.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\libutil\error.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\libutil\make_printable.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\libutil\memblock.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\libutil\select.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\libutil\sleep.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\libutil\string_number.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\libutil\time.c"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\libutil\utf8.c"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\base64_int.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\select_int.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\sleep_int.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\string_int.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\string_number.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\time_int.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\include\xmlrpc-c\util.h"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/xmlrpc_xmlparse.vcproj b/libs/xmlrpc-c/Windows/dll/xmlrpc_xmlparse.vcproj
-new file mode 100644
-index 0000000..2254c3e
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/xmlrpc_xmlparse.vcproj
-@@ -0,0 +1,417 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="libxmlrpc_xmlparse"\r
-+      ProjectGUID="{40B0756D-AFEE-4A38-9F38-A372CE431404}"\r
-+      RootNamespace="xmlparse"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="..\..\lib\expat\xmltok;..\..\lib\expat\xmlwf;..\..\lib\util\include;..\..\include;..\..\"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;XML_DTD;_LIB;$(NOINHERIT)"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              Profile="false"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="..\..\lib\expat\xmltok,..\..\lib\expat\xmlwf,..\..\,..\..\lib\util\include,..\..\include"\r
-+                              PreprocessorDefinitions="WIN32;_WINDOWS;XML_DTD;_LIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="..\..\lib\expat\xmltok;..\..\lib\expat\xmlwf;..\..\lib\util\include;..\..\include;..\..\"\r
-+                              PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;XML_DTD;_LIB;$(NOINHERIT)"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                              Profile="false"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="..\..\lib\expat\xmltok,..\..\lib\expat\xmlwf,..\..\,..\..\lib\util\include,..\..\include"\r
-+                              PreprocessorDefinitions="WIN32;_WINDOWS;XML_DTD;_LIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\lib\expat\xmlparse\xmlparse.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl;fi;fd"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\lib\expat\xmlparse\xmlparse.h"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Resource Files"\r
-+                      Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"\r
-+                      >\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/dll/xmlrpc_xmltok.vcproj b/libs/xmlrpc-c/Windows/dll/xmlrpc_xmltok.vcproj
-new file mode 100644
-index 0000000..0e2c4b7
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/dll/xmlrpc_xmltok.vcproj
-@@ -0,0 +1,483 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioProject\r
-+      ProjectType="Visual C++"\r
-+      Version="9,00"\r
-+      Name="libxmlrpc_xmltok"\r
-+      ProjectGUID="{BD9F6041-A272-462D-8C41-87CEF1F11408}"\r
-+      RootNamespace="xmltok"\r
-+      TargetFrameworkVersion="0"\r
-+      >\r
-+      <Platforms>\r
-+              <Platform\r
-+                      Name="Win32"\r
-+              />\r
-+              <Platform\r
-+                      Name="x64"\r
-+              />\r
-+      </Platforms>\r
-+      <ToolFiles>\r
-+      </ToolFiles>\r
-+      <Configurations>\r
-+              <Configuration\r
-+                      Name="Debug|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="..\..;..\..\lib\util\include;..\..\include"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="4"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|Win32"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="..\..,..\..\lib\util\include,..\..\include"\r
-+                              PreprocessorDefinitions="NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Debug|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="0"\r
-+                              AdditionalIncludeDirectories="..\..;..\..\lib\util\include;..\..\include"\r
-+                              PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB"\r
-+                              MinimalRebuild="true"\r
-+                              BasicRuntimeChecks="3"\r
-+                              RuntimeLibrary="3"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                              DebugInformationFormat="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="_DEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              GenerateDebugInformation="true"\r
-+                              ProgramDatabaseFile="$(OutDir)\$(ProjectName).pdb"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+              <Configuration\r
-+                      Name="Release|x64"\r
-+                      OutputDirectory="..\..\bin\$(ConfigurationName)-$(PlatformName)\"\r
-+                      IntermediateDirectory="..\..\temp\$(PlatformName)\$(ConfigurationName)\$(ProjectName)\"\r
-+                      ConfigurationType="2"\r
-+                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
-+                      UseOfMFC="0"\r
-+                      ATLMinimizesCRunTimeLibraryUsage="false"\r
-+                      CharacterSet="2"\r
-+                      >\r
-+                      <Tool\r
-+                              Name="VCPreBuildEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCustomBuildTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXMLDataGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCWebServiceProxyGeneratorTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCMIDLTool"\r
-+                              TargetEnvironment="3"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCCLCompilerTool"\r
-+                              Optimization="2"\r
-+                              InlineFunctionExpansion="1"\r
-+                              AdditionalIncludeDirectories="..\..,..\..\lib\util\include,..\..\include"\r
-+                              PreprocessorDefinitions="NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB"\r
-+                              StringPooling="true"\r
-+                              RuntimeLibrary="2"\r
-+                              EnableFunctionLevelLinking="true"\r
-+                              PrecompiledHeaderFile="$(IntDir)\$(ProjectName).pch"\r
-+                              AssemblerListingLocation="$(IntDir)\"\r
-+                              ObjectFile="$(IntDir)\"\r
-+                              ProgramDataBaseFileName="$(IntDir)\"\r
-+                              WarningLevel="3"\r
-+                              SuppressStartupBanner="true"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManagedResourceCompilerTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCResourceCompilerTool"\r
-+                              PreprocessorDefinitions="NDEBUG"\r
-+                              Culture="1033"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPreLinkEventTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCLinkerTool"\r
-+                              ImportLibrary="$(OutDir)\$(ProjectName).lib"\r
-+                              TargetMachine="17"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCALinkTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCManifestTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCXDCMakeTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCBscMakeTool"\r
-+                              SuppressStartupBanner="true"\r
-+                              OutputFile="$(IntDir)\$(ProjectName).bsc"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCFxCopTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCAppVerifierTool"\r
-+                      />\r
-+                      <Tool\r
-+                              Name="VCPostBuildEventTool"\r
-+                      />\r
-+              </Configuration>\r
-+      </Configurations>\r
-+      <References>\r
-+      </References>\r
-+      <Files>\r
-+              <Filter\r
-+                      Name="Source Files"\r
-+                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\lib\expat\xmltok\xmlrole.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\expat\xmltok\xmltok.c"\r
-+                              >\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|Win32"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Debug|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                              <FileConfiguration\r
-+                                      Name="Release|x64"\r
-+                                      >\r
-+                                      <Tool\r
-+                                              Name="VCCLCompilerTool"\r
-+                                              AdditionalIncludeDirectories=""\r
-+                                              PreprocessorDefinitions=""\r
-+                                      />\r
-+                              </FileConfiguration>\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Header Files"\r
-+                      Filter="h;hpp;hxx;hm;inl;fi;fd"\r
-+                      >\r
-+                      <File\r
-+                              RelativePath="..\..\lib\expat\xmltok\asciitab.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\expat\xmltok\iasciitab.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\expat\xmltok\latin1tab.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\expat\xmltok\nametab.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\expat\xmltok\utf8tab.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\expat\xmltok\xmldef.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\expat\xmltok\xmlrole.h"\r
-+                              >\r
-+                      </File>\r
-+                      <File\r
-+                              RelativePath="..\..\lib\expat\xmltok\xmltok.h"\r
-+                              >\r
-+                      </File>\r
-+              </Filter>\r
-+              <Filter\r
-+                      Name="Resource Files"\r
-+                      Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"\r
-+                      >\r
-+              </Filter>\r
-+      </Files>\r
-+      <Globals>\r
-+      </Globals>\r
-+</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/gennmtab.2008.vcproj b/libs/xmlrpc-c/Windows/gennmtab.2008.vcproj
-deleted file mode 100644
-index c4460dd..0000000
---- a/libs/xmlrpc-c/Windows/gennmtab.2008.vcproj
-+++ /dev/null
-@@ -1,242 +0,0 @@
--<?xml version="1.0" encoding="Windows-1252"?>\r
--<VisualStudioProject\r
--      ProjectType="Visual C++"\r
--      Version="9.00"\r
--      Name="gennmtab"\r
--      ProjectGUID="{A6F149DA-CD8D-4E8E-B914-25DFFE6269A7}"\r
--      RootNamespace="gennmtab"\r
--      TargetFrameworkVersion="131072"\r
--      >\r
--      <Platforms>\r
--              <Platform\r
--                      Name="Win32"\r
--              />\r
--      </Platforms>\r
--      <ToolFiles>\r
--      </ToolFiles>\r
--      <Configurations>\r
--              <Configuration\r
--                      Name="Debug|Win32"\r
--                      OutputDirectory=".\Debug\gennmtab"\r
--                      IntermediateDirectory=".\Debug\gennmtab"\r
--                      ConfigurationType="1"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                              TypeLibraryName=".\Debug\gennmtab/gennmtab.tlb"\r
--                              HeaderFileName=""\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="0"\r
--                              AdditionalIncludeDirectories="..;."\r
--                              PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"\r
--                              MinimalRebuild="true"\r
--                              RuntimeLibrary="1"\r
--                              PrecompiledHeaderFile=".\Debug\gennmtab/gennmtab.pch"\r
--                              AssemblerListingLocation=".\Debug\gennmtab/"\r
--                              ObjectFile=".\Debug\gennmtab/"\r
--                              ProgramDataBaseFileName=".\Debug\gennmtab/"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                              DebugInformationFormat="4"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="_DEBUG"\r
--                              Culture="2057"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLinkerTool"\r
--                              OutputFile="..\bin\gennmtabD.exe"\r
--                              LinkIncremental="2"\r
--                              SuppressStartupBanner="true"\r
--                              GenerateDebugInformation="true"\r
--                              ProgramDatabaseFile=".\Debug\gennmtab/gennmtabD.pdb"\r
--                              SubSystem="1"\r
--                              RandomizedBaseAddress="1"\r
--                              DataExecutionPrevention="0"\r
--                              TargetMachine="1"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManifestTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Debug\gennmtab/gennmtab.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCAppVerifierTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                              Description="(D) Generating nametab.h ..."\r
--                              CommandLine="..\bin\gennmtabD.exe &gt;..\lib\expat\xmltok\nametab.h"\r
--                      />\r
--              </Configuration>\r
--              <Configuration\r
--                      Name="Release|Win32"\r
--                      OutputDirectory=".\Release\gennmtab"\r
--                      IntermediateDirectory=".\Release\gennmtab"\r
--                      ConfigurationType="1"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                              TypeLibraryName=".\Release\gennmtab/gennmtab.tlb"\r
--                              HeaderFileName=""\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="2"\r
--                              InlineFunctionExpansion="1"\r
--                              AdditionalIncludeDirectories="..;."\r
--                              PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"\r
--                              StringPooling="true"\r
--                              RuntimeLibrary="0"\r
--                              EnableFunctionLevelLinking="true"\r
--                              PrecompiledHeaderFile=".\Release\gennmtab/gennmtab.pch"\r
--                              AssemblerListingLocation=".\Release\gennmtab/"\r
--                              ObjectFile=".\Release\gennmtab/"\r
--                              ProgramDataBaseFileName=".\Release\gennmtab/"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="NDEBUG"\r
--                              Culture="2057"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLinkerTool"\r
--                              OutputFile="..\bin\gennmtab.exe"\r
--                              LinkIncremental="1"\r
--                              SuppressStartupBanner="true"\r
--                              ProgramDatabaseFile=".\Release\gennmtab/gennmtab.pdb"\r
--                              SubSystem="1"\r
--                              RandomizedBaseAddress="1"\r
--                              DataExecutionPrevention="0"\r
--                              TargetMachine="1"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManifestTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Release\gennmtab/gennmtab.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCAppVerifierTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                              Description="(R) Generating nametab.h ..."\r
--                              CommandLine="..\bin\gennmtab.exe &gt;..\lib\expat\xmltok\nametab.h"\r
--                      />\r
--              </Configuration>\r
--      </Configurations>\r
--      <References>\r
--      </References>\r
--      <Files>\r
--              <Filter\r
--                      Name="Source Files"\r
--                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"\r
--                      >\r
--                      <File\r
--                              RelativePath="..\lib\expat\gennmtab\gennmtab.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--              </Filter>\r
--              <Filter\r
--                      Name="Header Files"\r
--                      Filter="h;hpp;hxx;hm;inl;fi;fd"\r
--                      >\r
--              </Filter>\r
--              <Filter\r
--                      Name="Resource Files"\r
--                      Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"\r
--                      >\r
--              </Filter>\r
--      </Files>\r
--      <Globals>\r
--      </Globals>\r
--</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/mkvers.bat b/libs/xmlrpc-c/Windows/mkvers.bat
-index 2f6ec1b..3d2fb7f 100644
---- a/libs/xmlrpc-c/Windows/mkvers.bat
-+++ b/libs/xmlrpc-c/Windows/mkvers.bat
-@@ -1,9 +1,9 @@
- @if EXIST ..\version.h goto SHOW\r
--@if NOT EXIST ..\Makefile.version goto ERR1\r
-+@if NOT EXIST ..\version.mk goto ERR1\r
- @if NOT EXIST mkvers1.bat goto ERR2\r
- @echo updating/creating ..\version.h ...\r
- @set TEMP1=1\r
--@for /F "skip=8 tokens=3" %%i in (..\Makefile.version) do @call mkvers1 %%i\r
-+@for /F "skip=8 tokens=3" %%i in (..\version.mk) do @call mkvers1 %%i\r
- @if "%TEMPX1%." == "." goto NOX1\r
- @if "%TEMPX2%." == "." goto NOX1\r
- @if "%TEMPX3%." == "." goto NOX1\r
-@@ -11,7 +11,7 @@
- @echo #ifndef XMLRPC_C_VERSION_INCLUDED > %TEMP1%\r
- @echo #define XMLRPC_C_VERSION_INCLUDED >> %TEMP1%\r
- @echo /* generated by Windows/mkvers.bat on %DATE% ... */ >> %TEMP1%\r
--@echo #define XMLRPC_C_VERSION "Xmlrpc-c %TEMPX1%.%TEMPX2%.%TEMPX3%" >> %TEMP1%\r
-+@echo #define XMLRPC_C_VERSION "%TEMPX1%.%TEMPX2%.%TEMPX3%" >> %TEMP1%\r
- @echo #define XMLRPC_VERSION_MAJOR %TEMPX1% >> %TEMP1%\r
- @echo #define XMLRPC_VERSION_MINOR %TEMPX2% >> %TEMP1%\r
- @echo #define XMLRPC_VERSION_POINT %TEMPX3% >> %TEMP1%\r
-@@ -35,7 +35,7 @@ type %TEMP1%
\r
\r
- :ERR1\r
--@echo Can not locate ..\Makefile.version ... check name, location ...\r
-+@echo Can not locate ..\version.mk ... check name, location ...\r
- @pause\r
- @goto END\r
- :ERR2\r
-diff --git a/libs/xmlrpc-c/Windows/query_meerkat.dsp b/libs/xmlrpc-c/Windows/query_meerkat.dsp
-deleted file mode 100644
-index 2ffb15b..0000000
---- a/libs/xmlrpc-c/Windows/query_meerkat.dsp
-+++ /dev/null
-@@ -1,100 +0,0 @@
--# Microsoft Developer Studio Project File - Name="query_meerkat" - Package Owner=<4>
--# Microsoft Developer Studio Generated Build File, Format Version 6.00
--# ** DO NOT EDIT **
--
--# TARGTYPE "Win32 (x86) Console Application" 0x0103
--
--CFG=query_meerkat - Win32 Debug
--!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 "query_meerkat.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 "query_meerkat.mak" CFG="query_meerkat - Win32 Debug"
--!MESSAGE 
--!MESSAGE Possible choices for configuration are:
--!MESSAGE 
--!MESSAGE "query_meerkat - Win32 Release" (based on "Win32 (x86) Console Application")
--!MESSAGE "query_meerkat - Win32 Debug" (based on "Win32 (x86) Console Application")
--!MESSAGE 
--
--# Begin Project
--# PROP AllowPerConfigDependencies 0
--# PROP Scc_ProjName "query_meerkat"
--# PROP Scc_LocalPath ".."
--CPP=cl.exe
--RSC=rc.exe
--
--!IF  "$(CFG)" == "query_meerkat - 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\query_meerkat"
--# PROP Intermediate_Dir "Release\query_meerkat"
--# PROP Target_Dir ""
--# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
--# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\\" /I "..\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /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
--LINK32=link.exe
--# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
--# ADD LINK32 ..\lib\xmlrpc.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib WinInet.lib /nologo /subsystem:console /machine:I386 /out:"..\bin\query_meerkat.exe"
--
--!ELSEIF  "$(CFG)" == "query_meerkat - 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\query_meerkat"
--# PROP Intermediate_Dir "Debug\query_meerkat"
--# PROP Target_Dir ""
--# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
--# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\\" /I "..\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
--# ADD BASE RSC /l 0x409 /d "_DEBUG"
--# ADD RSC /l 0x409 /d "_DEBUG"
--BSC32=bscmake.exe
--# ADD BASE BSC32 /nologo
--# ADD BSC32 /nologo
--LINK32=link.exe
--# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
--# ADD LINK32 ..\lib\xmlrpcD.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib WinInet.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\bin\query_meerkatD.exe" /pdbtype:sept
--
--!ENDIF 
--
--# Begin Target
--
--# Name "query_meerkat - Win32 Release"
--# Name "query_meerkat - Win32 Debug"
--# Begin Group "Source Files"
--
--# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
--# Begin Source File
--
--SOURCE="..\examples\query-meerkat.c"
--# End Source File
--# End Group
--# Begin Group "Header Files"
--
--# PROP Default_Filter "h;hpp;hxx;hm;inl"
--# End Group
--# Begin Group "Resource Files"
--
--# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
--# End Group
--# End Target
--# End Project
-diff --git a/libs/xmlrpc-c/Windows/rpctest.dsp b/libs/xmlrpc-c/Windows/rpctest.dsp
-index 159692c..aa8fc4c 100644
---- a/libs/xmlrpc-c/Windows/rpctest.dsp
-+++ b/libs/xmlrpc-c/Windows/rpctest.dsp
-@@ -143,6 +143,14 @@ SOURCE=..\src\test\value.c
- # End Source File\r
- # Begin Source File\r
\r
-+SOURCE=..\src\test\value_datetime.c\r
-+# End Source File\r
-+# Begin Source File\r
-+\r
-+SOURCE=..\src\test\value_datetime.h\r
-+# End Source File\r
-+# Begin Source File\r
-+\r
- SOURCE=..\src\test\xml_data.c\r
- # End Source File\r
- # End Group\r
-diff --git a/libs/xmlrpc-c/Windows/socketpair.cpp b/libs/xmlrpc-c/Windows/socketpair.cpp
-new file mode 100644
-index 0000000..77310eb
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/socketpair.cpp
-@@ -0,0 +1,71 @@
-+#include <winsock2.h>
-+
-+
-+int
-+xmlrpc_win32_socketpair(int    const domain,
-+                        int    const type,
-+                        int    const protocol,
-+                        SOCKET       socks[2]) {
-+    bool error;
-+
-+    error = false;  // initial value
-+
-+    SOCKET listener;
-+    listener = socket(AF_INET, SOCK_STREAM, 0);
-+    if (listener == INVALID_SOCKET)
-+        error = true;
-+    else {
-+        struct sockaddr_in addr;
-+        memset(&addr, 0, sizeof(addr));
-+        addr.sin_family = AF_INET;
-+        addr.sin_addr.s_addr = htonl(0x7f000001);
-+        addr.sin_port = 0;
-+
-+        int rc;
-+        rc = bind(listener, (const struct sockaddr*) &addr, sizeof(addr));
-+        if (rc == SOCKET_ERROR)
-+            error = true;
-+        else {
-+            int addrlen;
-+            int rc;
-+            addrlen = sizeof(addr);  // initial value
-+            rc = getsockname(listener, (struct sockaddr*) &addr, &addrlen);
-+            if (rc == SOCKET_ERROR)
-+                error = true;
-+            else {
-+                int rc;
-+
-+                rc = listen(listener, 1);
-+                if (rc == SOCKET_ERROR)
-+                    error = true;
-+                else {
-+                    socks[0] = socket(AF_INET, SOCK_STREAM, 0);
-+                    if (socks[0] == INVALID_SOCKET)
-+                        error = true;
-+                    else {
-+                        int rc;
-+                        rc = connect(socks[0],
-+                                     (const struct sockaddr*) &addr,
-+                                     sizeof(addr));
-+                        if (rc == SOCKET_ERROR)
-+                            error = true;
-+                        else {
-+                            socks[1] = accept(listener, NULL, NULL);
-+                            if (socks[1] == INVALID_SOCKET)
-+                                error = true;
-+                        }
-+                        if (error)
-+                            closesocket(socks[0]);
-+                    }
-+                }
-+            }
-+        }
-+        closesocket(listener);
-+    }
-+    
-+    return error ? -1 : 0;
-+}
-+
-+
-+
-+
-diff --git a/libs/xmlrpc-c/Windows/transport_config.h b/libs/xmlrpc-c/Windows/transport_config.h
-deleted file mode 100644
-index 2642168..0000000
---- a/libs/xmlrpc-c/Windows/transport_config.h
-+++ /dev/null
-@@ -1,13 +0,0 @@
--/* Win32 version of transport_config.h.\r
--\r
--   For other platforms, this is generated automatically, but for Windows,\r
--   someone generates it manually.  Nonetheless, we keep it looking as much\r
--   as possible like the automatically generated one to make it easier to\r
--   maintain (e.g. you can compare the two and see why something builds\r
--   differently for Windows that for some other platform).\r
--*/\r
--#define MUST_BUILD_WININET_CLIENT 1\r
--#define MUST_BUILD_CURL_CLIENT 0\r
--#define MUST_BUILD_LIBWWW_CLIENT 0\r
--static const char * const XMLRPC_DEFAULT_TRANSPORT =\r
--"wininet";\r
-diff --git a/libs/xmlrpc-c/Windows/transport_config_win32.h b/libs/xmlrpc-c/Windows/transport_config_win32.h
-index 54bb9b5..2642168 100644
---- a/libs/xmlrpc-c/Windows/transport_config_win32.h
-+++ b/libs/xmlrpc-c/Windows/transport_config_win32.h
-@@ -1,13 +1,13 @@
--/* Win32 version of transport_config.h.
--
--   For other platforms, this is generated automatically, but for Windows,
--   someone generates it manually.  Nonetheless, we keep it looking as much
--   as possible like the automatically generated one to make it easier to
--   maintain (e.g. you can compare the two and see why something builds
--   differently for Windows that for some other platform).
--*/
--#define MUST_BUILD_WININET_CLIENT 1
--#define MUST_BUILD_CURL_CLIENT 0
--#define MUST_BUILD_LIBWWW_CLIENT 0
--static const char * const XMLRPC_DEFAULT_TRANSPORT =
--"wininet";
-+/* Win32 version of transport_config.h.\r
-+\r
-+   For other platforms, this is generated automatically, but for Windows,\r
-+   someone generates it manually.  Nonetheless, we keep it looking as much\r
-+   as possible like the automatically generated one to make it easier to\r
-+   maintain (e.g. you can compare the two and see why something builds\r
-+   differently for Windows that for some other platform).\r
-+*/\r
-+#define MUST_BUILD_WININET_CLIENT 1\r
-+#define MUST_BUILD_CURL_CLIENT 0\r
-+#define MUST_BUILD_LIBWWW_CLIENT 0\r
-+static const char * const XMLRPC_DEFAULT_TRANSPORT =\r
-+"wininet";\r
-diff --git a/libs/xmlrpc-c/Windows/win32_config.h b/libs/xmlrpc-c/Windows/win32_config.h
-index aabf9c2..d0df55b 100644
---- a/libs/xmlrpc-c/Windows/win32_config.h
-+++ b/libs/xmlrpc-c/Windows/win32_config.h
-@@ -20,19 +20,23 @@
-   #define XMLRPC_SOCKET SOCKET\r
-   #define XMLRPC_HAVE_TIMEVAL 0\r
-   #define XMLRPC_HAVE_TIMESPEC 0\r
-+  #define XMLRPC_HAVE_PTHREAD 0\r
- #else\r
-   #define XMLRPC_SOCKET int\r
-   #define XMLRPC_HAVE_TIMEVAL 1\r
-   #define XMLRPC_HAVE_TIMESPEC 1\r
-+  #define XMLRPC_HAVE_PTHREAD 1\r
- #endif\r
\r
- #if defined(_MSC_VER)\r
-   /* Newer MSVC has long long, but MSVC 6 does not */\r
-   #define XMLRPC_INT64 __int64\r
-   #define XMLRPC_INT32 __int32\r
-+  #define XMLRPC_PRId64 PRId64\r
- #else\r
-   #define XMLRPC_INT64 long long\r
-   #define XMLRPC_INT32 int\r
-+  #define XMLRPC_PRId64 "I64d"\r
- #endif\r
- #endif\r
\r
-diff --git a/libs/xmlrpc-c/Windows/xmlparse.2008.vcproj b/libs/xmlrpc-c/Windows/xmlparse.2008.vcproj
-deleted file mode 100644
-index 15adb11..0000000
---- a/libs/xmlrpc-c/Windows/xmlparse.2008.vcproj
-+++ /dev/null
-@@ -1,387 +0,0 @@
--<?xml version="1.0" encoding="Windows-1252"?>\r
--<VisualStudioProject\r
--      ProjectType="Visual C++"\r
--      Version="9.00"\r
--      Name="xmlparse"\r
--      ProjectGUID="{0D108721-EAE8-4BAF-8102-D8960EC93647}"\r
--      RootNamespace="xmlparse"\r
--      TargetFrameworkVersion="131072"\r
--      >\r
--      <Platforms>\r
--              <Platform\r
--                      Name="Win32"\r
--              />\r
--              <Platform\r
--                      Name="x64"\r
--              />\r
--      </Platforms>\r
--      <ToolFiles>\r
--      </ToolFiles>\r
--      <Configurations>\r
--              <Configuration\r
--                      Name="Release|Win32"\r
--                      OutputDirectory=".\Release\xmlparse"\r
--                      IntermediateDirectory=".\Release\xmlparse"\r
--                      ConfigurationType="4"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      CharacterSet="2"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="2"\r
--                              InlineFunctionExpansion="1"\r
--                              AdditionalIncludeDirectories="..\lib\expat\xmltok,..\lib\expat\xmlwf,..,..\lib\util\include,..\include,."\r
--                              PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;XML_DTD;_LIB"\r
--                              StringPooling="true"\r
--                              RuntimeLibrary="0"\r
--                              EnableFunctionLevelLinking="true"\r
--                              PrecompiledHeaderFile=".\Release\xmlparse/xmlparse.pch"\r
--                              AssemblerListingLocation=".\Release\xmlparse/"\r
--                              ObjectFile=".\Release\xmlparse/"\r
--                              ProgramDataBaseFileName=".\Release\xmlparse/"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="NDEBUG"\r
--                              Culture="1033"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLibrarianTool"\r
--                              OutputFile="..\lib\xmlparse.lib"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Release\xmlparse/xmlparse.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                      />\r
--              </Configuration>\r
--              <Configuration\r
--                      Name="Release|x64"\r
--                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
--                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
--                      ConfigurationType="4"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      CharacterSet="2"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                              TargetEnvironment="3"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="2"\r
--                              InlineFunctionExpansion="1"\r
--                              AdditionalIncludeDirectories="..\lib\expat\xmltok,..\lib\expat\xmlwf,..,..\lib\util\include,..\include,."\r
--                              PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;XML_DTD;_LIB"\r
--                              StringPooling="true"\r
--                              RuntimeLibrary="0"\r
--                              EnableFunctionLevelLinking="true"\r
--                              PrecompiledHeaderFile=".\Release\xmlparse/xmlparse.pch"\r
--                              ObjectFile="$(IntDir)\xmlparse\"\r
--                              ProgramDataBaseFileName="$(IntDir)\xmlparse\vc90.pdb"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="NDEBUG"\r
--                              Culture="1033"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLibrarianTool"\r
--                              OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmlparse.lib"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Release\xmlparse/xmlparse.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                      />\r
--              </Configuration>\r
--              <Configuration\r
--                      Name="Debug|Win32"\r
--                      OutputDirectory=".\Debug\xmlparse"\r
--                      IntermediateDirectory=".\Debug\xmlparse"\r
--                      ConfigurationType="4"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      CharacterSet="2"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="0"\r
--                              AdditionalIncludeDirectories="..\lib\expat\xmltok,..\lib\expat\xmlwf,..,..\lib\util\include,..\include,."\r
--                              PreprocessorDefinitions="WIN32;_WINDOWS;XML_DTD;_LIB"\r
--                              MinimalRebuild="true"\r
--                              BasicRuntimeChecks="3"\r
--                              RuntimeLibrary="3"\r
--                              PrecompiledHeaderFile=".\Debug\xmlparse/xmlparse.pch"\r
--                              AssemblerListingLocation=".\Debug\xmlparse/"\r
--                              ObjectFile=".\Debug\xmlparse/"\r
--                              ProgramDataBaseFileName=".\Debug\xmlparse/"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                              DebugInformationFormat="3"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="_DEBUG"\r
--                              Culture="1033"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLibrarianTool"\r
--                              OutputFile="..\lib\xmlparseD.lib"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Debug\xmlparse/xmlparse.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                      />\r
--              </Configuration>\r
--              <Configuration\r
--                      Name="Debug|x64"\r
--                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
--                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
--                      ConfigurationType="4"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      CharacterSet="2"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                              TargetEnvironment="3"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="0"\r
--                              AdditionalIncludeDirectories="..\lib\expat\xmltok,..\lib\expat\xmlwf,..,..\lib\util\include,..\include,."\r
--                              PreprocessorDefinitions="WIN32;_WINDOWS;XML_DTD;_LIB"\r
--                              MinimalRebuild="true"\r
--                              BasicRuntimeChecks="3"\r
--                              RuntimeLibrary="3"\r
--                              PrecompiledHeaderFile=".\Debug\xmlparse/xmlparse.pch"\r
--                              ObjectFile="$(IntDir)\xmlparse\"\r
--                              ProgramDataBaseFileName="$(IntDir)\xmlparse\vc90.pdb"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                              DebugInformationFormat="3"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="_DEBUG"\r
--                              Culture="1033"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLibrarianTool"\r
--                              OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmlparseD.lib"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Debug\xmlparse/xmlparse.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                      />\r
--              </Configuration>\r
--      </Configurations>\r
--      <References>\r
--      </References>\r
--      <Files>\r
--              <Filter\r
--                      Name="Source Files"\r
--                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"\r
--                      >\r
--                      <File\r
--                              RelativePath="..\lib\expat\xmlparse\xmlparse.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--              </Filter>\r
--              <Filter\r
--                      Name="Header Files"\r
--                      Filter="h;hpp;hxx;hm;inl;fi;fd"\r
--                      >\r
--                      <File\r
--                              RelativePath="..\lib\expat\xmlparse\xmlparse.h"\r
--                              >\r
--                      </File>\r
--              </Filter>\r
--              <Filter\r
--                      Name="Resource Files"\r
--                      Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"\r
--                      >\r
--              </Filter>\r
--      </Files>\r
--      <Globals>\r
--      </Globals>\r
--</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/xmlparse.2010.vcxproj b/libs/xmlrpc-c/Windows/xmlparse.2010.vcxproj
-deleted file mode 100644
-index a747e32..0000000
---- a/libs/xmlrpc-c/Windows/xmlparse.2010.vcxproj
-+++ /dev/null
-@@ -1,198 +0,0 @@
--<?xml version="1.0" encoding="utf-8"?>\r
--<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
--  <ItemGroup Label="ProjectConfigurations">\r
--    <ProjectConfiguration Include="Debug|Win32">\r
--      <Configuration>Debug</Configuration>\r
--      <Platform>Win32</Platform>\r
--    </ProjectConfiguration>\r
--    <ProjectConfiguration Include="Debug|x64">\r
--      <Configuration>Debug</Configuration>\r
--      <Platform>x64</Platform>\r
--    </ProjectConfiguration>\r
--    <ProjectConfiguration Include="Release|Win32">\r
--      <Configuration>Release</Configuration>\r
--      <Platform>Win32</Platform>\r
--    </ProjectConfiguration>\r
--    <ProjectConfiguration Include="Release|x64">\r
--      <Configuration>Release</Configuration>\r
--      <Platform>x64</Platform>\r
--    </ProjectConfiguration>\r
--  </ItemGroup>\r
--  <PropertyGroup Label="Globals">\r
--    <ProjectName>xmlparse</ProjectName>\r
--    <ProjectGuid>{0D108721-EAE8-4BAF-8102-D8960EC93647}</ProjectGuid>\r
--    <RootNamespace>xmlparse</RootNamespace>\r
--  </PropertyGroup>\r
--  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
--  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
--    <ConfigurationType>StaticLibrary</ConfigurationType>\r
--    <UseOfMfc>false</UseOfMfc>\r
--    <CharacterSet>MultiByte</CharacterSet>\r
--  </PropertyGroup>\r
--  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
--    <ConfigurationType>StaticLibrary</ConfigurationType>\r
--    <UseOfMfc>false</UseOfMfc>\r
--    <CharacterSet>MultiByte</CharacterSet>\r
--  </PropertyGroup>\r
--  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
--    <ConfigurationType>StaticLibrary</ConfigurationType>\r
--    <UseOfMfc>false</UseOfMfc>\r
--    <CharacterSet>MultiByte</CharacterSet>\r
--  </PropertyGroup>\r
--  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
--    <ConfigurationType>StaticLibrary</ConfigurationType>\r
--    <UseOfMfc>false</UseOfMfc>\r
--    <CharacterSet>MultiByte</CharacterSet>\r
--  </PropertyGroup>\r
--  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
--  <ImportGroup Label="ExtensionSettings">\r
--  </ImportGroup>\r
--  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
--    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
--    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
--    <Import Project="..\..\..\w32\extlib.props" />\r
--  </ImportGroup>\r
--  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
--    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
--    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
--    <Import Project="..\..\..\w32\extlib.props" />\r
--  </ImportGroup>\r
--  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
--    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
--    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
--    <Import Project="..\..\..\w32\extlib.props" />\r
--  </ImportGroup>\r
--  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
--    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
--    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
--    <Import Project="..\..\..\w32\extlib.props" />\r
--  </ImportGroup>\r
--  <PropertyGroup Label="UserMacros" />\r
--  <PropertyGroup>\r
--    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
--    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PlatformName)\xmlparse\$(Configuration)\</IntDir>\r
--    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PlatformName)\xmlparse\$(Configuration)\</IntDir>\r
--    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(PlatformName)\xmlparse\$(Configuration)\</IntDir>\r
--    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(PlatformName)\xmlparse\$(Configuration)\</IntDir>\r
--  </PropertyGroup>\r
--  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
--    <ClCompile>\r
--      <Optimization>MaxSpeed</Optimization>\r
--      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
--      <AdditionalIncludeDirectories>..\lib\expat\xmltok;..\lib\expat\xmlwf;..;..\lib\util\include;..\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <StringPooling>true</StringPooling>\r
--      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
--      <FunctionLevelLinking>true</FunctionLevelLinking>\r
--      <WarningLevel>Level3</WarningLevel>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </ClCompile>\r
--    <ResourceCompile>\r
--      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <Culture>0x0409</Culture>\r
--    </ResourceCompile>\r
--    <Lib>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </Lib>\r
--    <Bscmake>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <OutputFile>.\Release\xmlparse/xmlparse.bsc</OutputFile>\r
--    </Bscmake>\r
--  </ItemDefinitionGroup>\r
--  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
--    <Midl>\r
--      <TargetEnvironment>X64</TargetEnvironment>\r
--    </Midl>\r
--    <ClCompile>\r
--      <Optimization>MaxSpeed</Optimization>\r
--      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
--      <AdditionalIncludeDirectories>..\lib\expat\xmltok;..\lib\expat\xmlwf;..;..\lib\util\include;..\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <StringPooling>true</StringPooling>\r
--      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
--      <FunctionLevelLinking>true</FunctionLevelLinking>\r
--      <WarningLevel>Level3</WarningLevel>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </ClCompile>\r
--    <ResourceCompile>\r
--      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <Culture>0x0409</Culture>\r
--    </ResourceCompile>\r
--    <Lib>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </Lib>\r
--    <Bscmake>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <OutputFile>.\Release\xmlparse/xmlparse.bsc</OutputFile>\r
--    </Bscmake>\r
--  </ItemDefinitionGroup>\r
--  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
--    <ClCompile>\r
--      <Optimization>Disabled</Optimization>\r
--      <AdditionalIncludeDirectories>..\lib\expat\xmltok;..\lib\expat\xmlwf;..;..\lib\util\include;..\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions>WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <MinimalRebuild>true</MinimalRebuild>\r
--      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
--      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
--      <WarningLevel>Level3</WarningLevel>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
--    </ClCompile>\r
--    <ResourceCompile>\r
--      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <Culture>0x0409</Culture>\r
--    </ResourceCompile>\r
--    <Lib>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </Lib>\r
--    <Bscmake>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <OutputFile>.\Debug\xmlparse/xmlparse.bsc</OutputFile>\r
--    </Bscmake>\r
--  </ItemDefinitionGroup>\r
--  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
--    <Midl>\r
--      <TargetEnvironment>X64</TargetEnvironment>\r
--    </Midl>\r
--    <ClCompile>\r
--      <Optimization>Disabled</Optimization>\r
--      <AdditionalIncludeDirectories>..\lib\expat\xmltok;..\lib\expat\xmlwf;..;..\lib\util\include;..\include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions>WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <MinimalRebuild>true</MinimalRebuild>\r
--      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
--      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
--      <WarningLevel>Level3</WarningLevel>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
--    </ClCompile>\r
--    <ResourceCompile>\r
--      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <Culture>0x0409</Culture>\r
--    </ResourceCompile>\r
--    <Lib>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </Lib>\r
--    <Bscmake>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <OutputFile>.\Debug\xmlparse/xmlparse.bsc</OutputFile>\r
--    </Bscmake>\r
--  </ItemDefinitionGroup>\r
--  <ItemGroup>\r
--    <ClCompile Include="..\lib\expat\xmlparse\xmlparse.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--  </ItemGroup>\r
--  <ItemGroup>\r
--    <ClInclude Include="..\lib\expat\xmlparse\xmlparse.h" />\r
--  </ItemGroup>\r
--  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
--  <ImportGroup Label="ExtensionTargets">\r
--  </ImportGroup>\r
--</Project>
-\ No newline at end of file
-diff --git a/libs/xmlrpc-c/Windows/xmlrpc-c/config.h b/libs/xmlrpc-c/Windows/xmlrpc-c/config.h
-deleted file mode 100644
-index aabf9c2..0000000
---- a/libs/xmlrpc-c/Windows/xmlrpc-c/config.h
-+++ /dev/null
-@@ -1,38 +0,0 @@
--#ifndef XMLRPC_C_CONFIG_H_INCLUDED\r
--#define XMLRPC_C_CONFIG_H_INCLUDED\r
--\r
--/* This file, part of XML-RPC For C/C++, is meant to \r
--   define characteristics of this particular installation \r
--   that the other <xmlrpc-c/...> header files need in \r
--   order to compile correctly when #included in Xmlrpc-c\r
--   user code.\r
--\r
--   Those header files #include this one.\r
--\r
--   This file was created by a make rule.\r
--*/\r
--#define XMLRPC_HAVE_WCHAR 1\r
--#ifdef WIN32\r
--  /* SOCKET is a type defined by <winsock.h>.  Anyone who\r
--     uses XMLRPC_SOCKET on a WIN32 system must #include\r
--     <winsock.h>\r
--  */\r
--  #define XMLRPC_SOCKET SOCKET\r
--  #define XMLRPC_HAVE_TIMEVAL 0\r
--  #define XMLRPC_HAVE_TIMESPEC 0\r
--#else\r
--  #define XMLRPC_SOCKET int\r
--  #define XMLRPC_HAVE_TIMEVAL 1\r
--  #define XMLRPC_HAVE_TIMESPEC 1\r
--#endif\r
--\r
--#if defined(_MSC_VER)\r
--  /* Newer MSVC has long long, but MSVC 6 does not */\r
--  #define XMLRPC_INT64 __int64\r
--  #define XMLRPC_INT32 __int32\r
--#else\r
--  #define XMLRPC_INT64 long long\r
--  #define XMLRPC_INT32 int\r
--#endif\r
--#endif\r
--\r
-diff --git a/libs/xmlrpc-c/Windows/xmlrpc.2008.vcproj b/libs/xmlrpc-c/Windows/xmlrpc.2008.vcproj
-deleted file mode 100644
-index 6a16191..0000000
---- a/libs/xmlrpc-c/Windows/xmlrpc.2008.vcproj
-+++ /dev/null
-@@ -1,2042 +0,0 @@
--<?xml version="1.0" encoding="Windows-1252"?>\r
--<VisualStudioProject\r
--      ProjectType="Visual C++"\r
--      Version="9.00"\r
--      Name="xmlrpc"\r
--      ProjectGUID="{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}"\r
--      RootNamespace="xmlrpc"\r
--      TargetFrameworkVersion="131072"\r
--      >\r
--      <Platforms>\r
--              <Platform\r
--                      Name="Win32"\r
--              />\r
--              <Platform\r
--                      Name="x64"\r
--              />\r
--      </Platforms>\r
--      <ToolFiles>\r
--      </ToolFiles>\r
--      <Configurations>\r
--              <Configuration\r
--                      Name="Debug|Win32"\r
--                      OutputDirectory=".\Debug\xmlrpc"\r
--                      IntermediateDirectory=".\Debug\xmlrpc"\r
--                      ConfigurationType="4"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      CharacterSet="2"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="0"\r
--                              AdditionalIncludeDirectories="../lib,../lib/util/include,../include,..,../lib/expat/xmlparse,../lib/abyss/src,../lib/wininet_transport,."\r
--                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
--                              MinimalRebuild="true"\r
--                              BasicRuntimeChecks="3"\r
--                              RuntimeLibrary="3"\r
--                              PrecompiledHeaderFile=".\Debug\xmlrpc/xmlrpc.pch"\r
--                              AssemblerListingLocation=".\Debug\xmlrpc/"\r
--                              ObjectFile=".\Debug\xmlrpc/"\r
--                              ProgramDataBaseFileName=".\Debug\xmlrpc/"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                              DebugInformationFormat="3"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="_DEBUG"\r
--                              Culture="1033"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLibrarianTool"\r
--                              OutputFile="..\lib\xmlrpcD.lib"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Debug\xmlrpc/xmlrpc.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                      />\r
--              </Configuration>\r
--              <Configuration\r
--                      Name="Debug|x64"\r
--                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
--                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
--                      ConfigurationType="4"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      CharacterSet="2"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                              TargetEnvironment="3"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="0"\r
--                              AdditionalIncludeDirectories="../lib,../lib/util/include,../include,..,../lib/expat/xmlparse,../lib/abyss/src,../lib/wininet_transport,."\r
--                              PreprocessorDefinitions="_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
--                              MinimalRebuild="true"\r
--                              BasicRuntimeChecks="3"\r
--                              RuntimeLibrary="3"\r
--                              PrecompiledHeaderFile=".\Debug\xmlrpc/xmlrpc.pch"\r
--                              ObjectFile="$(IntDir)\xmlrpc\"\r
--                              ProgramDataBaseFileName="$(IntDir)\xmlrpc\vc90.pdb"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                              DebugInformationFormat="3"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="_DEBUG"\r
--                              Culture="1033"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLibrarianTool"\r
--                              OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmlrpcD.lib"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Debug\xmlrpc/xmlrpc.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                      />\r
--              </Configuration>\r
--              <Configuration\r
--                      Name="Release|Win32"\r
--                      OutputDirectory=".\Release\xmlrpc"\r
--                      IntermediateDirectory=".\Release\xmlrpc"\r
--                      ConfigurationType="4"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      CharacterSet="2"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="2"\r
--                              InlineFunctionExpansion="1"\r
--                              AdditionalIncludeDirectories="../lib,../lib/util/include,../include,..,../lib/expat/xmlparse,../lib/abyss/src,../lib/wininet_transport,."\r
--                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
--                              StringPooling="true"\r
--                              RuntimeLibrary="2"\r
--                              EnableFunctionLevelLinking="true"\r
--                              PrecompiledHeaderFile=".\Release\xmlrpc/xmlrpc.pch"\r
--                              AssemblerListingLocation=".\Release\xmlrpc/"\r
--                              ObjectFile=".\Release\xmlrpc/"\r
--                              ProgramDataBaseFileName=".\Release\xmlrpc/"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="NDEBUG"\r
--                              Culture="1033"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLibrarianTool"\r
--                              OutputFile="..\lib\xmlrpc.lib"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Release\xmlrpc/xmlrpc.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                      />\r
--              </Configuration>\r
--              <Configuration\r
--                      Name="Release|x64"\r
--                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
--                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
--                      ConfigurationType="4"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      CharacterSet="2"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                              TargetEnvironment="3"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="2"\r
--                              InlineFunctionExpansion="1"\r
--                              AdditionalIncludeDirectories="../lib,../lib/util/include,../include,..,../lib/expat/xmlparse,../lib/abyss/src,../lib/wininet_transport,."\r
--                              PreprocessorDefinitions="NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB"\r
--                              StringPooling="true"\r
--                              RuntimeLibrary="2"\r
--                              EnableFunctionLevelLinking="true"\r
--                              PrecompiledHeaderFile=".\Release\xmlrpc/xmlrpc.pch"\r
--                              ObjectFile="$(IntDir)\xmlrpc\"\r
--                              ProgramDataBaseFileName="$(IntDir)\xmlrpc\vc90.pdb"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="NDEBUG"\r
--                              Culture="1033"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLibrarianTool"\r
--                              OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmlrpc.lib"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Release\xmlrpc/xmlrpc.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                      />\r
--              </Configuration>\r
--      </Configurations>\r
--      <References>\r
--      </References>\r
--      <Files>\r
--              <Filter\r
--                      Name="Source Files"\r
--                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc"\r
--                      >\r
--                      <File\r
--                              RelativePath="..\lib\libutil\asprintf.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\double.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\libutil\error.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\libutil\make_printable.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\libutil\memblock.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\method.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\parse_value.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\util\pthreadx_win32.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\registry.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\resource.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\libutil\select.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\libutil\sleep.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\system_method.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\libutil\time.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\trace.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\libutil\utf8.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\version.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_array.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_authcookie.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_base64.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_build.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_client.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_client_global.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\curl_transport\xmlrpc_curl_transport.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=".;..\..\curl\include"\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=".;..\..\curl\include"\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=".;..\..\curl\include"\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=".;..\..\curl\include"\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_data.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_datetime.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_decompose.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_expat.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_libxml2.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_parse.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_serialize.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_server_abyss.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_server_info.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_server_w32httpsys.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      ExcludedFromBuild="true"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_string.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\xmlrpc_struct.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\wininet_transport\xmlrpc_wininet_transport.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--              </Filter>\r
--              <Filter\r
--                      Name="Header Files"\r
--                      Filter="h;hpp;hxx;hm;inl"\r
--                      >\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\abyss.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\abyss_info.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\abyss_winsock.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\base.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\base_int.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\util\include\bool.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\c_util.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\util\include\c_util.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\util\include\casprintf.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\channel.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\chanswitch.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\client.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\client_global.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\client_int.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\config.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\conn.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\date.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\double.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\file.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\util\include\girmath.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\handler.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\http.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\util\include\inline.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\util\include\linklist.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\util\include\mallocvar.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\method.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\parse_value.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\util\include\pthreadx.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\registry.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\server.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\server.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\server_abyss.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\server_cgi.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\server_w32httpsys.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\sleep_int.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\socket.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\socket_win.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\util\include\stdargx.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\string_int.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\src\system_method.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\thread.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\time_int.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\abyss\src\token.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\transport.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\transport_config.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\transport_int.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\util_int.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\xml_rpc_alloc.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\expat\xmlparse\xmlparse.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\include\xmlrpc-c\xmlparser.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\xmlrpc_config.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\curl_transport\xmlrpc_curl_transport.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\wininet_transport\xmlrpc_wininet_transport.h"\r
--                              >\r
--                      </File>\r
--              </Filter>\r
--      </Files>\r
--      <Globals>\r
--      </Globals>\r
--</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj b/libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj
-deleted file mode 100644
-index bdc988c..0000000
---- a/libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj
-+++ /dev/null
-@@ -1,620 +0,0 @@
--<?xml version="1.0" encoding="utf-8"?>\r
--<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
--  <ItemGroup Label="ProjectConfigurations">\r
--    <ProjectConfiguration Include="Debug|Win32">\r
--      <Configuration>Debug</Configuration>\r
--      <Platform>Win32</Platform>\r
--    </ProjectConfiguration>\r
--    <ProjectConfiguration Include="Debug|x64">\r
--      <Configuration>Debug</Configuration>\r
--      <Platform>x64</Platform>\r
--    </ProjectConfiguration>\r
--    <ProjectConfiguration Include="Release|Win32">\r
--      <Configuration>Release</Configuration>\r
--      <Platform>Win32</Platform>\r
--    </ProjectConfiguration>\r
--    <ProjectConfiguration Include="Release|x64">\r
--      <Configuration>Release</Configuration>\r
--      <Platform>x64</Platform>\r
--    </ProjectConfiguration>\r
--  </ItemGroup>\r
--  <PropertyGroup Label="Globals">\r
--    <ProjectName>xmlrpc</ProjectName>\r
--    <ProjectGuid>{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA}</ProjectGuid>\r
--    <RootNamespace>xmlrpc</RootNamespace>\r
--  </PropertyGroup>\r
--  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
--  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
--    <ConfigurationType>StaticLibrary</ConfigurationType>\r
--    <UseOfMfc>false</UseOfMfc>\r
--    <CharacterSet>MultiByte</CharacterSet>\r
--  </PropertyGroup>\r
--  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
--    <ConfigurationType>StaticLibrary</ConfigurationType>\r
--    <UseOfMfc>false</UseOfMfc>\r
--    <CharacterSet>MultiByte</CharacterSet>\r
--  </PropertyGroup>\r
--  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
--    <ConfigurationType>StaticLibrary</ConfigurationType>\r
--    <UseOfMfc>false</UseOfMfc>\r
--    <CharacterSet>MultiByte</CharacterSet>\r
--  </PropertyGroup>\r
--  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
--    <ConfigurationType>StaticLibrary</ConfigurationType>\r
--    <UseOfMfc>false</UseOfMfc>\r
--    <CharacterSet>MultiByte</CharacterSet>\r
--  </PropertyGroup>\r
--  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
--  <ImportGroup Label="ExtensionSettings">\r
--  </ImportGroup>\r
--  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
--    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
--    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
--    <Import Project="..\..\..\w32\extlib.props" />\r
--  </ImportGroup>\r
--  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
--    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
--    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
--    <Import Project="..\..\..\w32\extlib.props" />\r
--  </ImportGroup>\r
--  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
--    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
--    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
--    <Import Project="..\..\..\w32\extlib.props" />\r
--  </ImportGroup>\r
--  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
--    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
--    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
--    <Import Project="..\..\..\w32\extlib.props" />\r
--  </ImportGroup>\r
--  <PropertyGroup Label="UserMacros" />\r
--  <PropertyGroup>\r
--    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
--    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PlatformName)\xmlrpc\$(Configuration)\</IntDir>\r
--    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PlatformName)\xmlrpc\$(Configuration)\</IntDir>\r
--    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(PlatformName)\xmlrpc\$(Configuration)\</IntDir>\r
--    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(PlatformName)\xmlrpc\$(Configuration)\</IntDir>\r
--  </PropertyGroup>\r
--  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
--    <ClCompile>\r
--      <Optimization>Disabled</Optimization>\r
--      <AdditionalIncludeDirectories>../lib;../lib/util/include;../include;..;../lib/expat/xmlparse;../lib/abyss/src;../lib/wininet_transport;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions>_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <MinimalRebuild>true</MinimalRebuild>\r
--      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
--      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
--      <WarningLevel>Level3</WarningLevel>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </ClCompile>\r
--    <ResourceCompile>\r
--      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <Culture>0x0409</Culture>\r
--    </ResourceCompile>\r
--    <Lib>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </Lib>\r
--    <Bscmake>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <OutputFile>.\Debug\xmlrpc/xmlrpc.bsc</OutputFile>\r
--    </Bscmake>\r
--  </ItemDefinitionGroup>\r
--  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
--    <Midl>\r
--      <TargetEnvironment>X64</TargetEnvironment>\r
--    </Midl>\r
--    <ClCompile>\r
--      <Optimization>Disabled</Optimization>\r
--      <AdditionalIncludeDirectories>../lib;../lib/util/include;../include;..;../lib/expat/xmlparse;../lib/abyss/src;../lib/wininet_transport;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions>_DEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <MinimalRebuild>true</MinimalRebuild>\r
--      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
--      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
--      <WarningLevel>Level3</WarningLevel>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </ClCompile>\r
--    <ResourceCompile>\r
--      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <Culture>0x0409</Culture>\r
--    </ResourceCompile>\r
--    <Lib>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </Lib>\r
--    <Bscmake>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <OutputFile>.\Debug\xmlrpc/xmlrpc.bsc</OutputFile>\r
--    </Bscmake>\r
--  </ItemDefinitionGroup>\r
--  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
--    <ClCompile>\r
--      <Optimization>MaxSpeed</Optimization>\r
--      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
--      <AdditionalIncludeDirectories>../lib;../lib/util/include;../include;..;../lib/expat/xmlparse;../lib/abyss/src;../lib/wininet_transport;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions>NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <StringPooling>true</StringPooling>\r
--      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
--      <FunctionLevelLinking>true</FunctionLevelLinking>\r
--      <WarningLevel>Level3</WarningLevel>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </ClCompile>\r
--    <ResourceCompile>\r
--      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <Culture>0x0409</Culture>\r
--    </ResourceCompile>\r
--    <Lib>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </Lib>\r
--    <Bscmake>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <OutputFile>.\Release\xmlrpc/xmlrpc.bsc</OutputFile>\r
--    </Bscmake>\r
--  </ItemDefinitionGroup>\r
--  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
--    <Midl>\r
--      <TargetEnvironment>X64</TargetEnvironment>\r
--    </Midl>\r
--    <ClCompile>\r
--      <Optimization>MaxSpeed</Optimization>\r
--      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
--      <AdditionalIncludeDirectories>../lib;../lib/util/include;../include;..;../lib/expat/xmlparse;../lib/abyss/src;../lib/wininet_transport;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions>NDEBUG;WIN32;_LIB;ABYSS_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <StringPooling>true</StringPooling>\r
--      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
--      <FunctionLevelLinking>true</FunctionLevelLinking>\r
--      <WarningLevel>Level3</WarningLevel>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </ClCompile>\r
--    <ResourceCompile>\r
--      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <Culture>0x0409</Culture>\r
--    </ResourceCompile>\r
--    <Lib>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </Lib>\r
--    <Bscmake>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <OutputFile>.\Release\xmlrpc/xmlrpc.bsc</OutputFile>\r
--    </Bscmake>\r
--  </ItemDefinitionGroup>\r
--  <ItemGroup>\r
--    <ClCompile Include="..\lib\libutil\asprintf.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\double.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\libutil\error.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\libutil\make_printable.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\libutil\memblock.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\method.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\parse_value.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\util\pthreadx_win32.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\registry.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\resource.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\libutil\select.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\libutil\sleep.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\system_method.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\libutil\time.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\trace.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\libutil\utf8.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\version.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_array.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_authcookie.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_base64.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_build.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_client.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_client_global.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\curl_transport\xmlrpc_curl_transport.c">\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.;..\..\curl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.;..\..\curl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.;..\..\curl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.;..\..\curl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_data.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_datetime.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_decompose.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_expat.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_libxml2.c">\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_parse.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_serialize.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_server_abyss.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_server_info.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_server_w32httpsys.c">\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_string.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_struct.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\wininet_transport\xmlrpc_wininet_transport.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--  </ItemGroup>\r
--  <ItemGroup>\r
--    <ClInclude Include="..\include\xmlrpc-c\abyss.h" />\r
--    <ClInclude Include="..\lib\abyss\src\abyss_info.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\abyss_winsock.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\base.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\base_int.h" />\r
--    <ClInclude Include="..\lib\util\include\bool.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\c_util.h" />\r
--    <ClInclude Include="..\lib\util\include\c_util.h" />\r
--    <ClInclude Include="..\lib\util\include\casprintf.h" />\r
--    <ClInclude Include="..\lib\abyss\src\channel.h" />\r
--    <ClInclude Include="..\lib\abyss\src\chanswitch.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\client.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\client_global.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\client_int.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\config.h" />\r
--    <ClInclude Include="..\lib\abyss\src\conn.h" />\r
--    <ClInclude Include="..\lib\abyss\src\date.h" />\r
--    <ClInclude Include="..\src\double.h" />\r
--    <ClInclude Include="..\lib\abyss\src\file.h" />\r
--    <ClInclude Include="..\lib\util\include\girmath.h" />\r
--    <ClInclude Include="..\lib\abyss\src\handler.h" />\r
--    <ClInclude Include="..\lib\abyss\src\http.h" />\r
--    <ClInclude Include="..\lib\util\include\inline.h" />\r
--    <ClInclude Include="..\lib\util\include\linklist.h" />\r
--    <ClInclude Include="..\lib\util\include\mallocvar.h" />\r
--    <ClInclude Include="..\src\method.h" />\r
--    <ClInclude Include="..\src\parse_value.h" />\r
--    <ClInclude Include="..\lib\util\include\pthreadx.h" />\r
--    <ClInclude Include="..\src\registry.h" />\r
--    <ClInclude Include="..\lib\abyss\src\server.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\server.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\server_abyss.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\server_cgi.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\server_w32httpsys.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\sleep_int.h" />\r
--    <ClInclude Include="..\lib\abyss\src\socket.h" />\r
--    <ClInclude Include="..\lib\abyss\src\socket_win.h" />\r
--    <ClInclude Include="..\lib\util\include\stdargx.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\string_int.h" />\r
--    <ClInclude Include="..\src\system_method.h" />\r
--    <ClInclude Include="..\lib\abyss\src\thread.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\time_int.h" />\r
--    <ClInclude Include="..\lib\abyss\src\token.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\transport.h" />\r
--    <ClInclude Include="..\transport_config.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\transport_int.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\util_int.h" />\r
--    <ClInclude Include="..\xml_rpc_alloc.h" />\r
--    <ClInclude Include="..\lib\expat\xmlparse\xmlparse.h" />\r
--    <ClInclude Include="..\include\xmlrpc-c\xmlparser.h" />\r
--    <ClInclude Include="..\xmlrpc_config.h" />\r
--    <ClInclude Include="..\lib\curl_transport\xmlrpc_curl_transport.h" />\r
--    <ClInclude Include="..\lib\wininet_transport\xmlrpc_wininet_transport.h" />\r
--  </ItemGroup>\r
--  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
--  <ImportGroup Label="ExtensionTargets">\r
--  </ImportGroup>\r
--</Project>
-\ No newline at end of file
-diff --git a/libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj.filters b/libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj.filters
-deleted file mode 100644
-index 6886dfe..0000000
---- a/libs/xmlrpc-c/Windows/xmlrpc.2010.vcxproj.filters
-+++ /dev/null
-@@ -1,287 +0,0 @@
--<?xml version="1.0" encoding="utf-8"?>\r
--<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
--  <ItemGroup>\r
--    <Filter Include="Source Files">\r
--      <UniqueIdentifier>{7ca2b8b9-bf59-4407-aedf-588e548fe34a}</UniqueIdentifier>\r
--      <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;cc</Extensions>\r
--    </Filter>\r
--    <Filter Include="Header Files">\r
--      <UniqueIdentifier>{28891c93-973b-487f-a8f9-3fae090e14e3}</UniqueIdentifier>\r
--      <Extensions>h;hpp;hxx;hm;inl</Extensions>\r
--    </Filter>\r
--  </ItemGroup>\r
--  <ItemGroup>\r
--    <ClCompile Include="..\lib\libutil\asprintf.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\double.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\libutil\error.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\libutil\make_printable.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\libutil\memblock.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\method.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\parse_value.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\util\pthreadx_win32.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\registry.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\resource.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\libutil\select.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\libutil\sleep.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\system_method.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\libutil\time.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\trace.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\libutil\utf8.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\version.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_array.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_authcookie.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_base64.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_build.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_client.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_client_global.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\curl_transport\xmlrpc_curl_transport.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_data.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_datetime.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_decompose.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_expat.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_libxml2.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_parse.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_serialize.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_server_abyss.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_server_info.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_server_w32httpsys.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_string.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\src\xmlrpc_struct.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\wininet_transport\xmlrpc_wininet_transport.c">\r
--      <Filter>Source Files</Filter>\r
--    </ClCompile>\r
--  </ItemGroup>\r
--  <ItemGroup>\r
--    <ClInclude Include="..\include\xmlrpc-c\abyss.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\abyss_info.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\abyss_winsock.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\base.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\base_int.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\util\include\bool.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\c_util.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\util\include\c_util.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\util\include\casprintf.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\channel.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\chanswitch.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\client.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\client_global.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\client_int.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\config.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\conn.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\date.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\src\double.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\file.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\util\include\girmath.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\handler.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\http.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\util\include\inline.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\util\include\linklist.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\util\include\mallocvar.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\src\method.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\src\parse_value.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\util\include\pthreadx.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\src\registry.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\server.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\server.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\server_abyss.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\server_cgi.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\server_w32httpsys.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\sleep_int.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\socket.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\socket_win.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\util\include\stdargx.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\string_int.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\src\system_method.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\thread.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\time_int.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\abyss\src\token.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\transport.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\transport_config.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\transport_int.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\util_int.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\xml_rpc_alloc.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\expat\xmlparse\xmlparse.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\include\xmlrpc-c\xmlparser.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\xmlrpc_config.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\curl_transport\xmlrpc_curl_transport.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--    <ClInclude Include="..\lib\wininet_transport\xmlrpc_wininet_transport.h">\r
--      <Filter>Header Files</Filter>\r
--    </ClInclude>\r
--  </ItemGroup>\r
--</Project>
-\ No newline at end of file
-diff --git a/libs/xmlrpc-c/Windows/xmlrpc.dsp b/libs/xmlrpc-c/Windows/xmlrpc.dsp
-index 15d20f0..a85ad1d 100644
---- a/libs/xmlrpc-c/Windows/xmlrpc.dsp
-+++ b/libs/xmlrpc-c/Windows/xmlrpc.dsp
-@@ -91,6 +91,10 @@ SOURCE=..\lib\libutil\asprintf.c
- # End Source File\r
- # Begin Source File\r
\r
-+SOURCE=..\lib\libutil\base64.c\r
-+# End Source File\r
-+# Begin Source File\r
-+\r
- SOURCE=..\lib\libutil\error.c\r
- # End Source File\r
- # Begin Source File\r
-@@ -111,6 +115,10 @@ SOURCE=..\lib\util\pthreadx_win32.c
- # End Source File\r
- # Begin Source File\r
\r
-+SOURCE=..\src\parse_datetime.c\r
-+# End Source File\r
-+# Begin Source File\r
-+\r
- SOURCE=..\src\parse_value.c\r
- # End Source File\r
- # Begin Source File\r
-@@ -362,6 +370,10 @@ SOURCE=..\lib\util\include\pthreadx.h
- # End Source File\r
- # Begin Source File\r
\r
-+SOURCE=..\src\parse_datetime.h\r
-+# End Source File\r
-+# Begin Source File\r
-+\r
- SOURCE=..\src\parse_value.h\r
- # End Source File\r
- # Begin Source File\r
-diff --git a/libs/xmlrpc-c/Windows/xmlrpc.dsw b/libs/xmlrpc-c/Windows/xmlrpc.dsw
-index f7b676e..62a062e 100644
---- a/libs/xmlrpc-c/Windows/xmlrpc.dsw
-+++ b/libs/xmlrpc-c/Windows/xmlrpc.dsw
-@@ -111,6 +111,36 @@ Package=<4>
\r
- ###############################################################################\r
\r
-+Project: "xmlrpc_misc"=".\xmlrpc_misc.dsp" - Package Owner=<4>\r
-+\r
-+Package=<5>\r
-+{{{\r
-+}}}\r
-+\r
-+Package=<4>\r
-+{{{\r
-+}}}\r
-+\r
-+###############################################################################\r
-+\r
-+Project: "xmlrpcclient"=".\xmlrpcclient.dsp" - Package Owner=<4>\r
-+\r
-+Package=<5>\r
-+{{{\r
-+}}}\r
-+\r
-+Package=<4>\r
-+{{{\r
-+    Begin Project Dependency\r
-+    Project_Dep_Name xmlrpc\r
-+    End Project Dependency\r
-+    Begin Project Dependency\r
-+    Project_Dep_Name xmlrpc_misc\r
-+    End Project Dependency\r
-+}}}\r
-+\r
-+###############################################################################\r
-+\r
- Project: "xmlrpccpp"=".\xmlrpccpp.dsp" - Package Owner=<4>\r
\r
- Package=<5>\r
-diff --git a/libs/xmlrpc-c/Windows/xmlrpc_config.h b/libs/xmlrpc-c/Windows/xmlrpc_config.h
-deleted file mode 100644
-index 319dc2a..0000000
---- a/libs/xmlrpc-c/Windows/xmlrpc_config.h
-+++ /dev/null
-@@ -1,158 +0,0 @@
--/* Win32 version of xmlrpc_config.h.\r
--\r
--   For other platforms, this is generated automatically, but for Windows,\r
--   someone generates it manually.  Nonetheless, we keep it looking as much\r
--   as possible like the automatically generated one to make it easier to\r
--   maintain (e.g. you can compare the two and see why something builds\r
--   differently for Windows than for some other platform).\r
--\r
--   The purpose of this file is to define stuff particular to the build\r
--   environment being used to build Xmlrpc-c.  Xmlrpc-c source files can\r
--   #include this file and have build-environment-independent source code.\r
--\r
--   A major goal of this file is to reduce conditional compilation in\r
--   the other source files as much as possible.  Even more, we want to avoid\r
--   having to generate source code particular to a build environment\r
--   except in this file.   \r
--\r
--   This file is NOT meant to be used by any code outside of the\r
--   Xmlrpc-c source tree.  There is a similar file that gets installed\r
--   as <xmlrpc-c/config.h> that performs the same function for Xmlrpc-c\r
--   interface header files that get compiled as part of a user's program.\r
--\r
--   Logical macros are 0 or 1 instead of the more traditional defined and\r
--   undefined.  That's so we can distinguish when compiling code between\r
--   "false" and some problem with the code.\r
--*/\r
--\r
--#ifndef XMLRPC_CONFIG_H_INCLUDED\r
--#define XMLRPC_CONFIG_H_INCLUDED\r
--\r
--/* From xmlrpc_amconfig.h */\r
--\r
--#define HAVE__STRICMP 1\r
--/* Name of package */\r
--#define PACKAGE "xmlrpc-c"\r
--/*----------------------------------*/\r
--\r
--#ifndef HAVE_SETGROUPS\r
--#define HAVE_SETGROUPS 0\r
--#endif\r
--#ifndef HAVE_ASPRINTF\r
--#define HAVE_ASPRINTF 0\r
--#endif\r
--#ifndef HAVE_SETENV\r
--#define HAVE_SETENV 0\r
--#endif\r
--#ifndef HAVE_PSELECT\r
--#define HAVE_PSELECT 0\r
--#endif\r
--#ifndef HAVE_WCSNCMP\r
--#define HAVE_WCSNCMP 1\r
--#endif\r
--#ifndef HAVE_GETTIMEOFDAY\r
--#define HAVE_GETTIMEOFDAY 0\r
--#endif\r
--#ifndef HAVE_LOCALTIME_R\r
--#define HAVE_LOCALTIME_R 0\r
--#endif\r
--#ifndef HAVE_GMTIME_R\r
--#define HAVE_GMTIME_R 0\r
--#endif\r
--#ifndef HAVE_STRCASECMP\r
--#define HAVE_STRCASECMP 0\r
--#endif\r
--#ifndef HAVE_STRICMP\r
--#define HAVE_STRICMP 0\r
--#endif\r
--#ifndef HAVE__STRICMP\r
--#define HAVE__STRICMP 0\r
--#endif\r
--\r
--#define HAVE_WCHAR_H 1\r
--#define HAVE_SYS_FILIO_H 0\r
--#define HAVE_SYS_IOCTL_H 0\r
--\r
--#define VA_LIST_IS_ARRAY 0\r
--\r
--#define HAVE_LIBWWW_SSL 0\r
--\r
--/* Used to mark an unused function parameter */\r
--#define ATTR_UNUSED\r
--\r
--#define DIRECTORY_SEPARATOR "\\"\r
--\r
--#define HAVE_UNICODE_WCHAR 1\r
--\r
--/*  Xmlrpc-c code uses __inline__ to declare functions that should\r
--    be compiled as inline code.  GNU C recognizes the __inline__ keyword.\r
--    Others recognize 'inline' or '__inline' or nothing at all to say\r
--    a function should be inlined.\r
--\r
--    We could make 'configure' simply do a trial compile to figure out\r
--    which one, but for now, this approximation is easier:\r
--*/\r
--#if (!defined(__GNUC__))\r
--  #if (!defined(__inline__))\r
--    #if (defined(__sgi) || defined(_AIX) || defined(_MSC_VER))\r
--      #define __inline__ __inline\r
--    #else   \r
--      #define __inline__\r
--    #endif\r
--  #endif\r
--#endif\r
--\r
--/* MSVCRT means we're using the Microsoft Visual C++ runtime library */\r
--\r
--#ifdef _MSC_VER\r
--/* The compiler is Microsoft Visual C++. */\r
--  #define MSVCRT _MSC_VER\r
--#else\r
--  #define MSVCRT 0\r
--#endif\r
--\r
--#if MSVCRT\r
--  /* The MSVC runtime library _does_ have a 'struct timeval', but it is\r
--     part of the Winsock interface (along with select(), which is probably\r
--     its intended use), so isn't intended for use for general timekeeping.\r
--  */\r
--  #define HAVE_TIMEVAL 0\r
--  #define HAVE_TIMESPEC 0\r
--#else\r
--  #define HAVE_TIMEVAL 1\r
--  /* timespec is Posix.1b.  If we need to work on a non-Posix.1b non-Windows\r
--     system, we'll have to figure out how to make Configure determine this.\r
--  */\r
--  #define HAVE_TIMESPEC 1\r
--#endif\r
--\r
--#if MSVCRT\r
--  #define XMLRPC_VSNPRINTF _vsnprintf\r
--#else\r
--  #define XMLRPC_VSNPRINTF vsnprintf\r
--#endif\r
--\r
--#if defined(_MSC_VER) && (_MSC_VER >= 1400)\r
--/* Starting with MSVC 8, the runtime library defines various POSIX functions\r
--   such as strdup() whose names violate the ISO C standard (the standard\r
--   says the strXXX names are reserved for the standard), but warns you of\r
--   the standards violation.  That warning is 4996, along with other warnings\r
--   that tell you you're using a function that Microsoft thinks you\r
--   shouldn't.\r
--\r
--   Well, POSIX is more important than that element of ISO C, so we disable\r
--   that warning.\r
--\r
--   FYI, msvcrt also defines _strdup(), etc, which doesn't violate the\r
--   naming standard.  But since other environments don't define _strdup(),\r
--   we can't use it in portable code.\r
--*/\r
--#pragma warning(disable:4996)\r
--#endif\r
--\r
--#define snprintf _snprintf\r
--#define popen _popen\r
--#define strtoll _strtoui64\r
--#define strtoull _strtoui64\r
--\r
--#endif\r
-diff --git a/libs/xmlrpc-c/Windows/xmlrpc_win32_config.h b/libs/xmlrpc-c/Windows/xmlrpc_win32_config.h
-index e4e34fd..798b5b2 100644
---- a/libs/xmlrpc-c/Windows/xmlrpc_win32_config.h
-+++ b/libs/xmlrpc-c/Windows/xmlrpc_win32_config.h
-@@ -31,6 +31,8 @@
- /* From xmlrpc_amconfig.h */
- #define HAVE__STRICMP 1
-+#define HAVE__STRTOUI64 1
-+
- /* Name of package */
- #define PACKAGE "xmlrpc-c"
- /*----------------------------------*/
-@@ -72,6 +74,7 @@
- #define HAVE_WCHAR_H 1
- #define HAVE_SYS_FILIO_H 0
- #define HAVE_SYS_IOCTL_H 0
-+#define HAVE_SYS_SELECT_H 0
- #define VA_LIST_IS_ARRAY 0
-@@ -127,11 +130,41 @@
- #endif
- #if MSVCRT
-+  #define HAVE_WINDOWS_THREAD 1
-+#else
-+  #define HAVE_WINDOWS_THREAD 0
-+#endif
-+
-+/* Some people have and use pthreads on Windows.  See
-+   http://sourceware.org/pthreads-win32 .  For that case, we can set
-+   HAVE_PTHREAD to 1.  The builder prefers to use pthreads if it has
-+   a choice.
-+*/
-+#define HAVE_PTHREAD 0
-+
-+/* Note that the return value of XMLRPC_VSNPRINTF is int on Windows,
-+   ssize_t on POSIX.
-+*/
-+#if MSVCRT
-   #define XMLRPC_VSNPRINTF _vsnprintf
- #else
-   #define XMLRPC_VSNPRINTF vsnprintf
- #endif
-+#if MSVCRT
-+  #define HAVE_REGEX 0
-+#else
-+  #define HAVE_REGEX 1
-+#endif
-+
-+#if MSVCRT
-+  #define XMLRPC_SOCKETPAIR xmlrpc_win32_socketpair
-+  #define XMLRPC_CLOSESOCKET closesocket
-+#else
-+  #define XMLRPC_SOCKETPAIR socketpair
-+  #define XMLRPC_CLOSESOCKET close
-+#endif
-+
- #if defined(_MSC_VER) && (_MSC_VER >= 1400)
- /* Starting with MSVC 8, the runtime library defines various POSIX functions
-    such as strdup() whose names violate the ISO C standard (the standard
-@@ -149,10 +182,42 @@
- */
- #pragma warning(disable:4996)
- #endif
-+/* Warning C4090 is "different 'const' qualifiers".
-+
-+   We disable this warning because MSVC erroneously issues it when there is
-+   in fact no difference in const qualifiers:
-+
-+     const char ** p;
-+     void * q;
-+     q = p;
-+
-+   Note that both p and q are pointers to non-const.
-+
-+   We have seen this in MSVC 7.1, 8, and 9 (but not 6).
-+*/
-+#pragma warning(disable:4090)
-+
-+#if HAVE_STRTOLL
-+  # define XMLRPC_STRTOLL strtoll
-+#elif HAVE_STRTOQ
-+  # define XMLRPC_STRTOLL strtoq /* Interix */
-+#elif HAVE___STRTOLL
-+  # define XMLRPC_STRTOLL __strtoll /* HP-UX <= 11.11 */
-+#elif HAVE__STRTOUI64
-+  #define XMLRPC_STRTOLL _strtoui64  /* Windows MSVC */
-+#endif
-+
-+#if HAVE_STRTOULL
-+  # define XMLRPC_STRTOULL strtoull
-+#elif HAVE_STRTOUQ
-+  # define XMLRPC_STRTOULL strtouq /* Interix */
-+#elif HAVE___STRTOULL
-+  # define XMLRPC_STRTOULL __strtoull /* HP-UX <= 11.11 */
-+#elif HAVE__STRTOUI64
-+  #define XMLRPC_STRTOULL _strtoui64  /* Windows MSVC */
-+#endif
- #define snprintf _snprintf
- #define popen _popen
--#define strtoll _strtoui64
--#define strtoull _strtoui64
- #endif
-diff --git a/libs/xmlrpc-c/Windows/xmlrpcclient.dsp b/libs/xmlrpc-c/Windows/xmlrpcclient.dsp
-new file mode 100644
-index 0000000..97061b0
---- /dev/null
-+++ b/libs/xmlrpc-c/Windows/xmlrpcclient.dsp
-@@ -0,0 +1,106 @@
-+# Microsoft Developer Studio Project File - Name="xmlrpcclient" - Package Owner=<4>
-+# Microsoft Developer Studio Generated Build File, Format Version 6.00
-+# ** DO NOT EDIT **
-+
-+# TARGTYPE "Win32 (x86) Console Application" 0x0103
-+
-+CFG=xmlrpcclient - 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 "xmlrpcclient.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 "xmlrpcclient.mak" CFG="xmlrpcclient - Win32 Release"
-+!MESSAGE 
-+!MESSAGE Possible choices for configuration are:
-+!MESSAGE 
-+!MESSAGE "xmlrpcclient - Win32 Release" (based on "Win32 (x86) Console Application")
-+!MESSAGE "xmlrpcclient - Win32 Debug" (based on "Win32 (x86) Console Application")
-+!MESSAGE 
-+
-+# Begin Project
-+# PROP AllowPerConfigDependencies 0
-+CPP=cl.exe
-+RSC=rc.exe
-+
-+!IF  "$(CFG)" == "xmlrpcclient - 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\xmlrpcclient"
-+# PROP Intermediate_Dir "Release\xmlrpcclient"
-+# PROP Ignore_Export_Lib 0
-+# PROP Target_Dir "."
-+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
-+# ADD CPP /nologo /MT /W3 /GX /O2 /I ".." /I "..\lib\util\include" /I "..\tools\lib\include" /I "..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FD /c
-+# SUBTRACT CPP /YX
-+# ADD BASE RSC /l 0x809 /d "NDEBUG"
-+# ADD RSC /l 0x809 /d "NDEBUG"
-+BSC32=bscmake.exe
-+# ADD BASE BSC32 /nologo
-+# ADD BSC32 /nologo
-+LINK32=link.exe
-+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wininet.lib /nologo /subsystem:console /machine:I386 /out:"..\bin\xmlrpcclient.exe"
-+
-+!ELSEIF  "$(CFG)" == "xmlrpcclient - 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\xmlrpcclient"
-+# PROP Intermediate_Dir "Debug\xmlrpcclient"
-+# PROP Ignore_Export_Lib 0
-+# PROP Target_Dir "."
-+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
-+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I ".." /I "..\lib\util\include" /I "..\tools\lib\include" /I "..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
-+# SUBTRACT CPP /YX
-+# ADD BASE RSC /l 0x809 /d "_DEBUG"
-+# ADD RSC /l 0x809 /d "_DEBUG"
-+BSC32=bscmake.exe
-+# ADD BASE BSC32 /nologo
-+# ADD BSC32 /nologo
-+LINK32=link.exe
-+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
-+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wininet.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\bin\xmlrpcclientD.exe"
-+
-+!ENDIF 
-+
-+# Begin Target
-+
-+# Name "xmlrpcclient - Win32 Release"
-+# Name "xmlrpcclient - Win32 Debug"
-+# Begin Group "Source Files"
-+
-+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
-+# Begin Source File
-+
-+SOURCE=..\tools\xmlrpc\xmlrpc.c
-+# End Source File
-+# Begin Source File
-+
-+SOURCE=..\tools\lib\dumpvalue.c
-+# End Source File
-+# End Group
-+# Begin Group "Header Files"
-+
-+# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-+# End Group
-+# Begin Group "Resource Files"
-+
-+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-+# End Group
-+# End Target
-+# End Project
-diff --git a/libs/xmlrpc-c/Windows/xmlrpccpp.dsp b/libs/xmlrpc-c/Windows/xmlrpccpp.dsp
-index fedf4e2..34a4728 100644
---- a/libs/xmlrpc-c/Windows/xmlrpccpp.dsp
-+++ b/libs/xmlrpc-c/Windows/xmlrpccpp.dsp
-@@ -128,7 +128,6 @@ SOURCE=..\src\cpp\outcome.cpp
- # Begin Source File\r
\r
- SOURCE=..\src\cpp\packetsocket.cpp\r
--# PROP Exclude_From_Build 1\r
- # End Source File\r
- # Begin Source File\r
\r
-@@ -152,6 +151,10 @@ SOURCE=..\src\cpp\server_pstream.cpp
- # End Source File\r
- # Begin Source File\r
\r
-+SOURCE=..\src\cpp\server_pstream_conn.cpp\r
-+# End Source File\r
-+# Begin Source File\r
-+\r
- SOURCE=..\src\cpp\value.cpp\r
- # End Source File\r
- # Begin Source File\r
-diff --git a/libs/xmlrpc-c/Windows/xmltok.2008.vcproj b/libs/xmlrpc-c/Windows/xmltok.2008.vcproj
-deleted file mode 100644
-index 0935ede..0000000
---- a/libs/xmlrpc-c/Windows/xmltok.2008.vcproj
-+++ /dev/null
-@@ -1,455 +0,0 @@
--<?xml version="1.0" encoding="Windows-1252"?>\r
--<VisualStudioProject\r
--      ProjectType="Visual C++"\r
--      Version="9.00"\r
--      Name="xmltok"\r
--      ProjectGUID="{B535402E-38D2-4D54-8360-423ACBD17192}"\r
--      RootNamespace="xmltok"\r
--      TargetFrameworkVersion="131072"\r
--      >\r
--      <Platforms>\r
--              <Platform\r
--                      Name="Win32"\r
--              />\r
--              <Platform\r
--                      Name="x64"\r
--              />\r
--      </Platforms>\r
--      <ToolFiles>\r
--      </ToolFiles>\r
--      <Configurations>\r
--              <Configuration\r
--                      Name="Debug|Win32"\r
--                      OutputDirectory=".\Debug\xmltok"\r
--                      IntermediateDirectory=".\Debug\xmltok"\r
--                      ConfigurationType="4"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      CharacterSet="2"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="0"\r
--                              AdditionalIncludeDirectories="..,."\r
--                              PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB"\r
--                              MinimalRebuild="true"\r
--                              BasicRuntimeChecks="3"\r
--                              RuntimeLibrary="3"\r
--                              PrecompiledHeaderFile=".\Debug\xmltok/xmltok.pch"\r
--                              AssemblerListingLocation=".\Debug\xmltok/"\r
--                              ObjectFile=".\Debug\xmltok/"\r
--                              ProgramDataBaseFileName=".\Debug\xmltok/"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                              DebugInformationFormat="3"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="_DEBUG"\r
--                              Culture="1033"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLibrarianTool"\r
--                              OutputFile="..\lib\xmltokD.lib"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Debug\xmltok/xmltok.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                      />\r
--              </Configuration>\r
--              <Configuration\r
--                      Name="Debug|x64"\r
--                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
--                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
--                      ConfigurationType="4"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      CharacterSet="2"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                              TargetEnvironment="3"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="0"\r
--                              AdditionalIncludeDirectories="..,."\r
--                              PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB"\r
--                              MinimalRebuild="true"\r
--                              BasicRuntimeChecks="3"\r
--                              RuntimeLibrary="3"\r
--                              PrecompiledHeaderFile=".\Debug\xmltok/xmltok.pch"\r
--                              ObjectFile="$(IntDir)\xmltok\"\r
--                              ProgramDataBaseFileName="$(IntDir)\xmltok\vc90.pdb"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                              DebugInformationFormat="3"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="_DEBUG"\r
--                              Culture="1033"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLibrarianTool"\r
--                              OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmltokD.lib"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Debug\xmltok/xmltok.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                      />\r
--              </Configuration>\r
--              <Configuration\r
--                      Name="Release|Win32"\r
--                      OutputDirectory=".\Release\xmltok"\r
--                      IntermediateDirectory=".\Release\xmltok"\r
--                      ConfigurationType="4"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      CharacterSet="2"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="2"\r
--                              InlineFunctionExpansion="1"\r
--                              AdditionalIncludeDirectories="..,."\r
--                              PreprocessorDefinitions="NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB"\r
--                              StringPooling="true"\r
--                              RuntimeLibrary="0"\r
--                              EnableFunctionLevelLinking="true"\r
--                              PrecompiledHeaderFile=".\Release\xmltok/xmltok.pch"\r
--                              AssemblerListingLocation=".\Release\xmltok/"\r
--                              ObjectFile=".\Release\xmltok/"\r
--                              ProgramDataBaseFileName=".\Release\xmltok/"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="NDEBUG"\r
--                              Culture="1033"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLibrarianTool"\r
--                              OutputFile="..\lib\xmltok.lib"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Release\xmltok/xmltok.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                      />\r
--              </Configuration>\r
--              <Configuration\r
--                      Name="Release|x64"\r
--                      OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
--                      IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
--                      ConfigurationType="4"\r
--                      InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
--                      UseOfMFC="0"\r
--                      ATLMinimizesCRunTimeLibraryUsage="false"\r
--                      CharacterSet="2"\r
--                      >\r
--                      <Tool\r
--                              Name="VCPreBuildEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCustomBuildTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXMLDataGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCWebServiceProxyGeneratorTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCMIDLTool"\r
--                              TargetEnvironment="3"\r
--                      />\r
--                      <Tool\r
--                              Name="VCCLCompilerTool"\r
--                              Optimization="2"\r
--                              InlineFunctionExpansion="1"\r
--                              AdditionalIncludeDirectories="..,."\r
--                              PreprocessorDefinitions="NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB"\r
--                              StringPooling="true"\r
--                              RuntimeLibrary="0"\r
--                              EnableFunctionLevelLinking="true"\r
--                              PrecompiledHeaderFile=".\Release\xmltok/xmltok.pch"\r
--                              ObjectFile="$(IntDir)\xmltok\"\r
--                              ProgramDataBaseFileName="$(IntDir)\xmltok\vc90.pdb"\r
--                              WarningLevel="3"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCManagedResourceCompilerTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCResourceCompilerTool"\r
--                              PreprocessorDefinitions="NDEBUG"\r
--                              Culture="1033"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPreLinkEventTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCLibrarianTool"\r
--                              OutputFile="..\lib\$(PlatformName)\$(ConfigurationName)\xmltok.lib"\r
--                              SuppressStartupBanner="true"\r
--                      />\r
--                      <Tool\r
--                              Name="VCALinkTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCXDCMakeTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCBscMakeTool"\r
--                              SuppressStartupBanner="true"\r
--                              OutputFile=".\Release\xmltok/xmltok.bsc"\r
--                      />\r
--                      <Tool\r
--                              Name="VCFxCopTool"\r
--                      />\r
--                      <Tool\r
--                              Name="VCPostBuildEventTool"\r
--                      />\r
--              </Configuration>\r
--      </Configurations>\r
--      <References>\r
--      </References>\r
--      <Files>\r
--              <Filter\r
--                      Name="Source Files"\r
--                      Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"\r
--                      >\r
--                      <File\r
--                              RelativePath="..\lib\expat\xmltok\xmlrole.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\expat\xmltok\xmltok.c"\r
--                              >\r
--                              <FileConfiguration\r
--                                      Name="Debug|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Debug|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|Win32"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                              <FileConfiguration\r
--                                      Name="Release|x64"\r
--                                      >\r
--                                      <Tool\r
--                                              Name="VCCLCompilerTool"\r
--                                              AdditionalIncludeDirectories=""\r
--                                              PreprocessorDefinitions=""\r
--                                      />\r
--                              </FileConfiguration>\r
--                      </File>\r
--              </Filter>\r
--              <Filter\r
--                      Name="Header Files"\r
--                      Filter="h;hpp;hxx;hm;inl;fi;fd"\r
--                      >\r
--                      <File\r
--                              RelativePath="..\lib\expat\xmltok\asciitab.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\expat\xmltok\iasciitab.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\expat\xmltok\latin1tab.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\expat\xmltok\nametab.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\expat\xmltok\utf8tab.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\expat\xmltok\xmldef.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\expat\xmltok\xmlrole.h"\r
--                              >\r
--                      </File>\r
--                      <File\r
--                              RelativePath="..\lib\expat\xmltok\xmltok.h"\r
--                              >\r
--                      </File>\r
--              </Filter>\r
--              <Filter\r
--                      Name="Resource Files"\r
--                      Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"\r
--                      >\r
--              </Filter>\r
--      </Files>\r
--      <Globals>\r
--      </Globals>\r
--</VisualStudioProject>\r
-diff --git a/libs/xmlrpc-c/Windows/xmltok.2010.vcxproj b/libs/xmlrpc-c/Windows/xmltok.2010.vcxproj
-deleted file mode 100644
-index a34b3f1..0000000
---- a/libs/xmlrpc-c/Windows/xmltok.2010.vcxproj
-+++ /dev/null
-@@ -1,213 +0,0 @@
--<?xml version="1.0" encoding="utf-8"?>\r
--<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
--  <ItemGroup Label="ProjectConfigurations">\r
--    <ProjectConfiguration Include="Debug|Win32">\r
--      <Configuration>Debug</Configuration>\r
--      <Platform>Win32</Platform>\r
--    </ProjectConfiguration>\r
--    <ProjectConfiguration Include="Debug|x64">\r
--      <Configuration>Debug</Configuration>\r
--      <Platform>x64</Platform>\r
--    </ProjectConfiguration>\r
--    <ProjectConfiguration Include="Release|Win32">\r
--      <Configuration>Release</Configuration>\r
--      <Platform>Win32</Platform>\r
--    </ProjectConfiguration>\r
--    <ProjectConfiguration Include="Release|x64">\r
--      <Configuration>Release</Configuration>\r
--      <Platform>x64</Platform>\r
--    </ProjectConfiguration>\r
--  </ItemGroup>\r
--  <PropertyGroup Label="Globals">\r
--    <ProjectName>xmltok</ProjectName>\r
--    <ProjectGuid>{B535402E-38D2-4D54-8360-423ACBD17192}</ProjectGuid>\r
--    <RootNamespace>xmltok</RootNamespace>\r
--  </PropertyGroup>\r
--  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
--  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
--    <ConfigurationType>StaticLibrary</ConfigurationType>\r
--    <UseOfMfc>false</UseOfMfc>\r
--    <CharacterSet>MultiByte</CharacterSet>\r
--  </PropertyGroup>\r
--  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
--    <ConfigurationType>StaticLibrary</ConfigurationType>\r
--    <UseOfMfc>false</UseOfMfc>\r
--    <CharacterSet>MultiByte</CharacterSet>\r
--  </PropertyGroup>\r
--  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
--    <ConfigurationType>StaticLibrary</ConfigurationType>\r
--    <UseOfMfc>false</UseOfMfc>\r
--    <CharacterSet>MultiByte</CharacterSet>\r
--  </PropertyGroup>\r
--  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
--    <ConfigurationType>StaticLibrary</ConfigurationType>\r
--    <UseOfMfc>false</UseOfMfc>\r
--    <CharacterSet>MultiByte</CharacterSet>\r
--  </PropertyGroup>\r
--  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
--  <ImportGroup Label="ExtensionSettings">\r
--  </ImportGroup>\r
--  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
--    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
--    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
--    <Import Project="..\..\..\w32\extlib.props" />\r
--  </ImportGroup>\r
--  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
--    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
--    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
--    <Import Project="..\..\..\w32\extlib.props" />\r
--  </ImportGroup>\r
--  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
--    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
--    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
--    <Import Project="..\..\..\w32\extlib.props" />\r
--  </ImportGroup>\r
--  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
--    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
--    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />\r
--    <Import Project="..\..\..\w32\extlib.props" />\r
--  </ImportGroup>\r
--  <PropertyGroup Label="UserMacros" />\r
--  <PropertyGroup>\r
--    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
--    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(PlatformName)\xmltok\$(Configuration)\</IntDir>\r
--    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(PlatformName)\xmltok\$(Configuration)\</IntDir>\r
--    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(PlatformName)\xmltok\$(Configuration)\</IntDir>\r
--    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(PlatformName)\xmltok\$(Configuration)\</IntDir>\r
--  </PropertyGroup>\r
--  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
--    <ClCompile>\r
--      <Optimization>Disabled</Optimization>\r
--      <AdditionalIncludeDirectories>..;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <MinimalRebuild>true</MinimalRebuild>\r
--      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
--      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
--      <WarningLevel>Level3</WarningLevel>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </ClCompile>\r
--    <ResourceCompile>\r
--      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <Culture>0x0409</Culture>\r
--    </ResourceCompile>\r
--    <Lib>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </Lib>\r
--    <Bscmake>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <OutputFile>.\Debug\xmltok/xmltok.bsc</OutputFile>\r
--    </Bscmake>\r
--  </ItemDefinitionGroup>\r
--  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
--    <Midl>\r
--      <TargetEnvironment>X64</TargetEnvironment>\r
--    </Midl>\r
--    <ClCompile>\r
--      <Optimization>Disabled</Optimization>\r
--      <AdditionalIncludeDirectories>..;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;XML_DTD;XML_NS;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <MinimalRebuild>true</MinimalRebuild>\r
--      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
--      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
--      <WarningLevel>Level3</WarningLevel>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </ClCompile>\r
--    <ResourceCompile>\r
--      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <Culture>0x0409</Culture>\r
--    </ResourceCompile>\r
--    <Lib>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </Lib>\r
--    <Bscmake>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <OutputFile>.\Debug\xmltok/xmltok.bsc</OutputFile>\r
--    </Bscmake>\r
--  </ItemDefinitionGroup>\r
--  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
--    <ClCompile>\r
--      <Optimization>MaxSpeed</Optimization>\r
--      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
--      <AdditionalIncludeDirectories>..;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions>NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <StringPooling>true</StringPooling>\r
--      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
--      <FunctionLevelLinking>true</FunctionLevelLinking>\r
--      <WarningLevel>Level3</WarningLevel>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </ClCompile>\r
--    <ResourceCompile>\r
--      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <Culture>0x0409</Culture>\r
--    </ResourceCompile>\r
--    <Lib>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </Lib>\r
--    <Bscmake>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <OutputFile>.\Release\xmltok/xmltok.bsc</OutputFile>\r
--    </Bscmake>\r
--  </ItemDefinitionGroup>\r
--  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
--    <Midl>\r
--      <TargetEnvironment>X64</TargetEnvironment>\r
--    </Midl>\r
--    <ClCompile>\r
--      <Optimization>MaxSpeed</Optimization>\r
--      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
--      <AdditionalIncludeDirectories>..;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions>NDEBUG;XML_NS;WIN32;_WINDOWS;XML_DTD;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <StringPooling>true</StringPooling>\r
--      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
--      <FunctionLevelLinking>true</FunctionLevelLinking>\r
--      <WarningLevel>Level3</WarningLevel>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </ClCompile>\r
--    <ResourceCompile>\r
--      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <Culture>0x0409</Culture>\r
--    </ResourceCompile>\r
--    <Lib>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--    </Lib>\r
--    <Bscmake>\r
--      <SuppressStartupBanner>true</SuppressStartupBanner>\r
--      <OutputFile>.\Release\xmltok/xmltok.bsc</OutputFile>\r
--    </Bscmake>\r
--  </ItemDefinitionGroup>\r
--  <ItemGroup>\r
--    <ClCompile Include="..\lib\expat\xmltok\xmlrole.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--    <ClCompile Include="..\lib\expat\xmltok\xmltok.c">\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
--      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
--    </ClCompile>\r
--  </ItemGroup>\r
--  <ItemGroup>\r
--    <ClInclude Include="..\lib\expat\xmltok\asciitab.h" />\r
--    <ClInclude Include="..\lib\expat\xmltok\iasciitab.h" />\r
--    <ClInclude Include="..\lib\expat\xmltok\latin1tab.h" />\r
--    <ClInclude Include="..\lib\expat\xmltok\nametab.h" />\r
--    <ClInclude Include="..\lib\expat\xmltok\utf8tab.h" />\r
--    <ClInclude Include="..\lib\expat\xmltok\xmldef.h" />\r
--    <ClInclude Include="..\lib\expat\xmltok\xmlrole.h" />\r
--    <ClInclude Include="..\lib\expat\xmltok\xmltok.h" />\r
--  </ItemGroup>\r
--  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
--  <ImportGroup Label="ExtensionTargets">\r
--  </ImportGroup>\r
--</Project>
-\ No newline at end of file
-diff --git a/libs/xmlrpc-c/Windows/xmltok.dsp b/libs/xmlrpc-c/Windows/xmltok.dsp
-index eaaebde..d9f88c8 100644
---- a/libs/xmlrpc-c/Windows/xmltok.dsp
-+++ b/libs/xmlrpc-c/Windows/xmltok.dsp
-@@ -41,7 +41,7 @@ RSC=rc.exe
- MTL=midl.exe\r
- LINK32=link.exe -lib\r
- # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /YX /FD /c\r
--# ADD CPP /nologo /MT /W3 /GX /O2 /I ".." /D "NDEBUG" /D "XML_NS" /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "_MBCS" /D "_LIB" /YX /FD /c\r
-+# ADD CPP /nologo /MT /W3 /GX /O2 /I ".." /I "..\lib\util\include" /D "NDEBUG" /D "XML_NS" /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "_MBCS" /D "_LIB" /YX /FD /c\r
- # ADD BASE RSC /l 0x409 /d "NDEBUG"\r
- # ADD RSC /l 0x409 /d "NDEBUG"\r
- BSC32=bscmake.exe\r
-@@ -66,7 +66,7 @@ LIB32=link.exe -lib
- MTL=midl.exe\r
- LINK32=link.exe -lib\r
- # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c\r
--# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I ".." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "XML_NS" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c\r
-+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I ".." /I "..\lib\util\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "XML_NS" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c\r
- # ADD BASE RSC /l 0x409 /d "_DEBUG"\r
- # ADD RSC /l 0x409 /d "_DEBUG"\r
- BSC32=bscmake.exe\r
-diff --git a/libs/xmlrpc-c/common.mk b/libs/xmlrpc-c/common.mk
-index 5b89fa1..a20bf42 100644
---- a/libs/xmlrpc-c/common.mk
-+++ b/libs/xmlrpc-c/common.mk
-@@ -9,7 +9,7 @@
- # SRCDIR:  Name of directory which is the top of the Xmlrpc-c source tree.
- # BLDDIR: Name of directory which is the top of the Xmlrpc-c build tree.
--include $(SRCDIR)/Makefile.version
-+include $(SRCDIR)/version.mk
- # .DELETE_ON_ERROR is a special predefined Make target that says to delete
- # the target if a command in the rule for it fails.  That's important,
-@@ -17,13 +17,27 @@ include $(SRCDIR)/Makefile.version
- # fully made.
- .DELETE_ON_ERROR:
--GCC_WARNINGS = -Wall -Wundef -Wimplicit -W -Winline -Wundef
-+GCC_WARNINGS = -Wall -W -Wno-uninitialized -Wundef -Wimplicit -Winline \
-+  -Wno-unknown-pragmas
-   # We need -Wwrite-strings after we fix all the missing consts
-+  #
-+  # -Wuninitialized catches some great bugs, but it also flags a whole lot
-+  # of perfectly good code that can't be written any better.  Too bad there's
-+  # no way to annotate particular variables as being OK, so we could turn
-+  # on -Wuninitialized for all the others.
- GCC_C_WARNINGS = $(GCC_WARNINGS) \
-   -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes
--GCC_CXX_WARNINGS = $(GCC_WARNINGS) -Woverloaded-virtual -Wsynth
-+GCC_CXX_WARNINGS = $(GCC_WARNINGS)  -Wsynth
-+
-+# Before 09.05.20, we had -Woverloaded-virtual, but it doesn't seem to do
-+# anything useful.  It causes a warning that a method was hidden, but
-+# experiments show nothing is actually hidden.  The GCC manual's description
-+# of what it does does not match empirical evidence.  The option causes
-+# warnings when a derived class of xmlrpc_c::method2 overrides one of the
-+# execute() methods and not the other (as cpp/test/registry.cpp does), but the
-+# code works fine.
- # The NDEBUG macro says not to build code that assumes there are no bugs.
- # This makes the code go faster.  The main thing it does is tell the C library
-@@ -55,12 +69,21 @@ ifeq ($(CURDIR)x,x)
-   CURDIR := $(shell /bin/pwd)
- endif
-+# The package XmlRpc++ on Sourceforge includes a library named
-+# libxmlrpc++ just as Xmlrpc-c does.  To use them both, you may need
-+# to rename one.  To rename the Xmlrpc-c one, set the make variable
-+# LIBXMLRPCPP_NAME, e.g. on the 'make' command line.
-+
-+ifeq ($(LIBXMLRPCPP_NAME),)
-+  LIBXMLRPCPP_NAME := xmlrpc++
-+endif
-+
- ##############################################################################
- #                        STATIC LINK LIBRARY RULES                           #
- ##############################################################################
--# To use this rule, the including make file must set a target_specific
-+# To use this rule, the including make file must set a target-specific
- # variable LIBOBJECTS (and declare dependencies that include LIBOBJECTS).
- # Example:
- #   FOO_OBJECTS = foo1.o foo2.o
-@@ -81,19 +104,19 @@ $(TARGET_STATIC_LIBRARIES):
- ##############################################################################
- ifeq ($(SHARED_LIB_TYPE),unix)
--  include $(SRCDIR)/unix-common.make
-+  include $(SRCDIR)/unix-common.mk
-   endif
- ifeq ($(SHARED_LIB_TYPE),irix)
--  include $(SRCDIR)/irix-common.make
-+  include $(SRCDIR)/irix-common.mk
-   endif
- ifeq ($(SHARED_LIB_TYPE),dll)
--  include $(SRCDIR)/dll-common.make
-+  include $(SRCDIR)/dll-common.mk
-   endif
- ifeq ($(SHARED_LIB_TYPE),dylib)
--  include $(SRCDIR)/dylib-common.make
-+  include $(SRCDIR)/dylib-common.mk
-   endif
- ifeq ($(SHARED_LIB_TYPE),NONE)
-@@ -127,10 +150,10 @@ endif
- #------ the actual rules ----------------------------------------------------
- $(TARGET_SHARED_LIBRARIES) dummyshlib:
--      $(CCLD) $(LDFLAGS_SHLIB) $(LIBDEP) -o $@ $(LIBOBJECTS) $(LADD)
-+      $(CCLD) $(LADD) $(LDFLAGS_SHLIB) $(LIBOBJECTS) $(LIBDEP) -o $@  
- $(TARGET_SHARED_LIBS_PP) dummyshlibpp:
--      $(CXXLD) $(LDFLAGS_SHLIB) $(LIBDEP) -o $@ $(LIBOBJECTS) $(LADD)
-+      $(CXXLD) $(LADD) $(LDFLAGS_SHLIB) $(LIBOBJECTS) $(LIBDEP) -o $@  
- #----------------------------------------------------------------------------
- LIBXMLRPC_UTIL_DIR = $(BLDDIR)/lib/libutil
-@@ -186,7 +209,6 @@ LIBXMLRPC_ABYSS          = \
- LIBXMLRPC_ABYSS_A        = $(LIBXMLRPC_ABYSS_DIR)/libxmlrpc_abyss.a
- endif
--ifneq ($(OMIT_CPP_LIB_RULES),Y)
- LIBXMLRPC_CPP              = \
-   $(call shliblefn, $(BLDDIR)/src/cpp/libxmlrpc_cpp)
- LIBXMLRPC_CPP_A            = $(BLDDIR)/src/cpp/libxmlrpc_cpp.a
-@@ -208,7 +230,6 @@ LIBXMLRPC_SERVER_ABYSSPP_A = $(BLDDIR)/src/cpp/libxmlrpc_server_abyss++.a
- LIBXMLRPC_SERVER_PSTREAMPP = \
-   $(call shliblefn, $(BLDDIR)/src/cpp/libxmlrpc_server_pstream++)
- LIBXMLRPC_SERVER_PSTREAMPP_A = $(BLDDIR)/src/cpp/libxmlrpc_server_pstream++.a
--endif
- # LIBXMLRPC_XML is the list of Xmlrpc-c libraries we need to parse
- # XML.  If we're using an external library to parse XML, this is null.
-@@ -239,31 +260,41 @@ endif
- #   foo.o foo.osh: INCLUDES = -Iinclude -I/usr/include/foostuff
- #   bar.o bar.osh: INCLUDES = -Iinclude -I/usr/include/barstuff
- #
--#   include Makefile.common
-+#   include common.mk
- #
- # The above generates rules to build foo.o, bar.o, foo.osh, and bar.osh
- #
- # For C++ source files, use TARGET_MODS_PP instead.
--# CFLAGS and CXXFLAGS are designed to be overridden on the make command
--# line.  We pile all the options except -I into these variables so the
--# user can override them all if he wants.
-+# CFLAGS and CXXFLAGS are designed to be picked up as environment
-+# variables.  The user may use them to add inclusion search directories
-+# (-I) or control 32/64 bitness or the like.  Using these is always
-+# iffy, because the options one might include can interact in unpredictable
-+# ways with what the make file is trying to do.  But at least some users
-+# get useful results.
-+
-+CFLAGS_ALL = $(CFLAGS_COMMON) $(CFLAGS_LOCAL) $(CFLAGS) \
-+  $(INCLUDES) $(CFLAGS_PERSONAL) $(CADD)
-+
-+CXXFLAGS_ALL = $(CXXFLAGS_COMMON) $(CFLAGS_LOCAL) $(CXXFLAGS) \
-+  $(INCLUDES) $(CFLAGS_PERSONAL) $(CADD)
-+
- $(TARGET_MODS:%=%.o):%.o:%.c
--      $(CC) -c -o $@ $(INCLUDES) $(CFLAGS) $<
-+      $(CC) -c -o $@ $(CFLAGS_ALL) $<
- $(TARGET_MODS:%=%.osh): CFLAGS_COMMON += $(CFLAGS_SHLIB)
- $(TARGET_MODS:%=%.osh):%.osh:%.c
--      $(CC) -c -o $@ $(INCLUDES) $(CFLAGS) $(CFLAGS_SHLIB) $<
-+      $(CC) -c -o $@ $(INCLUDES) $(CFLAGS_ALL) $(CFLAGS_SHLIB) $<
- $(TARGET_MODS_PP:%=%.o):%.o:%.cpp
--      $(CXX) -c -o $@ $(INCLUDES) $(CXXFLAGS) $<
-+      $(CXX) -c -o $@ $(INCLUDES) $(CXXFLAGS_ALL) $<
- $(TARGET_MODS_PP:%=%.osh): CXXFLAGS_COMMON += $(CFLAGS_SHLIB)
- $(TARGET_MODS_PP:%=%.osh):%.osh:%.cpp
--      $(CXX) -c -o $@ $(INCLUDES) $(CXXFLAGS) $<
-+      $(CXX) -c -o $@ $(INCLUDES) $(CXXFLAGS_ALL) $<
- ##############################################################################
-@@ -278,11 +309,6 @@ $(TARGET_MODS_PP:%=%.osh):%.osh:%.cpp
- # to rebuild the symbolic link.  So we don't make $(SRCDIR) a
- # dependency of 'srcdir'.
--# We should do the same for 'blddir'.  We did once before, then undid
--# it in an erroneous effort to enable parallel make.  It's a little harder
--# with blddir; when we did it before, we had to use the non-symlink
--# version in a few places.
--
- srcdir:
-       $(LN_S) $(SRCDIR) $@
- blddir:
-@@ -343,6 +369,12 @@ endif
- ifneq ($(OMIT_CURL_TRANSPORT_RULE),Y)
- $(BLDDIR)/lib/curl_transport/xmlrpc_curl_transport.o \
- $(BLDDIR)/lib/curl_transport/xmlrpc_curl_transport.osh \
-+$(BLDDIR)/lib/curl_transport/curltransaction.o \
-+$(BLDDIR)/lib/curl_transport/curltransaction.osh \
-+$(BLDDIR)/lib/curl_transport/curlmulti.o \
-+$(BLDDIR)/lib/curl_transport/curlmulti.osh \
-+$(BLDDIR)/lib/curl_transport/lock_pthread.o \
-+$(BLDDIR)/lib/curl_transport/lock_pthread.osh \
- : FORCE
-       $(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/curl_transport/Makefile \
-           $(notdir $@)
-@@ -385,6 +417,8 @@ $(LIBXMLRPC_ABYSS) $(LIBXMLRPC_ABYSS_A): FORCE
-       $(MAKE) -C $(dir $@) -f $(SRCDIR)/lib/abyss/src/Makefile \
-           $(notdir $@)
-+ifneq ($(OMIT_CPP_LIB_RULES),Y)
-+
- $(LIBXMLRPCPP) $(LIBXMLRPCPP_A) \
- $(LIBXMLRPC_PACKETSOCKET) $(LIBXMLRPC_PACKETSOCKET_A) \
- $(LIBXMLRPC_CLIENTPP) $(LIBXMLRPC_CLIENTPP_A) \
-@@ -394,6 +428,7 @@ $(LIBXMLRPC_SERVER_PSTREAMPP) $(LIBXMLRPC_SERVER_PSTREAMPP_A) \
- $(LIBXMLRPC_CPP) $(LIBXMLRPC_CPP_A) : FORCE
-       $(MAKE) -C $(dir $@) -f $(SRCDIR)/src/cpp/Makefile \
-           $(notdir $@)
-+endif
- # For the following utilities, we don't bother with a library -- we
- # just explicitly link the object file we need.  This is to save
-@@ -421,12 +456,12 @@ CASPRINTF = $(UTIL_DIR)/casprintf.o
- # About version.h:  This is a built header file, which means it is a supreme
- # pain in the ass.  The biggest problem is that when we automatically make
--# dependencies (Makefile.depend), it doesn't exist yet.  This means Gcc
-+# dependencies (depend.mk), it doesn't exist yet.  This means Gcc
- # generates a dependency on it being in the local directory.  Therefore,
- # we generate it in the local directory, as a symbolic link, wherever it
- # is needed.  But the original is always in the top level directory,
- # generated by a rule in that directory's make file.  Problem 2 is that
--# the top directory's make file includes Makefile.common, so the rules
-+# the top directory's make file includes common.mk, so the rules
- # below conflict with it.  That's what OMIT_VERSION_H is for.
- ifneq ($(OMIT_VERSION_H),Y)
-@@ -471,10 +506,10 @@ $(SUBDIRS:%=$(CURDIR)/%):
- MKINSTALLDIRS = $(SHELL) $(SRCDIR)/mkinstalldirs
--.PHONY: install-common install-ltlibraries install-headers install-bin
-+.PHONY: install-common install-headers install-bin install-man
- install-common: \
--  install-ltlibraries install-static-libraries install-shared-libraries \
--  install-headers install-bin
-+  install-static-libraries install-shared-libraries \
-+  install-headers install-bin install-man
- INSTALL_LIB_CMD = $(INSTALL_DATA) $$p $(DESTDIR)$(LIBINST_DIR)/$$p
- RANLIB_CMD = $(RANLIB) $(DESTDIR)$(LIBINST_DIR)/$$p
-@@ -520,6 +555,16 @@ install-bin: $(PROGRAMS_TO_INSTALL) $(DESTDIR)$(PROGRAMINST_DIR)
- $(DESTDIR)$(PROGRAMINST_DIR):
-       $(MKINSTALLDIRS) $@
-+MANDESTDIR = $(DESTDIR)$(MANINST_DIR)
-+INSTALL_MAN_CMD = $(INSTALL_DATA) $$p $(MANDESTDIR)/$$p
-+
-+install-man: $(MAN_FILES_TO_INSTALL)
-+      $(MKINSTALLDIRS) $(MANDESTDIR)
-+      @list='$(MAN_FILES_TO_INSTALL)'; \
-+         for p in $$list; do \
-+         echo "$(MAN_FILES_TO_INSTALL)"; \
-+         $(INSTALL_MAN_CMD); \
-+       done
- ##############################################################################
- #                           MISCELLANEOUS RULES                              #
-@@ -536,29 +581,30 @@ endif
- .PHONY: distclean-common
- distclean-common:
--# Makefile.depend is generated by 'make dep' and contains only dependencies
-+# depend.mk is generated by 'make dep' and contains only dependencies
- # that make parts get _rebuilt_ when parts upon which they depend change.
- # It does not contain dependencies that are necessary to cause a part to
- # get built in the first place.  E.g. if foo.c uses bar.h and bar.h gets built
- # by a make rule, you must put the dependency of foo.c on bar.h somewhere
--# besides Makefile.depend.
-+# besides depend.mk.
- #
--# Because of this, a user doesn't need Makefile.depend, because he
-+# Because of this, a user doesn't need depend.mk, because he
- # doesn't modify source files.  A developer, on the other hand, must make his
--# own Makefile.depend, because 'make dep' creates Makefile.depend with 
-+# own depend.mk, because 'make dep' creates depend.mk with 
- # absolute pathnames, specific to the developer's system.
- #
--# So we obliterate Makefile.depend here.  The build will automatically
--# create an empty Makefile.depend when it is needed for the user.  The
-+# So we obliterate depend.mk here.  The build will automatically
-+# create an empty depend.mk when it is needed for the user.  The
- # developer must do 'make dep' if he wants to edit and rebuild.
- #
- # Other projects have the build automatically build a true
--# Makefile.depend, suitable for a developer.  We have found that to be
-+# depend.mk, suitable for a developer.  We have found that to be
- # an utter disaster -- it's way too complicated and prone to failure,
- # especially with built .h files.  Better not to burden the user, who
- # gains nothing from it, with that.
- #
--      rm -f Makefile.depend
-+      rm -f depend.mk
-+      rm -f Makefile.depend  # We used to create a file by this name
-       rm -f srcdir blddir
- .PHONY: distdir-common
-@@ -589,17 +635,17 @@ dep-common: FORCE
- ifneq ($(DEP_SOURCES)x,x)
-       -$(CC) -MM -MG -I. $(INCLUDES) $(DEP_SOURCES) | \
-         $(DEPEND_MASSAGER) \
--        >Makefile.depend
-+        >depend.mk
- endif
--Makefile.depend:
-+depend.mk:
-       cat /dev/null >$@
- # The automatic dependency generation is a pain in the butt and
- # totally unnecessary for people just installing the distributed code,
- # so to avoid needless failures in the field and a complex build, the
--# 'distclean' target simply makes Makefile.depend an empty file.  A
--# developer may do 'make dep' to create a Makefile.depend full of real
-+# 'distclean' target simply makes depend.mk an empty file.  A
-+# developer may do 'make dep' to create a depend.mk full of real
- # dependencies.
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
-diff --git a/libs/xmlrpc-c/conf/abyss_root/conf/abyss.conf b/libs/xmlrpc-c/conf/abyss_root/conf/abyss.conf
-deleted file mode 100644
-index f9c09f2..0000000
---- a/libs/xmlrpc-c/conf/abyss_root/conf/abyss.conf
-+++ /dev/null
-@@ -1,56 +0,0 @@
--# ABYSS Web Server configuration file
--# (C) Moez Mahfoudh - 2000
--
--# Cases in option names are ignored, 
--# that means that PORT=port=PoRT=..
--
--# When writing paths, do not worry about / or \ use.
--# ABYSS will substitute / with \ on Win32 systems.
--
--# Options which are system specific (such as User) are
--# ignored on systems which do not handle them.
--
--# The Port option tells the server on which TCP port to listen.
--# default is 80
--Port 8080
--
--# The name or #number of the user to run the server as if it is 
--# launched as root (UNIX specific)
--User nobody
--
--# The Server Root (UNIX systems style)
--ServerRoot conf/abyss_root
--
--# The Server Root (Win32 systems style)
--# ServerRoot G:\XML\xmlrpc-c-0.9.5\conf\abyss_root
--
--# The Path option specifies the web files path.
--Path htdocs
--
--# The Default option contains the name of the files the server should
--# look for when only a path is given (e.g. http://myserver/info/).
--Default index.html index.htm INDEX.HTM INDEX.HTML
--
--# The KeepAlive option is used to set the maximum number of requests
--# served using the same persistent connection.
--KeepAlive 10
--
--# The TimeOut option tells the server how much seconds to wait for
--# an idle connection before closing it.
--TimeOut 10
--
--# The MimeTypes option specifies the location of the file
--# containing the mapping of MIME types and files extensions
--MimeTypes conf/mime.types
--
--# The path of the log file
--LogFile log/access.log
--
--# The file where the pid of the server is logged (UNIX specific)
--PidFile log/abyss.pid
--
--# If AdvertiseServer if set to no, then no server field would be
--# appended to the responses. This is the way to make the server
--# identity unknown to some malicious people which can profit from
--# well known security holes in the software to crash it.
--AdvertiseServer yes
-diff --git a/libs/xmlrpc-c/conf/abyss_root/conf/mime.types b/libs/xmlrpc-c/conf/abyss_root/conf/mime.types
-deleted file mode 100644
-index d53db0f..0000000
---- a/libs/xmlrpc-c/conf/abyss_root/conf/mime.types
-+++ /dev/null
-@@ -1,276 +0,0 @@
--# This is a comment. I love comments.
--
--# This file controls what Internet media types are sent to the client for
--# given file extension(s).  Sending the correct media type to the client
--# is important so they know how to handle the content of the file.
--# Extra types can either be added here or by using an AddType directive
--# in your config files. For more information about Internet media types,
--# please read RFC 2045, 2046, 2047, 2048, and 2077.  The Internet media type
--# registry is at <ftp://ftp.iana.org/in-notes/iana/assignments/media-types/>.
--
--# MIME type                   Extension
--application/EDI-Consent
--application/EDI-X12
--application/EDIFACT
--application/activemessage
--application/andrew-inset      ez
--application/applefile
--application/atomicmail
--application/cals-1840
--application/commonground
--application/cybercash
--application/dca-rft
--application/dec-dx
--application/eshop
--application/hyperstudio
--application/iges
--application/mac-binhex40      hqx
--application/mac-compactpro    cpt
--application/macwriteii
--application/marc
--application/mathematica
--application/msword            doc
--application/news-message-id
--application/news-transmission
--application/octet-stream      bin dms lha lzh exe class
--application/oda                       oda
--application/pdf                       pdf
--application/pgp-encrypted
--application/pgp-keys
--application/pgp-signature
--application/pkcs10
--application/pkcs7-mime
--application/pkcs7-signature
--application/postscript                ai eps ps
--application/prs.alvestrand.titrax-sheet
--application/prs.cww
--application/prs.nprend
--application/remote-printing
--application/riscos
--application/rtf                       rtf
--application/set-payment
--application/set-payment-initiation
--application/set-registration
--application/set-registration-initiation
--application/sgml
--application/sgml-open-catalog
--application/slate
--application/smil              smi smil
--application/vemmi
--application/vnd.3M.Post-it-Notes
--application/vnd.FloGraphIt
--application/vnd.acucobol
--application/vnd.anser-web-certificate-issue-initiation
--application/vnd.anser-web-funds-transfer-initiation
--application/vnd.audiograph
--application/vnd.businessobjects
--application/vnd.claymore
--application/vnd.comsocaller
--application/vnd.dna
--application/vnd.dxr
--application/vnd.ecdis-update
--application/vnd.ecowin.chart
--application/vnd.ecowin.filerequest
--application/vnd.ecowin.fileupdate
--application/vnd.ecowin.series
--application/vnd.ecowin.seriesrequest
--application/vnd.ecowin.seriesupdate
--application/vnd.enliven
--application/vnd.epson.salt
--application/vnd.fdf
--application/vnd.ffsns
--application/vnd.framemaker
--application/vnd.fujitsu.oasys
--application/vnd.fujitsu.oasys2
--application/vnd.fujitsu.oasys3
--application/vnd.fujitsu.oasysgp
--application/vnd.fujitsu.oasysprs
--application/vnd.fujixerox.docuworks
--application/vnd.hp-HPGL
--application/vnd.hp-PCL
--application/vnd.hp-PCLXL
--application/vnd.hp-hps
--application/vnd.ibm.MiniPay
--application/vnd.ibm.modcap
--application/vnd.intercon.formnet
--application/vnd.intertrust.digibox
--application/vnd.intertrust.nncp
--application/vnd.is-xpr
--application/vnd.japannet-directory-service
--application/vnd.japannet-jpnstore-wakeup
--application/vnd.japannet-payment-wakeup
--application/vnd.japannet-registration
--application/vnd.japannet-registration-wakeup
--application/vnd.japannet-setstore-wakeup
--application/vnd.japannet-verification
--application/vnd.japannet-verification-wakeup
--application/vnd.koan
--application/vnd.lotus-1-2-3
--application/vnd.lotus-approach
--application/vnd.lotus-freelance
--application/vnd.lotus-organizer
--application/vnd.lotus-screencam
--application/vnd.lotus-wordpro
--application/vnd.meridian-slingshot
--application/vnd.mif           mif
--application/vnd.minisoft-hp3000-save
--application/vnd.mitsubishi.misty-guard.trustweb
--application/vnd.ms-artgalry
--application/vnd.ms-asf
--application/vnd.ms-excel      xls
--application/vnd.ms-powerpoint ppt
--application/vnd.ms-project
--application/vnd.ms-tnef
--application/vnd.ms-works
--application/vnd.music-niff
--application/vnd.musician
--application/vnd.netfpx
--application/vnd.noblenet-directory
--application/vnd.noblenet-sealer
--application/vnd.noblenet-web
--application/vnd.novadigm.EDM
--application/vnd.novadigm.EDX
--application/vnd.novadigm.EXT
--application/vnd.osa.netdeploy
--application/vnd.powerbuilder6
--application/vnd.powerbuilder6-s
--application/vnd.rapid
--application/vnd.seemail
--application/vnd.shana.informed.formtemplate
--application/vnd.shana.informed.interchange
--application/vnd.shana.informed.package
--application/vnd.street-stream
--application/vnd.svd
--application/vnd.swiftview-ics
--application/vnd.truedoc
--application/vnd.visio
--application/vnd.webturbo
--application/vnd.wrq-hp3000-labelled
--application/vnd.wt.stf
--application/vnd.xara
--application/vnd.yellowriver-custom-menu
--application/wita
--application/wordperfect5.1
--application/x-bcpio           bcpio
--application/x-cdlink          vcd
--application/x-chess-pgn               pgn
--application/x-compress
--application/x-cpio            cpio
--application/x-csh             csh
--application/x-director                dcr dir dxr
--application/x-dvi             dvi
--application/x-futuresplash    spl
--application/x-gtar            gtar
--application/x-gzip
--application/x-hdf             hdf
--application/x-javascript      js
--application/x-koan            skp skd skt skm
--application/x-latex           latex
--application/x-netcdf          nc cdf
--application/x-sh              sh
--application/x-shar            shar
--application/x-shockwave-flash swf
--application/x-stuffit         sit
--application/x-sv4cpio         sv4cpio
--application/x-sv4crc          sv4crc
--application/x-tar             tar
--application/x-tcl             tcl
--application/x-tex             tex
--application/x-texinfo         texinfo texi
--application/x-troff           t tr roff
--application/x-troff-man               man
--application/x-troff-me                me
--application/x-troff-ms                ms
--application/x-ustar           ustar
--application/x-wais-source     src
--application/x400-bp
--application/xml
--application/zip                       zip
--audio/32kadpcm
--audio/basic                   au snd
--audio/midi                    mid midi kar
--audio/mpeg                    mpga mp2 mp3
--audio/vnd.qcelp
--audio/x-aiff                  aif aiff aifc
--audio/x-pn-realaudio          ram rm
--audio/x-pn-realaudio-plugin   rpm
--audio/x-realaudio             ra
--audio/x-wav                   wav
--chemical/x-pdb                        pdb xyz
--image/bmp                     bmp
--image/cgm
--image/g3fax
--image/gif                     gif
--image/ief                     ief
--image/jpeg                    jpeg jpg jpe
--image/naplps
--image/png                     png
--image/prs.btif
--image/tiff                    tiff tif
--image/vnd.dwg
--image/vnd.dxf
--image/vnd.fpx
--image/vnd.net-fpx
--image/vnd.svf
--image/vnd.xiff
--image/x-cmu-raster            ras
--image/x-portable-anymap               pnm
--image/x-portable-bitmap               pbm
--image/x-portable-graymap      pgm
--image/x-portable-pixmap               ppm
--image/x-rgb                   rgb
--image/x-xbitmap                       xbm
--image/x-xpixmap                       xpm
--image/x-xwindowdump           xwd
--message/delivery-status
--message/disposition-notification
--message/external-body
--message/http
--message/news
--message/partial
--message/rfc822
--model/iges                    igs iges
--model/mesh                    msh mesh silo
--model/vnd.dwf
--model/vrml                    wrl vrml
--multipart/alternative
--multipart/appledouble
--multipart/byteranges
--multipart/digest
--multipart/encrypted
--multipart/form-data
--multipart/header-set
--multipart/mixed
--multipart/parallel
--multipart/related
--multipart/report
--multipart/signed
--multipart/voice-message
--text/css                      css
--text/directory
--text/enriched
--text/html                     html htm
--text/plain                    asc txt
--text/prs.lines.tag
--text/rfc822-headers
--text/richtext                 rtx
--text/rtf                      rtf
--text/sgml                     sgml sgm
--text/tab-separated-values     tsv
--text/uri-list
--text/vnd.abc
--text/vnd.flatland.3dml
--text/vnd.fmi.flexstor
--text/vnd.in3d.3dml
--text/vnd.in3d.spot
--text/vnd.latex-z
--text/x-setext                 etx
--text/xml                      xml
--video/mpeg                    mpeg mpg mpe
--video/quicktime                       qt mov
--video/vnd.motorola.video
--video/vnd.motorola.videop
--video/vnd.vivo
--video/x-msvideo                       avi
--video/x-sgi-movie             movie
--x-conference/x-cooltalk               ice
-diff --git a/libs/xmlrpc-c/conf/abyss_root/htdocs/index.htm b/libs/xmlrpc-c/conf/abyss_root/htdocs/index.htm
-deleted file mode 100644
-index f0369a5..0000000
---- a/libs/xmlrpc-c/conf/abyss_root/htdocs/index.htm
-+++ /dev/null
-@@ -1,21 +0,0 @@
--<HTML>
--<HEAD>
--<TITLE>ABYSS is working !!!</TITLE>
--</HEAD>
--<BODY bgColor=#80a0f0 text=#000000>
--<H1 align=center>Congratulations, ABYSS is working !!!</H1>
--<BR>
--<P>
--<B>ABYSS</B> Web Server is working correctly on your system. You should now change this
--page with yours.
--<BR>
--Please include in your web pages (at least the first), the <b><i>'Powered by ABYSS'</i></b>
--banner to promote the use of <B>ABYSS</B>.
--</P>
--<hr>
--<P>
--<CENTER><FONT size=-1>
--Copyright © 2000 <A href="mailto:mmoez@bigfoot.com">Moez Mahfoudh</A>. All rights reserved.
--</FONT>
--<BR><BR><A href="http://abyss.linuxave.net/"><IMG border=0 src="pwrabyss.gif"></A></center></P>
--</BODY></HTML>
-diff --git a/libs/xmlrpc-c/config.mk.in b/libs/xmlrpc-c/config.mk.in
-index b583e6e..bebfa54 100644
---- a/libs/xmlrpc-c/config.mk.in
-+++ b/libs/xmlrpc-c/config.mk.in
-@@ -27,16 +27,15 @@ ENABLE_LIBXML2_BACKEND = @ENABLE_LIBXML2_BACKEND@
- MUST_BUILD_WININET_CLIENT = @MUST_BUILD_WININET_CLIENT@
- MUST_BUILD_CURL_CLIENT    = @MUST_BUILD_CURL_CLIENT@
- MUST_BUILD_LIBWWW_CLIENT  = @MUST_BUILD_LIBWWW_CLIENT@
-+BUILD_TOOLS  = @BUILD_TOOLS@
-+BUILD_XMLRPC_PSTREAM  = @BUILD_XMLRPC_PSTREAM@
- LSOCKET = @LSOCKET@
- WININET_LDADD = @WININET_LDADD@
--WININET_RPATH = @WININET_RPATH@
--WININET_WL_RPATH = @WININET_WL_RPATH@
-+WININET_LIBDIR = @WININET_LIBDIR@
- CURL_LDADD = @CURL_LDADD@
--CURL_RPATH = @CURL_RPATH@
--CURL_WL_RPATH = @CURL_WL_RPATH@
-+CURL_LIBDIR = @CURL_LIBDIR@
- LIBWWW_LDADD = @LIBWWW_LDADD@
--LIBWWW_RPATH = @LIBWWW_RPATH@
--LIBWWW_WL_RPATH = @LIBWWW_WL_RPATH@
-+LIBWWW_LIBDIR = @LIBWWW_LIBDIR@
- FEATURE_LIST = @FEATURE_LIST@
- ABS_SRCDIR = @abs_srcdir@
- PREFIX = @prefix@
-@@ -164,7 +163,10 @@ MUST_BUILD_SHLIBLE = N
- shlibfn = $(1:%=%.shlibdummy)
- shliblefn = $(1:%=%.shlibledummy)
--ifeq ($(HOST_OS),linux-gnu)
-+# HOST_OS is usually has a version number suffix, e.g. "aix5.3.0.0", so
-+# we compare based on prefix.
-+
-+ifeq ($(patsubst linux-gnu%,linux-gnu,$(HOST_OS)),linux-gnu)
-   # Assume linker is GNU Compiler (gcc)
-   SHARED_LIB_TYPE = unix
-   MUST_BUILD_SHLIB = Y
-@@ -177,20 +179,28 @@ ifeq ($(HOST_OS),linux-gnu)
-   CFLAGS_SHLIB=-fPIC
- endif
--ifeq ($(findstring solaris,$(HOST_OS)),solaris)
-+ifeq ($(patsubst solaris%,solaris,$(HOST_OS)),solaris)
-   SHARED_LIB_TYPE = unix
-   MUST_BUILD_SHLIB = Y
-   MUST_BUILD_SHLIBLE = Y
-   SHLIB_SUFFIX = so
-   shlibfn = $(1:%=%.$(SHLIB_SUFFIX).$(MAJ).$(MIN))
-   shliblefn = $(1:%=%.$(SHLIB_SUFFIX))
-+  # We assume Sun compiler and linker here.  It isn't clear what to do
-+  # about a user who uses GNU compiler and Ld instead.  For that, the
-+  # options should be the same as "linux-gnu" platform, above, except
-+  # with NEED_WL_RPATH.  If the user uses the GNU compiler but the Sun
-+  # linker, it's even more complicated: we need an rpath option of the
-+  # form -Wl,-R .
-+
-   # Solaris compiler (Sun C 5.5) can't take multiple ld options as
-   # -Wl,-a,-b .  Ld sees -a,-b in that case.
-   LDFLAGS_SHLIB = -Wl,-Bdynamic -Wl,-G -Wl,-h -Wl,$(SONAME)
-   CFLAGS_SHLIB = -Kpic
-+  NEED_RPATH=yes
- endif
--ifeq ($(HOST_OS),aix)
-+ifeq ($(patsubst aix%,aix,$(HOST_OS)),aix)
-   SHARED_LIB_TYPE = unix
-   MUST_BUILD_SHLIB = Y
-   MUST_BUILD_SHLIBLE = Y
-@@ -200,7 +210,7 @@ ifeq ($(HOST_OS),aix)
-   LDFLAGS_SHLIB = -qmkshrobj
- endif
--ifeq ($(HOST_OS),hpux)
-+ifeq ($(patsubst hpux%,hpux,$(HOST_OS)),hpux)
-   SHARED_LIB_TYPE = unix
-   MUST_BUILD_SHLIB = Y
-   MUST_BUILD_SHLIBLE = Y
-@@ -210,7 +220,7 @@ ifeq ($(HOST_OS),hpux)
-   LDFLAGS_SHLIB: -shared -fPIC
- endif
--ifeq ($(HOST_OS),osf)
-+ifeq ($(patsubst osf%,osf,$(HOST_OS)),osf)
-   SHARED_LIB_TYPE = unix
-   MUST_BUILD_SHLIB = Y
-   MUST_BUILD_SHLIBLE = Y
-@@ -220,7 +230,7 @@ ifeq ($(HOST_OS),osf)
-   LDFLAGS_SHLIB = -shared -expect_unresolved
- endif
--ifeq ($(findstring netbsd,$(HOST_OS)),netbsd)
-+ifeq ($(patsubst netbsd%,netbsd,$(HOST_OS)),netbsd)
-   SHARED_LIB_TYPE = unix
-   SHLIB_SUFFIX = so
-   MUST_BUILD_SHLIB = Y
-@@ -232,7 +242,31 @@ ifeq ($(findstring netbsd,$(HOST_OS)),netbsd)
-   NEED_WL_RPATH=yes
- endif
--ifeq ($(HOST_OS),dragonfly)
-+ifeq ($(patsubst freebsd%,freebsd,$(HOST_OS)),freebsd)
-+  SHARED_LIB_TYPE = unix
-+  SHLIB_SUFFIX = so
-+  MUST_BUILD_SHLIB = Y
-+  MUST_BUILD_SHLIBLE = Y
-+  shlibfn = $(1:%=%.$(SHLIB_SUFFIX).$(MAJ).$(MIN))
-+  shliblefn = $(1:%=%.$(SHLIB_SUFFIX))
-+  CFLAGS_SHLIB = -fpic
-+  LDFLAGS_SHLIB = -shared -Wl,-soname,$(SONAME) $(SHLIB_CLIB)
-+  NEED_WL_RPATH=yes
-+endif
-+
-+ifeq ($(findstring interix,$(HOST_OS)),interix)
-+  SHARED_LIB_TYPE = unix
-+  SHLIB_SUFFIX = so
-+  MUST_BUILD_SHLIB = Y
-+  MUST_BUILD_SHLIBLE = Y
-+  shlibfn = $(1:%=%.$(SHLIB_SUFFIX).$(MAJ).$(MIN))
-+  shliblefn = $(1:%=%.$(SHLIB_SUFFIX))
-+  CFLAGS_SHLIB =
-+  LDFLAGS_SHLIB = -shared -Wl,-soname,$(SONAME) $(SHLIB_CLIB)
-+  NEED_WL_RPATH=yes
-+endif
-+
-+ifeq ($(patsubst dragonfly%,dragonfly,$(HOST_OS)),dragonfly)
-   SHARED_LIB_TYPE = unix
-   MUST_BUILD_SHLIB = Y
-   MUST_BUILD_SHLIBLE = Y
-@@ -243,7 +277,7 @@ ifeq ($(HOST_OS),dragonfly)
-   LDFLAGS_SHLIB = -shared -Wl,-soname,$(SONAME) $(SHLIB_CLIB)
- endif
--ifeq ($(HOST_OS),beos)
-+ifeq ($(patsubst beos%,beos,$(HOST_OS)),beos)
-   SHARED_LIB_TYPE = unix
-   MUST_BUILD_SHLIB = Y
-   MUST_BUILD_SHLIBLE = Y
-@@ -253,18 +287,18 @@ ifeq ($(HOST_OS),beos)
-   LDFLAGS_SHLIB = -nostart
- endif
--ifeq ($(patsubst darwin%, darwin, $(HOST_OS)), darwin)
--  # (I once saw a system that generated 'darwin8.10.1').
-+ifeq ($(patsubst darwin%,darwin,$(HOST_OS)),darwin)
-   SHARED_LIB_TYPE = dylib
-   MUST_BUILD_SHLIB = Y
-   MUST_BUILD_SHLIBLE = Y
-   SHLIB_SUFFIX = dylib
-   shlibfn = $(1:%=%.$(MAJ).$(MIN).$(SHLIB_SUFFIX))
-   shliblefn = $(1:%=%.$(SHLIB_SUFFIX))
--  LDFLAGS_SHLIB = -shared -Wl,-soname,$(SONAME) $(SHLIB_CLIB)
-+  LDFLAGS_SHLIB = -dynamiclib -undefined suppress -single_module \
-+      -flat_namespace $(SHLIB_CLIB)
- endif
--ifeq ($(HOST_OS),irix)
-+ifeq ($(patsubst irix%,irix,$(HOST_OS)),irix)
-   SHARED_LIB_TYPE = irix
-   MUST_BUILD_SHLIB = Y
-   MUST_BUILD_SHLIBLE = Y
-@@ -278,13 +312,13 @@ ifeq ($(HOST_OS),irix)
-     -set_version $(shell perl -e '$(VERSIONPERLPROG)') -lc
- endif
--ifeq ($(HOST_OS),cygwin)
-+ifeq ($(patsubst cygwin%,cygwin,$(HOST_OS)),cygwin)
-   SHARED_LIB_TYPE = dll
-   MUST_BUILD_SHLIB = Y
-   MUST_BUILD_SHLIBLE = N
-   SHLIB_SUFFIX = dll
--  shlibfn = $(1:lib%=$(SHLIB_PREFIX)%.$(SHLIB_SUFFIX).$(MAJ).$(MIN))
--  shliblefn = $(1:%=%.shlibledummy)
-+  shlibfn = $(1:%=%.$(SHLIB_SUFFIX))
-+  shliblefn = $(1:%=%.$(SHLIB_SUFFIX))
-   LDFLAGS_SHLIB = -shared -Wl,-soname,$(SONAME) $(SHLIB_CLIB)
- endif
-@@ -293,12 +327,12 @@ endif
- ##############################################################################
- # BUILDTOOL_CC is the compiler to use to generate build tools, which we
--# will then run to build product.  The typical reason this would be
-+# will then run to build the product.  The typical reason this would be
- # different from CC is that you're cross-compiling: the product will run
- # in Environment A, but you're building in Environment B, so you must
--# build the build toos for Environment B.
-+# build the build tools for Environment B.
--# The cross compiling user can update Makefile.config or override
-+# The cross compiling user can update config.mk or override
- # BUILDTOOL_CC on a make command.
- BUILDTOOL_CC = $(CC)
-@@ -316,9 +350,18 @@ INSTALL_SCRIPT = $(INSTALL) -c -m 755
- # PREFIX is designed to be overridden at make time if the user decides
- # he doesn't like the default specified at 'configure' time.
--LIBINST_DIR = $(PREFIX)/lib
--HEADERINST_DIR = $(PREFIX)/include
--PROGRAMINST_DIR = $(PREFIX)/bin
-+prefix = $(PREFIX)
-+
-+#datarootdir is the new Autoconf(2.60) name for datadir, which is still
-+#accepted, but a warning is issued if datarootdir is not also used.
-+
-+exec_prefix = @exec_prefix@
-+DATAROOT_DIR = @datarootdir@
-+DATAINST_DIR = @datadir@
-+LIBINST_DIR = @libdir@
-+HEADERINST_DIR = @includedir@
-+PROGRAMINST_DIR = @bindir@
-+MANINST_DIR = @mandir@/man1
- # DESTDIR is designed to be overridden at make time in order to relocate
- # the entire install into a subdirectory.
-diff --git a/libs/xmlrpc-c/configure.gnu b/libs/xmlrpc-c/configure.gnu
-deleted file mode 100644
-index dda9b7d..0000000
---- a/libs/xmlrpc-c/configure.gnu
-+++ /dev/null
-@@ -1,4 +0,0 @@
--#! /bin/sh
--srcpath=$(dirname $0 2>/dev/null )  || srcpath="." 
--$srcpath/configure "$@" --disable-cplusplus --disable-wininet-client --disable-libwww-client --disable-shared --with-pic --disable-curl-client
--
-diff --git a/libs/xmlrpc-c/configure.in b/libs/xmlrpc-c/configure.in
-index 231a1d3..8fbe80a 100644
---- a/libs/xmlrpc-c/configure.in
-+++ b/libs/xmlrpc-c/configure.in
-@@ -86,10 +86,45 @@ AC_MSG_RESULT($MUST_BUILD_LIBWWW_CLIENT)
- AC_SUBST(MUST_BUILD_LIBWWW_CLIENT)
-+AC_ARG_ENABLE(tools,
-+  [  --enable-tools            Build the tools], , 
-+[enable_tools=no])
-+
-+# The first AC_CHECK_LIB has to be in unconditional code because as a
-+# side effect, it determines what the object file suffix is on this system,
-+# and if it is statically present even though not actually executed, Autoconf
-+# later thinks it has already computed the object file suffix and uses it
-+# without computing it.  This was with Autoconf 2.59
-+AC_CHECK_LIB(ncurses, main, [have_libncurses=yes], [have_libncurses=no])
-+AC_CHECK_LIB(readline, main, [have_libreadline=yes], [have_libreadline=no])
-+
-+AC_MSG_CHECKING(whether to build tools)
-+
-+BUILD_XMLRPC_PSTREAM=no
-+
-+if test $enable_tools = yes; then
-+  if ! test "$MUST_BUILD_WININET_CLIENT $MUST_BUILD_CURL_CLIENT $MUST_BUILD_LIBWWW_CLIENT" = "no no no"; then
-+    if test $have_libreadline = yes && test $have_libncurses = yes; then
-+      BUILD_XMLRPC_PSTREAM=yes
-+    fi
-+    BUILD_TOOLS=yes
-+  fi
-+else
-+  BUILD_TOOLS=$enable_tools
-+fi
-+
-+AC_MSG_RESULT($BUILD_TOOLS)
-+AC_SUBST(BUILD_TOOLS)
-+
-+if test $BUILD_TOOLS = yes; then
-+  AC_MSG_CHECKING(whether to build the xmlrpc_pstream tool)
-+  AC_MSG_RESULT($BUILD_XMLRPC_PSTREAM)
-+  AC_SUBST(BUILD_XMLRPC_PSTREAM)
-+fi
-+
-+
- dnl Set up the appropriate Makefile substitutions.
--LIBXMLRPC_CLIENT_LA=libxmlrpc_client.la
--AC_SUBST(LIBXMLRPC_CLIENT_LA)
- CLIENTTEST=clienttest
- AC_SUBST(CLIENTTEST)
- XMLRPC_CLIENT_H=xmlrpc_client.h
-@@ -126,7 +161,6 @@ AC_SUBST(ENABLE_ABYSS_SERVER)
- dnl Set up the appropriate Makefile substitutions.
- ABYSS_SUBDIR=
--LIBXMLRPC_ABYSS_SERVER_LA=
- SERVERTEST=
- VALIDATEE=
- XMLRPC_ABYSS_H=
-@@ -134,14 +168,12 @@ SERVER=
- if test x"$enable_abyss_server" != xno; then
-     FEATURE_LIST="abyss-server $FEATURE_LIST"
-     ABYSS_SUBDIR=abyss
--    LIBXMLRPC_ABYSS_SERVER_LA=libxmlrpc_abyss_server.la
-     SERVERTEST=servertest
-     VALIDATEE=validatee
-     XMLRPC_ABYSS_H=xmlrpc_abyss.h
-     SERVER=server
- fi
- AC_SUBST(ABYSS_SUBDIR)
--AC_SUBST(LIBXMLRPC_ABYSS_SERVER_LA)
- AC_SUBST(SERVERTEST)
- AC_SUBST(VALIDATEE)
- AC_SUBST(XMLRPC_ABYSS_H)
-@@ -198,7 +230,9 @@ dnl Checks for programs.
- dnl =======================================================================
- AC_PROG_CC
--AC_PROG_CXX
-+if test x"$enable_cplusplus" != xno; then
-+    AC_PROG_CXX
-+fi
- dnl =======================================================================
-@@ -272,6 +306,14 @@ else
- fi
- AC_SUBST(HAVE_SYS_IOCTL_H_DEFINE)
-+AC_CHECK_HEADERS(sys/select.h)
-+if test x"$ac_cv_header_sys_select_h" = xyes; then
-+  HAVE_SYS_SELECT_H_DEFINE=1
-+else
-+  HAVE_SYS_SELECT_H_DEFINE=0
-+fi
-+AC_SUBST(HAVE_SYS_SELECT_H_DEFINE)
-+
- AC_CHECK_HEADERS(stdarg.h, , [
- AC_MSG_ERROR(stdarg.h is required to build this library)
-@@ -329,7 +371,7 @@ AC_CHECK_FUNCS(setgroups)
- AC_CHECK_FUNCS(asprintf)
--AC_CHECK_FUNCS(setenv)
-+AC_CHECK_FUNCS(setenv strtoll strtoull strtoq strtouq __strtoll __strtoull)
- dnl uclib doesn't have pselect
- AC_CHECK_FUNCS(pselect)
-@@ -380,22 +422,22 @@ dnl you will need to configure this way..
- if test $MUST_BUILD_WININET_CLIENT = yes; then
--    dnl You can control which of these gets chosen by fooling around with PATH.
-+    dnl You can control which of these gets chosen by controlling PATH.
-     AC_PATH_PROGS(WININET_CONFIG, wininet-xmlrpc-config wininet-config, no)
-     if test "x$WININET_CONFIG" = "xno"; then
--        AC_MSG_ERROR(wininet lib not found; see './configure --help')
-+        AC_MSG_ERROR(Configure INTERNAL ERROR - first wininet-config found, then not found)
-     fi
-     dnl Get our wininet version.
-     dnl Adapted from a macro which called gtk-config.
-     AC_MSG_CHECKING(for wininet version >= 1.0.0)
--    W3VER=`$WININET_CONFIG --version`
-+    W3VER=$($WININET_CONFIG --version)
-     WININET_MAJOR=\
--`echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
-+$(echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/')
-     WININET_MINOR=\
--`echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
-+$(echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/')
-     WININET_MICRO=\
--`echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
-+$(echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/')
-     AC_MSG_RESULT($WININET_MAJOR.$WININET_MINOR.$WININET_MICRO)
-     dnl Check to make sure our version is OK.
-@@ -417,61 +459,44 @@ if test $MUST_BUILD_WININET_CLIENT = yes; then
-     fi
-     dnl Get the necessary CFLAGS, and merge them into our master list.
--    WININET_CFLAGS="`$WININET_CONFIG --cflags`"
-+    WININET_CFLAGS=$($WININET_CONFIG --cflags)
-     AC_SUBST(WININET_CFLAGS)
-     CFLAGS="$CFLAGS $WININET_CFLAGS" 
-     dnl Get the huge list of libraries we need to link against.
--    WININET_LDADD="`$WININET_CONFIG --libs`"
-+    WININET_LDADD=$($WININET_CONFIG --libs)
-     AC_SUBST(WININET_LDADD)
--    dnl Oh, such massive brain damage! Because there may be another copy
--    dnl of libwww in the default dynamic loader search path, we need to
--    dnl adjust the search patch manually. Just gag me with a backquote, OK?
-     AC_MSG_CHECKING(for wininet library directory)
--    if $WININET_CONFIG --rpath-dir > /dev/null 2>&1; then
--       dnl Yay! We're using our smart version of wininet.
--       WININET_LIBDIR="`$WININET_CONFIG --rpath-dir`"
--    else
--       dnl Yawn. We're using the regular boring version.
--       WININET_LIBDIR="`$WININET_CONFIG --prefix`/lib"
--    fi
-+    WININET_LIBDIR="$($WININET_CONFIG --prefix)/lib"
-     AC_MSG_RESULT($WININET_LIBDIR)
-     AC_SUBST(WININET_LIBDIR)
--    WININET_RPATH="-rpath $WININET_LIBDIR"
--    AC_SUBST(WININET_RPATH)
--    WININET_WL_RPATH="-Wl,--rpath -Wl,$WININET_LIBDIR"
--    AC_SUBST(WININET_WL_RPATH)
- fi # MUST_BUILD_WININET_CLIENT
- dnl =======================================================================
- dnl Finding w3c-libwww
- dnl =======================================================================
--dnl Once upon a time, we used a patched copy of libwww that needed to
--dnl co-exist with the system copy of libwww. We have some vestigal function
--dnl for keeping track of libwww's rpath, although this is no longer really
--dnl necessary.
- if test $MUST_BUILD_LIBWWW_CLIENT = yes; then
--    dnl First of all, locate the semi-broken libwww config program.
--    dnl You can control which of these gets chosen by fooling around with PATH.
-+    dnl First of all, locate the libwww config program.
-+    dnl You can control which of these gets chosen by controlling PATH.
-     AC_PATH_PROGS(LIBWWW_CONFIG, libwww-xmlrpc-config libwww-config, no)
-     if test "x$LIBWWW_CONFIG" = "xno"; then
--        AC_MSG_ERROR(w3c-libwww not found; see './configure --help')
-+        AC_MSG_ERROR(Configure INTERNAL ERROR - first libwww-config found, then not found)
-     fi
-     dnl Get our libwww version.
-     dnl Adapted from a macro which called gtk-config.
-     AC_MSG_CHECKING(for w3c-libwww version >= 5.2.8)
--    W3VER=`$LIBWWW_CONFIG --version`
-+    W3VER=$($LIBWWW_CONFIG --version)
-     LIBWWW_MAJOR=\
--`echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
-+$(echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/')
-     LIBWWW_MINOR=\
--`echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
-+$(echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/')
-     LIBWWW_MICRO=\
--`echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
-+$(echo $W3VER|sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/')
-     AC_MSG_RESULT($LIBWWW_MAJOR.$LIBWWW_MINOR.$LIBWWW_MICRO)
-     dnl Check to make sure our version is OK.
-@@ -493,78 +518,46 @@ if test $MUST_BUILD_LIBWWW_CLIENT = yes; then
-     fi
-     dnl Get the huge list of libraries we need to link against.
--    LIBWWW_LDADD="`$LIBWWW_CONFIG --libs`"
-+    LIBWWW_LDADD=$(LIBWWW_CONFIG --libs)
-     AC_SUBST(LIBWWW_LDADD)
--    dnl Oh, such massive brain damage! Because there may be another copy
--    dnl of libwww in the default dynamic loader search path, we need to
--    dnl adjust the search patch manually. Just gag me with a backquote, OK?
-     AC_MSG_CHECKING(for libwww library directory)
--    if $LIBWWW_CONFIG --rpath-dir > /dev/null 2>&1; then
--       dnl Yay! We're using our smart version of libwww.
--       LIBWWW_LIBDIR="`$LIBWWW_CONFIG --rpath-dir`"
--    else
--       dnl Yawn. We're using the regular boring version.
--       LIBWWW_LIBDIR="`$LIBWWW_CONFIG --prefix`/lib"
--    fi
-+    LIBWWW_LIBDIR="$(LIBWWW_CONFIG --prefix)/lib"
-     AC_MSG_RESULT($LIBWWW_LIBDIR)
-     AC_SUBST(LIBWWW_LIBDIR)
--    # Some ancient rpath stuff, now disabled.  I turned this off because it
--    # breaks Debian (and Mandrake?) policy, and we don't use it anymore.
--    # If you have multiple copies of w3c-libwww lying around, you can turn
--    # it back on.
--    #LIBWWW_RPATH="-rpath $LIBWWW_LIBDIR"
--    LIBWWW_RPATH=""
--    AC_SUBST(LIBWWW_RPATH)
--    #LIBWWW_WL_RPATH="-Wl,--rpath -Wl,$LIBWWW_LIBDIR"
--    LIBWWW_WL_RPATH=""
--    AC_SUBST(LIBWWW_WL_RPATH)
--
- fi # MUST_BUILD_LIBWWW_CLIENT
- dnl =======================================================================
--dnl Finding cURL
-+dnl Finding Curl
- dnl =======================================================================
- if test $MUST_BUILD_CURL_CLIENT = yes; then
--    dnl First of all, locate the curl config program.
--    dnl You can control which of these gets chosen by fooling around with PATH.
-+    dnl First of all, locate the Curl config program.
-+    dnl You can control which of these gets chosen by controlling PATH.
-     AC_PATH_PROGS(CURL_CONFIG, curl-xmlrpc-config curl-config, no)
-     if test "x$CURL_CONFIG" = "xno"; then
--        AC_MSG_ERROR(cURL not found; see './configure --help')
-+        AC_MSG_ERROR(Configure INTERNAL ERROR - first curl-config found, then not found)
-     fi
-     
-     dnl There used to be code here to check the Curl version and make sure
-     dnl it is at least 7.8.  But there were bugs both in the code and in 
--    dnl curl (curl-config --vernum, at least in older versios of Curl,
-+    dnl curl (curl-config --vernum, at least in older versions of Curl,
-     dnl omits the leading zero).  So it didn't work.  Plus, checking version
-     dnl numbers isn't a good idea.  Better to check for feature presence.
-     dnl So we don't do any check now.  If we find out there's a problem with
-     dnl older Curls, we will revisit that.
--    dnl Get the huge list of libraries we need to link against.
--    dnl MRB-20010516-For some reason, curl-config
--    dnl does not list itself '-lcurl'.  2004.12.12.  It seems to do so
--    dnl now.
--    CURL_LDADD=`$CURL_CONFIG --libs`
-+    CURL_LDADD=$($CURL_CONFIG --libs)
-     AC_SUBST(CURL_LDADD)
--    dnl Oh, such massive brain damage! Because there may be another copy
--    dnl of curl in the default dynamic loader search path, we need to
--    dnl adjust the search path manually. Just gag me with a backquote, OK?
--    AC_MSG_CHECKING(for curl library directory)
--    dnl Yawn. We're using the regular boring version.
--    CURL_LIBDIR="`$CURL_CONFIG --prefix`/lib"
-+    AC_MSG_CHECKING(for Curl library directory)
-+    CURL_LIBDIR="$($CURL_CONFIG --prefix)/lib"
-     AC_MSG_RESULT($CURL_LIBDIR)
-     AC_SUBST(CURL_LIBDIR)
--    CURL_RPATH="-rpath $CURL_LIBDIR"
--    AC_SUBST(CURL_RPATH)
--    CURL_WL_RPATH="-Wl,--rpath -Wl,$CURL_LIBDIR"
--    AC_SUBST(CURL_WL_RPATH)
- fi # MUST_BUILD_CURL_CLIENT
-@@ -620,7 +613,7 @@ CPP_WARN_FLAGS=
- AC_SUBST(CPP_WARN_FLAGS)
--BUILDDIR=`pwd`
-+BUILDDIR=$(pwd)
- AC_SUBST(BUILDDIR)
-@@ -632,7 +625,7 @@ dnl Note that AM_CONFIG_HEADER at the top of this file outputs another
- dnl result: xmlrpc_amconfig.h .
- AC_OUTPUT( \
--          Makefile.srcdir \
-+          srcdir.mk \
-           config.mk \
-           xmlrpc_config.h \
-           )
-@@ -647,7 +640,9 @@ fi
- if test "$MUST_BUILD_WININET_CLIENT $MUST_BUILD_CURL_CLIENT $MUST_BUILD_LIBWWW_CLIENT" = "no no no"; then
--  AC_MSG_NOTICE([\n\n==>We are not building any client XML transport (see earlier messages explaining why), therefore WE WILL NOT BUILD THE CLIENT LIBRARY.])
-+  AC_MSG_NOTICE([==>])
-+  AC_MSG_NOTICE([==>We are not building any client XML transport (see earlier messages explaining why), therefore WE WILL NOT BUILD THE CLIENT LIBRARY.])
-+  AC_MSG_NOTICE([==>])
- fi
-diff --git a/libs/xmlrpc-c/debian/README.Debian b/libs/xmlrpc-c/debian/README.Debian
-deleted file mode 100644
-index 830df77..0000000
---- a/libs/xmlrpc-c/debian/README.Debian
-+++ /dev/null
-@@ -1,7 +0,0 @@
--xmlrpc-c for Debian
---------------------
--
--This is my first attempt at porting my RPM packages to Debian.  User
--beware!
--
-- -- Eric Kidd <eric.kidd@pobox.com>, Tue, 26 Jun 2001 12:39:39 -0400
-diff --git a/libs/xmlrpc-c/debian/changelog b/libs/xmlrpc-c/debian/changelog
-deleted file mode 100644
-index 848fac8..0000000
---- a/libs/xmlrpc-c/debian/changelog
-+++ /dev/null
-@@ -1,22 +0,0 @@
--xmlrpc-c (0.9.10-1) unstable; urgency=low
--
--  * Updated from new upstream release.
--
-- -- Eric Kidd <eric.kidd@pobox.com>  Sun,  1 Jul 2001 10:45:51 -0400
--
--xmlrpc-c (0.9.9-2) unstable; urgency=low
--
--  * Added man pages.
--  * Improved depends for xmlrpc-c-dev.
--
-- -- Eric Kidd <eric.kidd@pobox.com>  Wed, 27 Jun 2001 12:25:52 -0400
--
--xmlrpc-c (0.9.9-1) unstable; urgency=low
--
--  * Initial Release.
--
-- -- Eric Kidd <eric.kidd@pobox.com>  Tue, 26 Jun 2001 12:39:39 -0400
--
--Local variables:
--mode: debian-changelog
--End:
-diff --git a/libs/xmlrpc-c/debian/control b/libs/xmlrpc-c/debian/control
-deleted file mode 100644
-index 45bd020..0000000
---- a/libs/xmlrpc-c/debian/control
-+++ /dev/null
-@@ -1,30 +0,0 @@
--Source: xmlrpc-c
--Section: devel
--Priority: optional
--Maintainer: Eric Kidd <eric.kidd@pobox.com>
--Build-Depends: debhelper (>> 3.0.0), libwww0 (>= 5.3.2), libwww-dev (>= 5.3.2)
--Standards-Version: 3.5.2
--
--Package: xmlrpc-c0
--Architecture: any
--Depends: ${shlibs:Depends}
--Description: A library implementing XML-based remote procedure calls
-- XML-RPC is a lightweight RPC protocol based on XML and HTTP. This package
-- is used by XML-RPC clients and servers written in C and C++. 
--
--Package: xmlrpc-c-dev
--Architecture: any
--Depends: xmlrpc-c0 (= ${Source-Version}), libc6-dev, libstdc++-dev, libfrontier-rpc-perl
--Description: Libraries and header files for developing XML-RPC applications
-- Static libraries and header files for writing XML-RPC applications in C and
-- C++.
--
--Package: xmlrpc-c-apps
--Architecture: any
--Depends: xmlrpc-c0 (= ${Source-Version}), ${shlibs:Depends}
--Description: Sample XML-RPC applications
-- Some handy XML-RPC demo applications based on the Meerkat Open Wire Service
-- (found at http://www.oreillynet.com/meerkat/). You can use 'query-meerkat' to
-- perform a regex search on recent news items, or 'meerkat-app-list' to get
-- a list of recent Linux software releases.
--
-diff --git a/libs/xmlrpc-c/debian/copyright b/libs/xmlrpc-c/debian/copyright
-deleted file mode 100644
-index 8873b9d..0000000
---- a/libs/xmlrpc-c/debian/copyright
-+++ /dev/null
-@@ -1,128 +0,0 @@
--This software package is covered by the XML-RPC C Library License.
--Additionally, certain parts of this library are derived from pre-existing
--code, which may carry its own license.
--
--In particular, the Expat Licence applies to the contents of the directory
--lib/expat, the ABYSS Web Server License applies to the contents of the
--directory lib/abyss and parts of the file src/xmlrpc_abyss.c, and the
--Python 1.5.2 license applies to parts of the file src/xmlrpc_base64.c.
--
--And as for the tools/ directory, you'll have to examine the licenses on
--your own.
--
--
--                     XML-RPC C Library License
--                     -------------------------
--
--Copyright (C) 2001 by First Peer, Inc. All rights reserved.
--Copyright (C) 2001 by Eric Kidd. 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. The name of the author may not be used to endorse or promote products
--   derived from this software without specific prior written permission. 
-- 
--THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
--
--
--                     Expat License
--                     -------------
--
--Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
--
--Permission is hereby granted, free of charge, to any person obtaining
--a copy of this software and associated documentation files (the
--"Software"), to deal in the Software without restriction, including
--without limitation the rights to use, copy, modify, merge, publish,
--distribute, sublicense, and/or sell copies of the Software, and to
--permit persons to whom the Software is furnished to do so, subject to
--the following conditions:
--
--The above copyright notice and this permission notice shall be included
--in all copies or substantial portions of the Software.
--
--THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
--EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
--MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
--IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
--CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
--TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
--SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--
--
--                     ABYSS Web Server License
--                     ------------------------
--
--Copyright (C) 2000 by Moez Mahfoudh <mmoez@bigfoot.com>. 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. The name of the author may not be used to endorse or promote products
--   derived from this software without specific prior written permission. 
-- 
--THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
--
--
--
--                     Python 1.5.2 License
--                     --------------------
--
--Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
--Amsterdam, The Netherlands.
--
--                        All Rights Reserved
--
--Permission to use, copy, modify, and distribute this software and its
--documentation for any purpose and without fee is hereby granted,
--provided that the above copyright notice appear in all copies and that
--both that copyright notice and this permission notice appear in
--supporting documentation, and that the names of Stichting Mathematisch
--Centrum or CWI or Corporation for National Research Initiatives or
--CNRI not be used in advertising or publicity pertaining to
--distribution of the software without specific, written prior
--permission.
--
--While CWI is the initial source for this software, a modified version
--is made available by the Corporation for National Research Initiatives
--(CNRI) at the Internet address ftp://ftp.python.org.
--
--STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
--REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
--MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
--CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, 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.
-diff --git a/libs/xmlrpc-c/debian/postinst b/libs/xmlrpc-c/debian/postinst
-deleted file mode 100644
-index a7b0408..0000000
---- a/libs/xmlrpc-c/debian/postinst
-+++ /dev/null
-@@ -1,47 +0,0 @@
--#! /bin/sh
--# postinst script for xmlrpc-c
--#
--# see: dh_installdeb(1)
--
--set -e
--
--# summary of how this script can be called:
--#        * <postinst> `configure' <most-recently-configured-version>
--#        * <old-postinst> `abort-upgrade' <new version>
--#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
--#          <new-version>
--#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
--#          <failed-install-package> <version> `removing'
--#          <conflicting-package> <version>
--# for details, see /usr/share/doc/packaging-manual/
--#
--# quoting from the policy:
--#     Any necessary prompting should almost always be confined to the
--#     post-installation script, and should be protected with a conditional
--#     so that unnecessary prompting doesn't happen if a package's
--#     installation fails and the `postinst' is called with `abort-upgrade',
--#     `abort-remove' or `abort-deconfigure'.
--
--case "$1" in
--    configure)
--    ldconfig
--    ;;
--
--    abort-upgrade|abort-remove|abort-deconfigure)
--
--    ;;
--
--    *)
--        echo "postinst called with unknown argument \`$1'" >&2
--        exit 0
--    ;;
--esac
--
--# dh_installdeb will replace this with shell code automatically
--# generated by other debhelper scripts.
--
--#DEBHELPER#
--
--exit 0
--
--
-diff --git a/libs/xmlrpc-c/debian/postrm b/libs/xmlrpc-c/debian/postrm
-deleted file mode 100644
-index 3294e0a..0000000
---- a/libs/xmlrpc-c/debian/postrm
-+++ /dev/null
-@@ -1,39 +0,0 @@
--#! /bin/sh
--# postrm script for xmlrpc-c
--#
--# see: dh_installdeb(1)
--
--set -e
--
--# summary of how this script can be called:
--#        * <postrm> `remove'
--#        * <postrm> `purge'
--#        * <old-postrm> `upgrade' <new-version>
--#        * <new-postrm> `failed-upgrade' <old-version>
--#        * <new-postrm> `abort-install'
--#        * <new-postrm> `abort-install' <old-version>
--#        * <new-postrm> `abort-upgrade' <old-version>
--#        * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
--# for details, see /usr/share/doc/packaging-manual/
--
--case "$1" in
--    remove)
--      ldconfig
--        ;;
--   
--    purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
--
--        ;;
--
--    *)
--        echo "postrm called with unknown argument \`$1'" >&2
--        exit 0
--
--esac
--
--# dh_installdeb will replace this with shell code automatically
--# generated by other debhelper scripts.
--
--#DEBHELPER#
--
--
-diff --git a/libs/xmlrpc-c/debian/rules b/libs/xmlrpc-c/debian/rules
-deleted file mode 100644
-index c7c728c..0000000
---- a/libs/xmlrpc-c/debian/rules
-+++ /dev/null
-@@ -1,97 +0,0 @@
--#!/usr/bin/make -f
--# Sample debian/rules that uses debhelper.
--# GNU copyright 1997 to 1999 by Joey Hess.
--
--# Uncomment this to turn on verbose mode.
--#export DH_VERBOSE=1
--
--# This is the debhelper compatability version to use.
--export DH_COMPAT=3
--
--# shared library versions, option 1
--#version=2.0.5
--#major=2
--# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so
--version=`ls src/.libs/lib*.so.* | \
-- awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'`
--major=`ls src/.libs/lib*.so.* | \
-- awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'`
--
--configure: configure-stamp
--configure-stamp:
--      dh_testdir
--      # Add here commands to configure the package.
--      ./configure --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info
--
--      touch configure-stamp
--
--build: configure-stamp build-stamp
--build-stamp:
--      dh_testdir
--
--      # Add here commands to compile the package.
--      $(MAKE)
--      $(MAKE) check
--
--      touch build-stamp
--
--clean:
--      dh_testdir
--      dh_testroot
--      rm -f build-stamp configure-stamp
--
--      # Add here commands to clean up after the build process.
--      -$(MAKE) distclean
--
--      dh_clean
--
--install: build
--      dh_testdir
--      dh_testroot
--      dh_clean -k
--      dh_installdirs
--
--      # Add here commands to install the package into debian/tmp
--      $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
--
--
--# Build architecture-independent files here.
--binary-indep: build install
--# We have nothing to do by default.
--
--# Build architecture-dependent files here.
--binary-arch: build install
--      dh_testdir
--      dh_testroot
--      dh_movefiles
--
--#     dh_installdebconf       
--      dh_installdocs
--      dh_installexamples
--      dh_installmenu
--#     dh_installlogrotate
--#     dh_installemacsen
--#     dh_installpam
--#     dh_installmime
--#     dh_installinit
--      dh_installcron
--#     dh_installman debian/xmlrpc-c.7
--#     dh_installman -p xmlrpc-c-dev debian/xml-rpc-api2cpp.1 debian/xml-rpc-api2txt.1 debian/xmlrpc-c-config.1
--#     dh_installman -p xmlrpc-c-apps debian/meerkat-app-list.1 debian/query-meerkat.1
--      dh_installinfo
--#     dh_undocumented
--      dh_installchangelogs 
--      dh_link
--      dh_strip
--      dh_compress
--      dh_fixperms
--      dh_makeshlibs
--      dh_installdeb
--#     dh_perl
--      dh_shlibdeps -l"$(CURDIR)/debian/xmlrpc-c0/usr/lib/:$$LD_LIBRARY_PATH"
--      dh_gencontrol
--      dh_md5sums
--      dh_builddeb
--
--binary: binary-indep binary-arch
--.PHONY: build clean binary-indep binary-arch binary install configure
-diff --git a/libs/xmlrpc-c/debian/xmlrpc-c-apps.files b/libs/xmlrpc-c/debian/xmlrpc-c-apps.files
-deleted file mode 100644
-index 3f005c6..0000000
---- a/libs/xmlrpc-c/debian/xmlrpc-c-apps.files
-+++ /dev/null
-@@ -1,4 +0,0 @@
--usr/bin/query-meerkat
--usr/bin/meerkat-app-list
--usr/share/man/man1/query-meerkat.1
--usr/share/man/man1/meerkat-app-list.1
-diff --git a/libs/xmlrpc-c/debian/xmlrpc-c-dev.files b/libs/xmlrpc-c/debian/xmlrpc-c-dev.files
-deleted file mode 100644
-index f1cc55d..0000000
---- a/libs/xmlrpc-c/debian/xmlrpc-c-dev.files
-+++ /dev/null
-@@ -1,10 +0,0 @@
--usr/bin/xmlrpc-c-config
--usr/bin/xml-rpc-api2txt
--usr/bin/xml-rpc-api2cpp
--usr/include/*
--usr/lib/lib*.a
--usr/lib/lib*.la
--usr/lib/lib*.so
--usr/share/man/man1/xmlrpc-c-config.1
--usr/share/man/man1/xml-rpc-api2txt.1
--usr/share/man/man1/xml-rpc-api2cpp.1
-diff --git a/libs/xmlrpc-c/debian/xmlrpc-c0.docs b/libs/xmlrpc-c/debian/xmlrpc-c0.docs
-deleted file mode 100644
-index 6df52b9..0000000
---- a/libs/xmlrpc-c/debian/xmlrpc-c0.docs
-+++ /dev/null
-@@ -1,6 +0,0 @@
--BUGS
--NEWS
--README
--CREDITS
--SECURITY
--doc/*.txt
-diff --git a/libs/xmlrpc-c/debian/xmlrpc-c0.examples b/libs/xmlrpc-c/debian/xmlrpc-c0.examples
-deleted file mode 100644
-index d510cc5..0000000
---- a/libs/xmlrpc-c/debian/xmlrpc-c0.examples
-+++ /dev/null
-@@ -1,3 +0,0 @@
--examples/*.c
--examples/*.cc
--conf
-diff --git a/libs/xmlrpc-c/debian/xmlrpc-c0.files b/libs/xmlrpc-c/debian/xmlrpc-c0.files
-deleted file mode 100644
-index 6f82592..0000000
---- a/libs/xmlrpc-c/debian/xmlrpc-c0.files
-+++ /dev/null
-@@ -1,2 +0,0 @@
--usr/lib/lib*.so.*
--usr/share/man/man7/xmlrpc-c.7
-diff --git a/libs/xmlrpc-c/dll-common.make b/libs/xmlrpc-c/dll-common.make
-deleted file mode 100644
-index 0d53c17..0000000
---- a/libs/xmlrpc-c/dll-common.make
-+++ /dev/null
-@@ -1,22 +0,0 @@
--# -*-makefile-*-    <-- an Emacs control
--
--# See unix-common.make for an explanation of this file.  This file is
--# analogous to unix-common.make, but is for a Windows system
--
--SONAME = $@
--IMPLIB = $(@:%:%.dll.a)
--
--SHLIB_CMD = $(CCLD) $(LDFLAGS_SHLIB) -o $@ $^ $(LADD)
--
--.PHONY: $(SHLIB_INSTALL_TARGETS)
--.PHONY: install-shared-libraries
--
--SHLIB_INSTALL_TARGETS = $(SHARED_LIBS_TO_INSTALL:%=%/install)
--
--#SHLIB_INSTALL_TARGETS is like "libfoo/install libbar/install"
--
--install-shared-libraries: $(SHLIB_INSTALL_TARGETS)
--
--$(SHLIB_INSTALL_TARGETS):lib%/install:$(SHLIB_PREFIX)%.$(SHLIB_SUFFIX).$(MAJ).$(MIN)
--# $< is a library file name, e.g. cygfoo.so.3.1 .
--      $(INSTALL_SHLIB) $< $(DESTDIR)$(LIBINST_DIR)/$<
-diff --git a/libs/xmlrpc-c/dll-common.mk b/libs/xmlrpc-c/dll-common.mk
-new file mode 100644
-index 0000000..9840709
---- /dev/null
-+++ b/libs/xmlrpc-c/dll-common.mk
-@@ -0,0 +1,22 @@
-+# -*-makefile-*-    <-- an Emacs control
-+
-+# See unix-common.mk for an explanation of this file.  This file is
-+# analogous to unix-common.mk, but is for a Windows system
-+
-+SONAME = $@
-+IMPLIB = $(@:%:%.dll.a)
-+
-+SHLIB_CMD = $(CCLD) $(LDFLAGS_SHLIB) -o $@ $^ $(LADD)
-+
-+.PHONY: $(SHLIB_INSTALL_TARGETS)
-+.PHONY: install-shared-libraries
-+
-+SHLIB_INSTALL_TARGETS = $(SHARED_LIBS_TO_INSTALL:%=%/install)
-+
-+#SHLIB_INSTALL_TARGETS is like "libfoo/install libbar/install"
-+
-+install-shared-libraries: $(SHLIB_INSTALL_TARGETS)
-+
-+$(SHLIB_INSTALL_TARGETS):%/install:%.$(SHLIB_SUFFIX)
-+# $< is a library file name, e.g. libfoo.dll .
-+      $(INSTALL_SHLIB) $< $(DESTDIR)$(LIBINST_DIR)/$<
-diff --git a/libs/xmlrpc-c/doc/INSTALL b/libs/xmlrpc-c/doc/INSTALL
-index 76881fa..2790010 100644
---- a/libs/xmlrpc-c/doc/INSTALL
-+++ b/libs/xmlrpc-c/doc/INSTALL
-@@ -82,6 +82,48 @@ you have to have a -f option and set SRCDIR and BLDDIR on your 'make'
- command.
-+CROSS-COMPILING
-+---------------
-+
-+Cross compiling is building code on one machine to be run on another,
-+particularly when the two machines are different enough that it matters,
-+e.g. one executes x86 instructions and the other executes PowerPC
-+instructions.
-+
-+The machine that will run the code is called the target machine.  The one
-+that will build the code is the build machine.
-+
-+To cross-compile, you set up nearly all of the build environment for the
-+target machine (that includes such things as the default include file search
-+path for the compiler and library search path for the linker).  On your
-+'configure' command, you use a --host option to identify the kind of target
-+machine (rather than let it default to the kind of machine on which
-+'configure' is running).  It's a nontrivial task, and beyond the scope of
-+this document as it is not specific to Xmlrpc-c.
-+
-+There is one area that requires special attention and is specific to Xmlrpc-c:
-+The Xmlrpc-c build does part of its job by compiling a program from C source
-+code and running that program as part of the build.  That compile, unlike all
-+the regular ones, must be done for the build machine, not the target
-+machine.
-+
-+To facilitate that, there are the BUILDTOOL_CC and BUILDTOOL_CCLD make
-+variables.  BUILDTOOL_CC is the command name for the appropriate compiler
-+which which to build a build tool, i.e. a compiler that generates code to run
-+on the build system.  BUILDTOOL_CCLD is similarly for the linker, and should
-+be the kind of linker command that invokes a combined compiler/linker,
-+e.g. "gcc" instead of "ld".
-+
-+You can set these make variables on the Make command line, or if you prefer,
-+by modifying the file 'config.mk' after 'configure' creates it.  The default
-+value of these variables (as set in 'config.mk') is the same compile and link
-+commands as for building target code.
-+
-+(There is probably a way to do this with GNU Autoconf facilities and avoid the
-+BUILDTOOL_CC complication.  If you know how (without using Automake), tell the
-+Xmlrpc-c maintainer and he will change the build system to use it).
-+
-+
- COMMON PROBLEMS
- ---------------
-@@ -135,7 +177,7 @@ to have it.  The make file obviously specifies the path to the current
- libraries that the user just built in the link library search order,
- but the link is picking up the old system version instead.  Why?
- Because the link options say to search /usr/lib _before_ the local
--build directory.  And it does that because curl-config erroneously
-+build directory.  And they do that because curl-config erroneously
- says that you need a -L /usr/lib link option to find the Curl library.
-diff --git a/libs/xmlrpc-c/dylib-common.make b/libs/xmlrpc-c/dylib-common.make
-deleted file mode 100644
-index a72d416..0000000
---- a/libs/xmlrpc-c/dylib-common.make
-+++ /dev/null
-@@ -1,37 +0,0 @@
--# -*-makefile-*-    <-- an Emacs control
--
--# See unix-common.make for an explanation of this file.  This file is
--# analogous to unix-common.make, but is for an Irix system.
--
--SONAME = $(@:%.$(MIN)=%)
--
--SHLIB_CMD = $(CCLD) $(LDFLAGS_SHLIB) -o $@ $^ $(LADD)
--
--SHLIBPP_CMD = $(CXXLD) $(LDFLAGS_SHLIB) -o $@ $^ $(LADD)
--
--SHLIB_LE_TARGETS = $(call shliblefn, $(SHARED_LIBS_TO_BUILD))
--
--$(SHLIB_LE_TARGETS):%.$(SHLIB_SUFFIX):%.$(MAJ).$(MIN).$(SHLIB_SUFFIX)
--      rm -f $@
--      $(LN_S) $< $@
--
--
--.PHONY: $(SHLIB_INSTALL_TARGETS)
--.PHONY: install-shared-libraries
--
--SHLIB_INSTALL_TARGETS = $(SHARED_LIBS_TO_INSTALL:%=%/install)
--
--#SHLIB_INSTALL_TARGETS is like "libfoo/install libbar/install"
--
--install-shared-libraries: $(SHLIB_INSTALL_TARGETS)
--
--$(SHLIB_INSTALL_TARGETS):%/install:%.$(MAJ).$(MIN).$(SHLIB_SUFFIX)
--# $< is a library file name, e.g. libfoo.so.3.1 .
--      $(INSTALL_SHLIB) $< $(DESTDIR)$(LIBINST_DIR)/$<
--      cd $(DESTDIR)$(LIBINST_DIR); \
--        rm -f $(<:%.$(MIN).$(SHLIB_SUFFIX)=%.$(SHLIB_SUFFIX)); \
--        $(LN_S) $< $(<:%.$(MIN).$(SHLIB_SUFFIX)=%.$(SHLIB_SUFFIX))
--      cd $(DESTDIR)$(LIBINST_DIR); \
--        rm -f $(<:%.$(MAJ).$(MIN).$(SHLIB_SUFFIX)=%.$(SHLIB_SUFFIX)); \
--        $(LN_S) $(<:%.$(MIN).$(SHLIB_SUFFIX)=%.$(SHLIB_SUFFIX)) \
--          $(<:%.$(MAJ).$(MIN).$(SHLIB_SUFFIX)=%.$(SHLIB_SUFFIX))
-diff --git a/libs/xmlrpc-c/dylib-common.mk b/libs/xmlrpc-c/dylib-common.mk
-new file mode 100644
-index 0000000..c9ac6c5
---- /dev/null
-+++ b/libs/xmlrpc-c/dylib-common.mk
-@@ -0,0 +1,37 @@
-+# -*-makefile-*-    <-- an Emacs control
-+
-+# See unix-common.mk for an explanation of this file.  This file is
-+# analogous to unix-common.mk, but is for an Irix system.
-+
-+SONAME = $(@:%.$(MIN)=%)
-+
-+SHLIB_CMD = $(CCLD) $(LADD) $(LDFLAGS_SHLIB) -o $@ $^ 
-+
-+SHLIBPP_CMD = $(CXXLD) $(LADD) $(LDFLAGS_SHLIB) -o $@ $^ 
-+
-+SHLIB_LE_TARGETS = $(call shliblefn, $(SHARED_LIBS_TO_BUILD))
-+
-+$(SHLIB_LE_TARGETS):%.$(SHLIB_SUFFIX):%.$(MAJ).$(MIN).$(SHLIB_SUFFIX)
-+      rm -f $@
-+      $(LN_S) $< $@
-+
-+
-+.PHONY: $(SHLIB_INSTALL_TARGETS)
-+.PHONY: install-shared-libraries
-+
-+SHLIB_INSTALL_TARGETS = $(SHARED_LIBS_TO_INSTALL:%=%/install)
-+
-+#SHLIB_INSTALL_TARGETS is like "libfoo/install libbar/install"
-+
-+install-shared-libraries: $(SHLIB_INSTALL_TARGETS)
-+
-+$(SHLIB_INSTALL_TARGETS):%/install:%.$(MAJ).$(MIN).$(SHLIB_SUFFIX)
-+# $< is a library file name, e.g. libfoo.so.3.1 .
-+      $(INSTALL_SHLIB) $< $(DESTDIR)$(LIBINST_DIR)/$<
-+      cd $(DESTDIR)$(LIBINST_DIR); \
-+        rm -f $(<:%.$(MIN).$(SHLIB_SUFFIX)=%.$(SHLIB_SUFFIX)); \
-+        $(LN_S) $< $(<:%.$(MIN).$(SHLIB_SUFFIX)=%.$(SHLIB_SUFFIX))
-+      cd $(DESTDIR)$(LIBINST_DIR); \
-+        rm -f $(<:%.$(MAJ).$(MIN).$(SHLIB_SUFFIX)=%.$(SHLIB_SUFFIX)); \
-+        $(LN_S) $(<:%.$(MIN).$(SHLIB_SUFFIX)=%.$(SHLIB_SUFFIX)) \
-+          $(<:%.$(MAJ).$(MIN).$(SHLIB_SUFFIX)=%.$(SHLIB_SUFFIX))
-diff --git a/libs/xmlrpc-c/examples/.cvsignore b/libs/xmlrpc-c/examples/.cvsignore
-deleted file mode 100644
-index 792265c..0000000
---- a/libs/xmlrpc-c/examples/.cvsignore
-+++ /dev/null
-@@ -1,11 +0,0 @@
--gen_sample_add_xml
--meerkat-app-list
--query-meerkat
--synch_client
--xmlrpc_asynch_client
--auth_client
--xmlrpc_loop_server
--xmlrpc_sample_add_client
--xmlrpc_sample_add_server
--xmlrpc_server_validatee
--*.cgi
-diff --git a/libs/xmlrpc-c/examples/Makefile b/libs/xmlrpc-c/examples/Makefile
-index 5a9fd19..c441c9f 100644
---- a/libs/xmlrpc-c/examples/Makefile
-+++ b/libs/xmlrpc-c/examples/Makefile
-@@ -1,8 +1,8 @@
--# Since the programs in this directories are examples for the user, this
--# make file should be as ordinary as possible.  It should not rely heavily
--# on included make files or configuration parameters.  It should not use
--# libtool.  Also, we don't try to build or rebuild the libraries on which
--# these programs depend.
-+# Since the programs in this directory are examples for the user, this make
-+# file should be as ordinary as possible.  It should not rely heavily on
-+# included make files or configuration parameters.  Also, we don't try to
-+# build or rebuild the libraries on which these programs depend or even
-+# recognize that they've changed on their own.
- ifeq ($(SRCDIR),)
-@@ -15,8 +15,8 @@ include $(BLDDIR)/config.mk
- default: all
--CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
--LDFLAGS = $(LADD)
-+CFLAGS = $(CFLAGS_PERSONAL) $(CADD)
-+LDFLAGS += $(LADD)
- # If this were a real application, working from an installed copy of
- # Xmlrpc-c, XMLRPC_C_CONFIG would just be 'xmlrpc-c-config'.  It would be
-@@ -25,6 +25,7 @@ XMLRPC_C_CONFIG = $(BLDDIR)/xmlrpc-c-config.test
- CLIENTPROGS = \
-   auth_client \
-+  compound_value_client \
-   synch_client \
-   xmlrpc_sample_add_client \
-   xmlrpc_asynch_client \
-@@ -37,6 +38,7 @@ SERVERPROGS_CGI = \
-   xmlrpc_sample_add_server.cgi
- SERVERPROGS_ABYSS = \
-+  compound_value_server \
-   interrupted_server \
-   xmlrpc_inetd_server \
-   xmlrpc_socket_server \
-@@ -44,15 +46,19 @@ SERVERPROGS_ABYSS = \
-   xmlrpc_sample_add_server \
-   xmlrpc_server_validatee \
-+BASIC_PROGS = \
-+  json \
-+  gen_sample_add_xml \
-+
- # Build up PROGS:
- PROGS = 
-+PROGS += $(BASIC_PROGS)
-+
- ifeq ($(ENABLE_ABYSS_SERVER),yes)
-   PROGS += $(SERVERPROGS_ABYSS)
- endif
--PROGS += gen_sample_add_xml
--
- ifeq ($(MUST_BUILD_CLIENT),yes)
-   PROGS += $(CLIENTPROGS)
- endif
-@@ -63,17 +69,17 @@ endif
- INCLUDES = -I. $(shell $(XMLRPC_C_CONFIG) client abyss-server --cflags)
--LDADD_CLIENT = \
--  $(shell $(XMLRPC_C_CONFIG) client --ldadd)
-+LIBS_CLIENT = \
-+  $(shell $(XMLRPC_C_CONFIG) client --libs)
--LDADD_SERVER_ABYSS = \
--  $(shell $(XMLRPC_C_CONFIG) abyss-server --ldadd)
-+LIBS_SERVER_ABYSS = \
-+  $(shell $(XMLRPC_C_CONFIG) abyss-server --libs)
--LDADD_SERVER_CGI = \
--  $(shell $(XMLRPC_C_CONFIG) cgi-server --ldadd)
-+LIBS_SERVER_CGI = \
-+  $(shell $(XMLRPC_C_CONFIG) cgi-server --libs)
--LDADD_BASE = \
--  $(shell $(XMLRPC_C_CONFIG) --ldadd)
-+LIBS_BASE = \
-+  $(shell $(XMLRPC_C_CONFIG) --libs)
- all: $(PROGS)
-@@ -90,16 +96,17 @@ $(BLDDIR)/examples/cpp:
-       mkdir $@
- $(CLIENTPROGS):%:%.o
--      $(CCLD) -o $@ $(LDFLAGS) $^ $(LDADD_CLIENT)
-+      $(CCLD) -o $@ $^ $(LIBS_CLIENT) $(LDFLAGS)
- $(SERVERPROGS_CGI):%.cgi:%_cgi.o
--      $(CCLD) -o $@ $(LDFLAGS) $^ $(LDADD_SERVER_CGI)
-+      $(CCLD) -o $@ $^ $(LIBS_SERVER_CGI) $(LDFLAGS)
- $(SERVERPROGS_ABYSS):%:%.o
--      $(CCLD) -o $@ $(LDFLAGS) $^ $(LDADD_SERVER_ABYSS)
-+      $(CCLD) -o $@ $^ $(LIBS_SERVER_ABYSS) $(LDFLAGS)
-+
-+$(BASIC_PROGS):%:%.o
-+      $(CCLD) -o $@ $^ $(LIBS_BASE) $(LDFLAGS) 
--gen_sample_add_xml:%:%.o
--      $(CCLD) -o $@ $(LDFLAGS) $^ $(LDADD_BASE)
- OBJECTS = $(patsubst %,%.o,$(patsubst %.cgi,%_cgi,$(PROGS)))
-@@ -119,11 +126,9 @@ config.h:
- xmlrpc_amconfig.h:
-       $(LN_S) $(BLDDIR)/$@ .
--include $(SRCDIR)/common.mk
--
- .PHONY: clean
--clean: clean-common
--      rm -f $(PROGS) config.h xmlrpc_amconfig.h
-+clean:
-+      rm -f $(PROGS) *.o config.h xmlrpc_amconfig.h
-       $(MAKE) -C cpp clean
- .PHONY: distclean
-diff --git a/libs/xmlrpc-c/examples/README b/libs/xmlrpc-c/examples/README
-index 46b02b4..6691f8a 100644
---- a/libs/xmlrpc-c/examples/README
-+++ b/libs/xmlrpc-c/examples/README
-@@ -1,15 +1,12 @@
- This directory contains working examples of uses of XML-RPC-c.  There
- are XML-RPC servers and XML-RPC clients that use the Xmlrpc-c libraries.
--The simplest example is the 'query-meerkat' program, which contacts an
--XML-RPC server that O'Reilly operates on the Internet called Meerkat.
--Meerkat provides an RPC that returns a list of new articles that match
--a specified search pattern.  Run 'query-meerkat' like this example:
--
--  $ ./query-meerkat Linux
--
--This responds with a list of new articles that contain the work "Linux",
--according to O'reilly's Meerkat service.
-+The make file is a combination of an example of how to build programs
-+that use Xmlrpc-c libraries and something that actually does build the
-+programs in this directory.  As such, it isn't perfect for either of
-+those purposes.  To build the examples, you must first build the
-+libraries (make dependencies will not take care of that for you).  Then
-+you can issue a simple 'make' in this directory.
- The simplest server program is 'xmlrpc_sample_add_server'.  This
-diff --git a/libs/xmlrpc-c/examples/auth_client.c b/libs/xmlrpc-c/examples/auth_client.c
-index 50047f4..fbbd0a9 100644
---- a/libs/xmlrpc-c/examples/auth_client.c
-+++ b/libs/xmlrpc-c/examples/auth_client.c
-@@ -35,7 +35,7 @@ die_if_fault_occurred(xmlrpc_env * const envP) {
- int 
- main(int           const argc, 
--     const char ** const argv ATTR_UNUSED) {
-+     const char ** const argv) {
-     xmlrpc_env env;
-     xmlrpc_server_info * serverP;
-diff --git a/libs/xmlrpc-c/examples/compound_value_client.c b/libs/xmlrpc-c/examples/compound_value_client.c
-new file mode 100644
-index 0000000..92baad1
---- /dev/null
-+++ b/libs/xmlrpc-c/examples/compound_value_client.c
-@@ -0,0 +1,161 @@
-+/* An XML-RPC client program written in C, as an example of using
-+   compound XML-RPC values.
-+
-+   For a simple client program that just deals with integer values,
-+   see xmlrpc_sample_add_client.c.  This example focuses just on the
-+   compound XML-RPC values and not the client functions.
-+
-+   This client invokes the example.divide XML-RPC method that the example
-+   server program compound_value_server.c provides.  That method takes a
-+   list of pairs of numbers and returns the list of their quotients.
-+
-+   Compound XML-RPC values are arrays and structures.  We call them compound
-+   because they are made up of other XML-RPC values (e.g. an array of XML-RPC
-+   integers).
-+
-+   The arguments to the example.divide method are specified as follows:
-+
-+   There are two arguments:
-+
-+     Argument 0: Integer.  Version number of this argument protocol.  Must
-+                 be 1.
-+
-+
-+     Argument 1: Array.  One element for each pair of numbers you want the
-+                 server to divide.  Each element is structure, with these
-+                 members:
-+
-+                 KEY: "dividend"
-+                 VALUE: floating point number.  The dividend.
-+
-+                 KEY: "divisor"
-+                 VALUE: floating point number.  The divisor.
-+
-+   The result of the method is an array.  It has one member for each pair of
-+   numbers in the arguments (So it is the same size as Argument 1).  That
-+   member is a floating point number.  It is the quotient of the numbers
-+   in the corresponding element of Argument 1.
-+
-+   The client sends the RPC to the server running on the local system
-+   ("localhost"), HTTP Port 8080.
-+*/
-+
-+#include <stdlib.h>
-+#include <stdio.h>
-+
-+#include <xmlrpc-c/base.h>
-+#include <xmlrpc-c/client.h>
-+
-+#include "config.h"  /* information about this build environment */
-+
-+#define NAME "Xmlrpc-c Test Client"
-+#define VERSION "1.0"
-+
-+static void 
-+dieIfFaultOccurred (xmlrpc_env * const envP) {
-+    if (envP->fault_occurred) {
-+        fprintf(stderr, "ERROR: %s (%d)\n",
-+                envP->fault_string, envP->fault_code);
-+        exit(1);
-+    }
-+}
-+
-+
-+
-+struct ratio {
-+    double dividend;
-+    double divisor;
-+};
-+
-+
-+
-+int 
-+main(int           const argc, 
-+     const char ** const argv) {
-+
-+    const char * const serverUrl = "http://localhost:8080/RPC2";
-+    const char * const methodName = "example.divide";
-+    unsigned int const argVersion = 1;
-+    struct ratio const data[] = {{1,2},{12,3},{10,3},{89,3000}};
-+    xmlrpc_env env;
-+    xmlrpc_value * resultP;
-+    unsigned int i;
-+    xmlrpc_value * ratioArrayP;
-+    unsigned int quotientCt;
-+
-+    if (argc-1 > 0) {
-+        fprintf(stderr, "This program has no arguments\n");
-+        exit(1);
-+    }
-+
-+    xmlrpc_env_init(&env);
-+
-+    xmlrpc_client_init2(&env, XMLRPC_CLIENT_NO_FLAGS, NAME, VERSION, NULL, 0);
-+    dieIfFaultOccurred(&env);
-+
-+    /* Build the 2nd method argument: the array of ratios */
-+
-+    ratioArrayP = xmlrpc_array_new(&env);
-+    dieIfFaultOccurred(&env);
-+
-+    for (i = 0; i < 4; ++i) {
-+        xmlrpc_value * dividendP;
-+        xmlrpc_value * divisorP;
-+        xmlrpc_value * ratioP;
-+
-+        dividendP = xmlrpc_double_new(&env, data[i].dividend);
-+        dieIfFaultOccurred(&env);
-+        divisorP  = xmlrpc_double_new(&env, data[i].divisor);
-+        dieIfFaultOccurred(&env);
-+
-+        ratioP = xmlrpc_struct_new(&env);
-+        dieIfFaultOccurred(&env);
-+
-+        xmlrpc_struct_set_value(&env, ratioP, "DIVIDEND", dividendP);
-+        dieIfFaultOccurred(&env);
-+        xmlrpc_struct_set_value(&env, ratioP, "DIVISOR",  divisorP);
-+        dieIfFaultOccurred(&env);
-+        
-+        xmlrpc_array_append_item(&env, ratioArrayP, ratioP);
-+        dieIfFaultOccurred(&env);
-+
-+        xmlrpc_DECREF(ratioP);
-+        xmlrpc_DECREF(divisorP);
-+        xmlrpc_DECREF(dividendP);
-+    }        
-+
-+    /* Make the call */
-+
-+    resultP = xmlrpc_client_call(&env, serverUrl, methodName, "(iA)",
-+                                 (xmlrpc_int32) argVersion, ratioArrayP);
-+    dieIfFaultOccurred(&env);
-+    
-+    /* Print out the quotients returned */
-+
-+    quotientCt = xmlrpc_array_size(&env, resultP);
-+    dieIfFaultOccurred(&env);
-+
-+    for (i = 0; i < quotientCt; ++i) {
-+        xmlrpc_value * quotientP;
-+        xmlrpc_double quotient;
-+
-+        xmlrpc_array_read_item(&env, resultP, i, &quotientP);
-+        dieIfFaultOccurred(&env);
-+
-+        xmlrpc_read_double(&env, quotientP, &quotient);
-+        dieIfFaultOccurred(&env);
-+
-+        printf("Server says quotient %u is %f\n", i, quotient);
-+
-+        xmlrpc_DECREF(quotientP);
-+    }
-+
-+    xmlrpc_DECREF(resultP);
-+
-+    xmlrpc_env_clean(&env);
-+    
-+    xmlrpc_client_cleanup();
-+
-+    return 0;
-+}
-+
-diff --git a/libs/xmlrpc-c/examples/compound_value_server.c b/libs/xmlrpc-c/examples/compound_value_server.c
-new file mode 100644
-index 0000000..99d1127
---- /dev/null
-+++ b/libs/xmlrpc-c/examples/compound_value_server.c
-@@ -0,0 +1,199 @@
-+/* An XML-RPC server program written in C, as an example of using
-+   compound XML-RPC values.
-+
-+   For a simple server program that just deals with integer values,
-+   see xmlrpc_sample_add_server.c.  This example focuses just on the
-+   compound XML-RPC values and not the server functions.
-+
-+   This server provides the example.divide XML-RPC method that the example
-+   client program compound_value_client.c invokes.  See that program for
-+   details on what the method does.
-+
-+   The program takes one argument: the HTTP port number on which the server
-+   is to accept connections, in decimal.
-+
-+   Example:
-+
-+   $ ./compound_value_server 8080&
-+   $ ./compound_value_client
-+*/
-+
-+#include <stdlib.h>
-+#include <stdio.h>
-+
-+#include <xmlrpc-c/base.h>
-+#include <xmlrpc-c/server.h>
-+#include <xmlrpc-c/server_abyss.h>
-+
-+#include "config.h"  /* information about this build environment */
-+
-+
-+
-+static void
-+computeQuotient(xmlrpc_env *    const envP,
-+                xmlrpc_value *  const ratioP,
-+                xmlrpc_double * const quotientP) {
-+
-+    xmlrpc_value * dividendP;
-+
-+    xmlrpc_struct_find_value(envP, ratioP, "DIVIDEND", &dividendP);
-+
-+    if (!envP->fault_occurred) {
-+        if (!dividendP)
-+            xmlrpc_env_set_fault(
-+                envP, 0, "Structure is missing 'DIVIDEND' member");
-+        else {
-+            xmlrpc_value * divisorP;
-+
-+            xmlrpc_struct_find_value(envP, ratioP, "DIVISOR", &divisorP);
-+
-+            if (!envP->fault_occurred) {
-+                if (!divisorP)
-+                    xmlrpc_env_set_fault(
-+                        envP, 0, "Structure is missing 'DIVISOR' member");
-+                else {
-+                    xmlrpc_double dividend;
-+
-+                    xmlrpc_read_double(envP, dividendP, &dividend);
-+
-+                    if (!envP->fault_occurred) {
-+                        xmlrpc_double divisor;
-+
-+                        xmlrpc_read_double(envP, divisorP, &divisor);
-+
-+                        if (!envP->fault_occurred)
-+                            *quotientP = dividend / divisor;
-+                    }
-+                    xmlrpc_DECREF(divisorP);
-+                }
-+            }
-+            xmlrpc_DECREF(dividendP);
-+        }
-+    }
-+}
-+
-+
-+
-+static void
-+computeQuotients(xmlrpc_env *    const envP,
-+                 xmlrpc_value *  const ratioArrayP,
-+                 xmlrpc_value ** const quotientArrayPP) {
-+
-+    xmlrpc_value * quotientArrayP;
-+
-+    quotientArrayP = xmlrpc_array_new(envP);
-+    if (!envP->fault_occurred) {
-+
-+        unsigned int const ratioCt = xmlrpc_array_size(envP, ratioArrayP);
-+
-+        unsigned int i;
-+
-+        for (i = 0; i < ratioCt && !envP->fault_occurred; ++i) {
-+            xmlrpc_value * ratioP;
-+
-+            xmlrpc_array_read_item(envP, ratioArrayP, i, &ratioP);
-+
-+            if (!envP->fault_occurred) {
-+                xmlrpc_double quotient;
-+
-+                computeQuotient(envP, ratioP, &quotient);
-+
-+                if (!envP->fault_occurred) {
-+                    xmlrpc_value * quotientP;
-+
-+                    quotientP = xmlrpc_double_new(envP, quotient);
-+
-+                    if (!envP->fault_occurred) {
-+                        xmlrpc_array_append_item(envP, quotientArrayP,
-+                                                 quotientP);
-+        
-+                        xmlrpc_DECREF(quotientP);
-+                    }
-+                }
-+                xmlrpc_DECREF(ratioP);
-+            }
-+        }
-+        if (envP->fault_occurred)
-+            xmlrpc_DECREF(quotientArrayP);
-+        else
-+            *quotientArrayPP = quotientArrayP;
-+    }
-+}
-+
-+
-+
-+static xmlrpc_value *
-+example_divide(xmlrpc_env *   const envP,
-+               xmlrpc_value * const paramArrayP,
-+               void *         const serverInfo,
-+               void *         const channelInfo) {
-+
-+    xmlrpc_value * retvalP;
-+    xmlrpc_int32 argVersion;
-+    xmlrpc_value * ratioArrayP;
-+
-+    xmlrpc_decompose_value(envP, paramArrayP, "(iA)",
-+                           &argVersion, &ratioArrayP);
-+    if (envP->fault_occurred)
-+        return NULL;
-+
-+    if (argVersion != 1) {
-+        xmlrpc_env_set_fault(envP, 0, "Parameter list version must be 1");
-+        return NULL;
-+    }
-+
-+    computeQuotients(envP, ratioArrayP, &retvalP);
-+
-+    xmlrpc_DECREF(ratioArrayP);
-+
-+    if (envP->fault_occurred)
-+        return NULL;
-+
-+    return retvalP;
-+}
-+
-+
-+
-+int 
-+main(int           const argc, 
-+     const char ** const argv) {
-+
-+    struct xmlrpc_method_info3 const methodInfo = {
-+        /* .methodName     = */ "example.divide",
-+        /* .methodFunction = */ &example_divide,
-+    };
-+    xmlrpc_server_abyss_parms serverparm;
-+    xmlrpc_registry * registryP;
-+    xmlrpc_env env;
-+
-+    if (argc-1 != 1) {
-+        fprintf(stderr, "You must specify 1 argument:  The TCP port "
-+                "number on which the server will accept connections "
-+                "for RPCs (8080 is a common choice).  "
-+                "You specified %d arguments.\n",  argc-1);
-+        exit(1);
-+    }
-+    
-+    xmlrpc_env_init(&env);
-+
-+    registryP = xmlrpc_registry_new(&env);
-+
-+    xmlrpc_registry_add_method3(&env, registryP, &methodInfo);
-+
-+    /* In the modern form of the Abyss API, we supply parameters in memory
-+       like a normal API.  We select the modern form by setting
-+       config_file_name to NULL: 
-+    */
-+    serverparm.config_file_name = NULL;
-+    serverparm.registryP        = registryP;
-+    serverparm.port_number      = atoi(argv[1]);
-+    serverparm.log_file_name    = "/tmp/xmlrpc_log";
-+
-+    printf("Running XML-RPC server...\n");
-+
-+    xmlrpc_server_abyss(&env, &serverparm, XMLRPC_APSIZE(log_file_name));
-+
-+    /* xmlrpc_server_abyss() never returns */
-+
-+    return 0;
-+}
-diff --git a/libs/xmlrpc-c/examples/cpp/.cvsignore b/libs/xmlrpc-c/examples/cpp/.cvsignore
-deleted file mode 100644
-index fedad6b..0000000
---- a/libs/xmlrpc-c/examples/cpp/.cvsignore
-+++ /dev/null
-@@ -1,4 +0,0 @@
--meerkat-app-list
--xmlrpc_sample_add_server
--xmlrpc_sample_add_client
--sample_add_client_complex
-diff --git a/libs/xmlrpc-c/examples/cpp/Makefile b/libs/xmlrpc-c/examples/cpp/Makefile
-index 1c8b930..18798cb 100644
---- a/libs/xmlrpc-c/examples/cpp/Makefile
-+++ b/libs/xmlrpc-c/examples/cpp/Makefile
-@@ -15,8 +15,8 @@ include $(BLDDIR)/config.mk
- default: all
--CXXFLAGS = $(CXXFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
--LDFLAGS = $(LADD)
-+CXXFLAGS = $(CFLAGS_PERSONAL) $(CADD)
-+LDFLAGS += $(LADD)
- # If this were a real application, working from an installed copy of
- # Xmlrpc-c, XMLRPC_C_CONFIG would just be 'xmlrpc-c-config'.  It would be
-@@ -24,10 +24,14 @@ LDFLAGS = $(LADD)
- XMLRPC_C_CONFIG = $(BLDDIR)/xmlrpc-c-config.test
-+SERVERPROGS_CGI = \
-+  xmlrpc_sample_add_server.cgi
-+
- SERVERPROGS_ABYSS = \
-   xmlrpc_inetd_server \
-   xmlrpc_loop_server \
-   xmlrpc_sample_add_server \
-+  callinfo_abyss_server \
- CLIENTPROGS = \
-   xmlrpc_sample_add_client \
-@@ -45,7 +49,11 @@ ifeq ($(MUST_BUILD_CLIENT),yes)
-   PROGS += $(CLIENTPROGS)
- endif
--PROGS += pstream_inetd_server
-+ifeq ($(ENABLE_CGI_SERVER),yes)
-+  PROGS += $(SERVERPROGS_CGI) 
-+endif
-+
-+PROGS += pstream_inetd_server pstream_serial_server
- ifeq ($(MUST_BUILD_CLIENT),yes)
-   PROGS += pstream_client
-@@ -53,37 +61,43 @@ endif
- INCLUDES = -I. $(shell $(XMLRPC_C_CONFIG) c++2 client abyss-server --cflags)
--LDADD_SERVER_ABYSS = \
--  $(shell $(XMLRPC_C_CONFIG) c++2 abyss-server --ldadd)
-+LIBS_SERVER_ABYSS = \
-+  $(shell $(XMLRPC_C_CONFIG) c++2 abyss-server --libs)
--LDADD_CLIENT = \
--  $(shell $(XMLRPC_C_CONFIG) c++2 client --ldadd)
-+LIBS_SERVER_CGI = \
-+  $(shell $(XMLRPC_C_CONFIG) c++2 cgi-server --libs)
--LDADD_BASE = \
--  $(shell $(XMLRPC_C_CONFIG) c++2 --ldadd)
-+LIBS_CLIENT = \
-+  $(shell $(XMLRPC_C_CONFIG) c++2 client --libs)
-+
-+LIBS_BASE = \
-+  $(shell $(XMLRPC_C_CONFIG) c++2 --libs)
- all: $(PROGS)
-+$(SERVERPROGS_CGI):%.cgi:%_cgi.o
-+      $(CXXLD) -o $@ $^ $(LIBS_SERVER_CGI) $(LDFLAGS)
-+
- $(SERVERPROGS_ABYSS):%:%.o
--      $(CXXLD) -o $@ $(LDFLAGS) $^ $(LDADD_SERVER_ABYSS)
-+      $(CXXLD) -o $@ $^ $(LIBS_SERVER_ABYSS) $(LDFLAGS)
- $(CLIENTPROGS):%:%.o
--      $(CXXLD) -o $@ $(LDFLAGS) $^ $(LDADD_CLIENT)
-+      $(CXXLD) -o $@ $^ $(LIBS_CLIENT) $(LDFLAGS)
--LDADD_PSTREAM_CLIENT = \
--  $(shell $(XMLRPC_C_CONFIG) c++2 client --ldadd)
-+LIBS_PSTREAM_CLIENT = \
-+  $(shell $(XMLRPC_C_CONFIG) c++2 client --libs)
- pstream_client:%:%.o
--      $(CXXLD) -o $@ $(LDFLAGS) $^ $(LDADD_PSTREAM_CLIENT)
-+      $(CXXLD) -o $@ $^ $(LIBS_PSTREAM_CLIENT) $(LDFLAGS)
--LDADD_PSTREAM_SERVER = \
--  $(shell $(XMLRPC_C_CONFIG) c++2 pstream-server --ldadd)
-+LIBS_PSTREAM_SERVER = \
-+  $(shell $(XMLRPC_C_CONFIG) c++2 pstream-server --libs)
--pstream_inetd_server:%:%.o
--      $(CXXLD) -o $@ $(LDFLAGS) $^ $(LDADD_PSTREAM_SERVER)
-+pstream_inetd_server pstream_serial_server:%:%.o
-+      $(CXXLD) -o $@ $^ $(LIBS_PSTREAM_SERVER) $(LDFLAGS)
--OBJECTS = $(PROGS:%=%.o)
-+OBJECTS = $(patsubst %,%.o,$(patsubst %.cgi,%_cgi,$(PROGS)))
- $(OBJECTS):%.o:%.cpp
-       $(CXX) -c $(INCLUDES) $(CXXFLAGS) $<
-@@ -97,11 +111,9 @@ config.h:
- xmlrpc_amconfig.h:
-       $(LN_S) $(BLDDIR)/$@ .
--include $(SRCDIR)/common.mk
--
- .PHONY: clean
--clean: clean-common
--      rm -f $(PROGS) config.h xmlrpc_amconfig.h
-+clean:
-+      rm -f $(PROGS) *.o config.h xmlrpc_amconfig.h
- .PHONY: distclean
- distclean: clean
-diff --git a/libs/xmlrpc-c/examples/cpp/callinfo_abyss_server.cpp b/libs/xmlrpc-c/examples/cpp/callinfo_abyss_server.cpp
-new file mode 100644
-index 0000000..a297b8e
---- /dev/null
-+++ b/libs/xmlrpc-c/examples/cpp/callinfo_abyss_server.cpp
-@@ -0,0 +1,133 @@
-+// A simple standalone XML-RPC server written in C++.
-+//
-+// This server returns to the caller his IP address and port number,
-+// as a demonstration of how to access such information.
-+//
-+// This works only on Unix (to wit, something that uses Abyss's
-+// ChanSwitchUnix channel switch to accept TCP connections from clients).
-+//
-+// See xmlrpc_sample_add_server.cpp for a more basic example.
-+//
-+//    To run this:
-+//
-+//       $ ./callinfo_abyss_server &
-+//       $ xmlrpc localhost:8080 getCallInfo
-+
-+#include <cassert>
-+#include <stdexcept>
-+#include <iostream>
-+#include <unistd.h>
-+#include <sys/socket.h>
-+#include <netinet/in.h>
-+#include <stdio.h>
-+
-+#include <xmlrpc-c/base.hpp>
-+#include <xmlrpc-c/registry.hpp>
-+#include <xmlrpc-c/server_abyss.hpp>
-+#include <xmlrpc-c/abyss.h>
-+
-+using namespace std;
-+
-+
-+struct tcpPortAddr {
-+    unsigned char  ipAddr[4];
-+    unsigned short portNumber;
-+};
-+
-+
-+static struct tcpPortAddr
-+tcpAddrFromSockAddr(struct sockaddr const sockAddr) {
-+
-+    const struct sockaddr_in * const sockAddrInP(
-+        static_cast<struct sockaddr_in *>((void *)&sockAddr));
-+
-+    const unsigned char * const ipAddr(
-+        static_cast<const unsigned char *>(
-+            (const void *)&sockAddrInP->sin_addr.s_addr)
-+        );   // 4 byte array
-+
-+    assert(sockAddrInP->sin_family == AF_INET);
-+
-+    struct tcpPortAddr retval;
-+
-+    retval.ipAddr[0] = ipAddr[0];
-+    retval.ipAddr[1] = ipAddr[1];
-+    retval.ipAddr[2] = ipAddr[2];
-+    retval.ipAddr[3] = ipAddr[3];
-+    retval.portNumber = ntohs(sockAddrInP->sin_port);
-+
-+    return retval;
-+}
-+
-+
-+
-+static std::string
-+rpcIpAddrMsg(xmlrpc_c::callInfo_serverAbyss const& callInfo) {
-+
-+    void * chanInfoPtr;
-+    SessionGetChannelInfo(callInfo.abyssSessionP, &chanInfoPtr);
-+
-+    struct abyss_unix_chaninfo * const chanInfoP(
-+        static_cast<struct abyss_unix_chaninfo *>(chanInfoPtr));
-+
-+    struct tcpPortAddr const tcpAddr(tcpAddrFromSockAddr(chanInfoP->peerAddr));
-+
-+    char msg[128];
-+
-+    sprintf(msg, "RPC is from IP address %u.%u.%u.%u, Port %hu",
-+            tcpAddr.ipAddr[0],
-+            tcpAddr.ipAddr[1],
-+            tcpAddr.ipAddr[2],
-+            tcpAddr.ipAddr[3],
-+            tcpAddr.portNumber);
-+
-+    return std::string(msg);
-+}
-+
-+
-+
-+class getCallInfoMethod : public xmlrpc_c::method2 {
-+public:
-+    void
-+    execute(xmlrpc_c::paramList        const& paramList,
-+            const xmlrpc_c::callInfo * const  callInfoPtr,
-+            xmlrpc_c::value *          const  retvalP) {
-+
-+        const xmlrpc_c::callInfo_serverAbyss * const callInfoP(
-+            dynamic_cast<const xmlrpc_c::callInfo_serverAbyss *>(callInfoPtr));
-+        
-+        paramList.verifyEnd(0);
-+
-+        // Because this gets called via a xmlrpc_c::serverAbyss:
-+        assert(callInfoP != NULL);
-+
-+        *retvalP = xmlrpc_c::value_string(rpcIpAddrMsg(*callInfoP));
-+    }
-+};
-+
-+
-+
-+int 
-+main(int           const, 
-+     const char ** const) {
-+
-+    try {
-+        xmlrpc_c::registry myRegistry;
-+
-+        xmlrpc_c::methodPtr const getCallInfoMethodP(new getCallInfoMethod);
-+
-+        myRegistry.addMethod("getCallInfo", getCallInfoMethodP);
-+        
-+        xmlrpc_c::serverAbyss myAbyssServer(xmlrpc_c::serverAbyss::constrOpt()
-+                                            .registryP(&myRegistry)
-+                                            .portNumber(8080)
-+                                            );
-+        
-+        myAbyssServer.run();
-+        // xmlrpc_c::serverAbyss.run() never returns
-+        assert(false);
-+    } catch (exception const& e) {
-+        cerr << "Something failed.  " << e.what() << endl;
-+    }
-+    return 0;
-+}
-diff --git a/libs/xmlrpc-c/examples/cpp/meerkat-app-list.cpp b/libs/xmlrpc-c/examples/cpp/meerkat-app-list.cpp
-deleted file mode 100644
-index c2bd1e3..0000000
---- a/libs/xmlrpc-c/examples/cpp/meerkat-app-list.cpp
-+++ /dev/null
-@@ -1,108 +0,0 @@
--// List recently-released Linux applications. (Written in C++.)
--// For more details about O'Reilly's excellent Meerkat news service, see:
--// http://www.oreillynet.com/pub/a/rss/2000/11/14/meerkat_xmlrpc.html */
--
--#include <iostream>
--#include <sstream>
--#include <string>
--
--using namespace std;
--
--#include <xmlrpc-c/oldcppwrapper.hpp>
--
--#define NAME           "XML-RPC C++ Meerkat Query Demo"
--#define VERSION        "0.1"
--#define MEERKAT_URL    "http://www.oreillynet.com/meerkat/xml-rpc/server.php"
--#define SOFTWARE_LINUX (6)
--
--static void list_apps (int hours) {
--
--    // Build our time_period parameter.
--    ostringstream time_period_stream;
--    time_period_stream << hours << "HOUR";
--    string time_period = time_period_stream.str();
--
--    // Assemble our meerkat query recipe.
--    XmlRpcValue recipe = XmlRpcValue::makeStruct();
--    recipe.structSetValue("category", XmlRpcValue::makeInt(SOFTWARE_LINUX));
--    recipe.structSetValue("time_period", XmlRpcValue::makeString(time_period));
--    recipe.structSetValue("descriptions", XmlRpcValue::makeInt(76));
--
--    // Build our parameter array.
--    XmlRpcValue param_array = XmlRpcValue::makeArray();
--    param_array.arrayAppendItem(recipe);
--
--    // Create a client pointing to Meerkat.
--    XmlRpcClient meerkat (MEERKAT_URL);
--
--    // Perform the query.
--    XmlRpcValue apps = meerkat.call("meerkat.getItems", param_array);
--
--    // Print our results.
--    int first = 1;
--    size_t app_count = apps.arraySize();
--    for (size_t i = 0; i < app_count; i++) {
--      XmlRpcValue app = apps.arrayGetItem(i);
--
--      // Get some information about our application.
--      string title       = app.structGetValue("title").getString();
--      string link        = app.structGetValue("link").getString();
--      string description = app.structGetValue("description").getString();
--      
--      // Print a separator line if necessary.
--      if (first)
--          first = 0;
--      else
--          cout << endl;
--
--      // Print this application entry.
--      if (description.size() > 0) {
--          cout << title << endl << description << endl << link << endl;
--      } else {
--          cout << title << endl << description << endl << link << endl;
--      }
--    }
--}
--
--// Print out a usage message.
--static void usage (void)
--{
--    cerr << "Usage: meekat-app-list [hours]" << endl;
--    cerr << "Data from <http://www.oreillynet.com/meerkat/>." << endl;
--    exit(1);
--}
--
--int main (int argc, char **argv) {
--    int status = 0;
--    int hours = 25;
--
--    // Parse our command-line arguments.
--    if (argc == 1) {
--      // Use default value for hours.
--    } else if (argc == 2) {
--      hours = atoi(argv[1]);
--    }
--    if (hours == 0)
--      usage();
--    if (hours > 49) {
--        cerr << "It's not nice to ask for > 49 hours at once." << endl;
--        exit(1);      
--    }
--
--    // Start up our client library.
--    XmlRpcClient::Initialize(NAME, VERSION);
--
--    // Call our implementation, and watch out for faults.
--    try {
--      list_apps(hours);
--    } catch (XmlRpcFault& fault) {
--      cerr << argv[0] << ": XML-RPC fault #" << fault.getFaultCode()
--           << ": " << fault.getFaultString() << endl;
--      status = 1;
--    }
--
--    // Shut down our client library.
--    XmlRpcClient::Terminate();
--
--    return status;
--}
-diff --git a/libs/xmlrpc-c/examples/cpp/pstream_client.cpp b/libs/xmlrpc-c/examples/cpp/pstream_client.cpp
-index 7a8f322..738e8ba 100644
---- a/libs/xmlrpc-c/examples/cpp/pstream_client.cpp
-+++ b/libs/xmlrpc-c/examples/cpp/pstream_client.cpp
-@@ -25,7 +25,7 @@
- #include <string>
- #include <iostream>
- #include <unistd.h>
--#include <sys/signal.h>
-+#include <signal.h>
- #include <xmlrpc-c/girerr.hpp>
- #include <xmlrpc-c/base.hpp>
- #include <xmlrpc-c/client.hpp>
-diff --git a/libs/xmlrpc-c/examples/cpp/pstream_inetd_server.cpp b/libs/xmlrpc-c/examples/cpp/pstream_inetd_server.cpp
-index 65f1aa5..00d930c 100644
---- a/libs/xmlrpc-c/examples/cpp/pstream_inetd_server.cpp
-+++ b/libs/xmlrpc-c/examples/cpp/pstream_inetd_server.cpp
-@@ -22,7 +22,7 @@
- #endif
- #include <cassert>
- #include <iostream>
--#include <sys/signal.h>
-+#include <signal.h>
- #include <xmlrpc-c/base.hpp>
- #include <xmlrpc-c/registry.hpp>
-@@ -76,12 +76,7 @@ main(int           const,
-             .socketFd(STDIN_FILENO)
-             .registryP(&myRegistry));
--        for (bool clientHasDisconnected = false; !clientHasDisconnected;)
--            server.runOnce(&clientHasDisconnected);
--                // This reads one packet (containing an XML-RPC call message)
--                // from Standard Input, executes the indicated RPC, and writes
--                // one packet containing the XML-RPC response message to
--                // Standard Input.
-+        server.run();
-     } catch (exception const& e) {
-         cerr << "Something threw an error: " << e.what() << endl;
-diff --git a/libs/xmlrpc-c/examples/cpp/pstream_serial_server.cpp b/libs/xmlrpc-c/examples/cpp/pstream_serial_server.cpp
-new file mode 100644
-index 0000000..aba2fbe
---- /dev/null
-+++ b/libs/xmlrpc-c/examples/cpp/pstream_serial_server.cpp
-@@ -0,0 +1,84 @@
-+/* A simple standalone RPC server based on an Xmlrpc-c packet socket.
-+
-+   This program expects the invoker to provide a socket in listen mode
-+   as Standard Input.
-+
-+   This is not an XML-RPC server, because it uses a simple packet socket
-+   instead of HTTP.  See xmlrpc_sample_add_server.cpp for an example of
-+   an XML-RPC server.
-+
-+   The advantage of this example over XML-RPC is that it has a connection
-+   concept.  The client can be connected indefinitely and the server gets
-+   notified when the client terminates, even if it gets aborted by its OS.
-+
-+   Here's an example of running this:
-+
-+     $ socketexec -listen -local_port=8080 ./pstream_serial_server
-+*/
-+
-+#ifndef WIN32
-+#include <unistd.h>
-+#endif
-+#include <cassert>
-+#include <iostream>
-+#include <signal.h>
-+
-+#include <xmlrpc-c/base.hpp>
-+#include <xmlrpc-c/registry.hpp>
-+#include <xmlrpc-c/server_pstream.hpp>
-+
-+using namespace std;
-+
-+
-+class sampleAddMethod : public xmlrpc_c::method {
-+public:
-+    sampleAddMethod() {
-+        // signature and help strings are documentation -- the client
-+        // can query this information with a system.methodSignature and
-+        // system.methodHelp RPC.
-+        this->_signature = "i:ii";  // method's arguments are two integers
-+        this->_help = "This method adds two integers together";
-+    }
-+    void
-+    execute(xmlrpc_c::paramList const& paramList,
-+            xmlrpc_c::value *   const  retvalP) {
-+        
-+        int const addend(paramList.getInt(0));
-+        int const adder(paramList.getInt(1));
-+        
-+        paramList.verifyEnd(2);
-+        
-+        *retvalP = xmlrpc_c::value_int(addend + adder);
-+    }
-+};
-+
-+
-+
-+int 
-+main(int           const, 
-+     const char ** const) {
-+
-+    // It's a good idea to disable SIGPIPE signals; if client closes his end
-+    // of the pipe/socket, we'd rather see a failure to send a response than
-+    // get killed by the OS.
-+    signal(SIGPIPE, SIG_IGN);
-+
-+    try {
-+        xmlrpc_c::registry myRegistry;
-+
-+        xmlrpc_c::methodPtr const sampleAddMethodP(new sampleAddMethod);
-+
-+        myRegistry.addMethod("sample.add", sampleAddMethodP);
-+
-+        xmlrpc_c::serverPstream server(
-+            xmlrpc_c::serverPstream::constrOpt()
-+            .socketFd(STDIN_FILENO)
-+            .registryP(&myRegistry));
-+
-+        server.runSerial();
-+
-+    } catch (exception const& e) {
-+        cerr << "Something threw an error: " << e.what() << endl;
-+    }
-+    return 0;
-+}
-diff --git a/libs/xmlrpc-c/examples/cpp/xmlrpc_inetd_server.cpp b/libs/xmlrpc-c/examples/cpp/xmlrpc_inetd_server.cpp
-index 0dd902a..3bfe186 100644
---- a/libs/xmlrpc-c/examples/cpp/xmlrpc_inetd_server.cpp
-+++ b/libs/xmlrpc-c/examples/cpp/xmlrpc_inetd_server.cpp
-@@ -1,6 +1,25 @@
- /* A simple XML-RPC server that runs under Inetd.  I.e. it lets the invoking
-    program handle all the connection switching and simply processes one
-    RPC on the provided connection (Standard Input) and exits.
-+
-+   A typical example of where this would be useful is with an Inetd
-+   "super server."
-+
-+   xmlrpc_sample_add_server.cpp is a server that does the same thing,
-+   but you give it a TCP port number and it listens for TCP connections
-+   and processes RPCs ad infinitum.  xmlrpc_socket_server.c is halfway
-+   in between those -- you give it an already bound and listening
-+   socket, and it listens for TCP connections and processes RPCs ad
-+   infinitum.
-+
-+   Here is an easy way to test this program:
-+
-+     socketexec --accept --local_port=8080 --stdin -- ./xmlrpc_inetd_server
-+
-+   Now run the client program 'xmlrpc_sample_add_client'.  Socketexec
-+   will accept the connection that the client program requests and pass it
-+   to this program on Standard Input.  This program will perform the RPC,
-+   respond to the client, then exit.
- */
- #ifndef WIN32
-@@ -49,10 +68,8 @@ main(int           const,
-     myRegistry.addMethod("sample.add", sampleAddMethodP);
-     xmlrpc_c::serverAbyss myAbyssServer(
--        myRegistry,
--        8080,              // TCP port on which to listen
--        "/tmp/xmlrpc_log"  // Log file
--        );
-+         xmlrpc_c::serverAbyss::constrOpt()
-+         .registryP(&myRegistry));
-     myAbyssServer.runConn(STDIN_FILENO);
-         /* This reads the HTTP POST request from Standard Input and
-diff --git a/libs/xmlrpc-c/examples/cpp/xmlrpc_sample_add_server.cpp b/libs/xmlrpc-c/examples/cpp/xmlrpc_sample_add_server.cpp
-index ff96ae2..f499e5a 100644
---- a/libs/xmlrpc-c/examples/cpp/xmlrpc_sample_add_server.cpp
-+++ b/libs/xmlrpc-c/examples/cpp/xmlrpc_sample_add_server.cpp
-@@ -62,10 +62,9 @@ main(int           const,
-         myRegistry.addMethod("sample.add", sampleAddMethodP);
-         
-         xmlrpc_c::serverAbyss myAbyssServer(
--            myRegistry,
--            8080,              // TCP port on which to listen
--            "/tmp/xmlrpc_log"  // Log file
--            );
-+            xmlrpc_c::serverAbyss::constrOpt()
-+            .registryP(&myRegistry)
-+            .portNumber(8080));
-         
-         myAbyssServer.run();
-         // xmlrpc_c::serverAbyss.run() never returns
-diff --git a/libs/xmlrpc-c/examples/cpp/xmlrpc_sample_add_server_cgi.cpp b/libs/xmlrpc-c/examples/cpp/xmlrpc_sample_add_server_cgi.cpp
-new file mode 100644
-index 0000000..9b80603
---- /dev/null
-+++ b/libs/xmlrpc-c/examples/cpp/xmlrpc_sample_add_server_cgi.cpp
-@@ -0,0 +1,62 @@
-+/* A CGI script that effects a simple XML-RPC server, written in C++.
-+
-+   See the identically named C program source code for hints on running
-+   this example.
-+
-+*/
-+
-+#include <cassert>
-+#include <iostream>
-+
-+#include <xmlrpc-c/base.hpp>
-+#include <xmlrpc-c/registry.hpp>
-+#include <xmlrpc-c/server_cgi.hpp>
-+
-+using namespace std;
-+
-+class sampleAddMethod : public xmlrpc_c::method {
-+public:
-+    sampleAddMethod() {
-+        // signature and help strings are documentation -- the client
-+        // can query this information with a system.methodSignature and
-+        // system.methodHelp RPC.
-+        this->_signature = "i:ii";  // method's arguments, result are integers
-+        this->_help = "This method adds two integers together";
-+    }
-+    void
-+    execute(xmlrpc_c::paramList const& paramList,
-+            xmlrpc_c::value *   const  retvalP) {
-+        
-+        int const addend(paramList.getInt(0));
-+        int const adder(paramList.getInt(1));
-+        
-+        paramList.verifyEnd(2);
-+        
-+        *retvalP = xmlrpc_c::value_int(addend + adder);
-+    }
-+};
-+
-+
-+
-+int 
-+main(int           const, 
-+     const char ** const) {
-+
-+    try {
-+        xmlrpc_c::registry myRegistry;
-+
-+        xmlrpc_c::methodPtr const sampleAddMethodP(new sampleAddMethod);
-+
-+        myRegistry.addMethod("sample.add", sampleAddMethodP);
-+
-+        xmlrpc_c::serverCgi myServer(
-+            xmlrpc_c::serverCgi::constrOpt()
-+            .registryP(&myRegistry));
-+
-+        myServer.processCall();
-+
-+    } catch (exception const& e) {
-+        cerr << "Something failed.  " << e.what() << endl;
-+    }
-+    return 0;
-+}
-diff --git a/libs/xmlrpc-c/examples/gen_sample_add_xml.c b/libs/xmlrpc-c/examples/gen_sample_add_xml.c
-index 736d822..dd65699 100644
---- a/libs/xmlrpc-c/examples/gen_sample_add_xml.c
-+++ b/libs/xmlrpc-c/examples/gen_sample_add_xml.c
-@@ -28,7 +28,7 @@ die_if_fault_occurred(xmlrpc_env * const envP) {
- int 
- main(int           const argc, 
--     const char ** const argv ATTR_UNUSED) {
-+     const char ** const argv) {
-     char * const methodName = "sample.add";
-diff --git a/libs/xmlrpc-c/examples/interrupted_client.c b/libs/xmlrpc-c/examples/interrupted_client.c
-index 89cd4e8..1652be2 100644
---- a/libs/xmlrpc-c/examples/interrupted_client.c
-+++ b/libs/xmlrpc-c/examples/interrupted_client.c
-@@ -2,6 +2,7 @@
-    both by timeout and by control-C.
- */
-+#define _XOPEN_SOURCE 600
- #include <stdlib.h>
- #include <unistd.h>
- #include <stdio.h>
-@@ -110,7 +111,7 @@ addInterruptibly(xmlrpc_client * const clientP,
- int 
- main(int           const argc, 
--     const char ** const argv ATTR_UNUSED) {
-+     const char ** const argv) {
-     const char * const serverUrl = "http://localhost:8080/RPC2";
-diff --git a/libs/xmlrpc-c/examples/interrupted_server.c b/libs/xmlrpc-c/examples/interrupted_server.c
-index 9d5c593..56bac81 100644
---- a/libs/xmlrpc-c/examples/interrupted_server.c
-+++ b/libs/xmlrpc-c/examples/interrupted_server.c
-@@ -1,4 +1,4 @@
--/* A simple standalone XML-RPC server based on Abyss.
-+/* A simple standalone XML-RPC server program based on Abyss.
-    You can terminate this server in controlled fashion with a SIGTERM
-    signal.
-@@ -7,6 +7,7 @@
-    simpler code, but it is not interruptible with SIGTERM.
- */
-+#define _XOPEN_SOURCE 600
- #include <stdlib.h>
- #include <stdio.h>
- #include <signal.h>
-@@ -36,7 +37,7 @@ dieIfFailed(const char * const description,
- static xmlrpc_server_abyss_t * serverToTerminateP;
- static void 
--sigtermHandler(int const signalClass ATTR_UNUSED) {
-+sigtermHandler(int const signalClass) {
-     
-     xmlrpc_env env;
-@@ -82,8 +83,8 @@ restoreSigtermHandler(void){
- static xmlrpc_value *
- sample_add(xmlrpc_env *   const envP, 
-            xmlrpc_value * const paramArrayP,
--           void *         const serverInfo ATTR_UNUSED,
--           void *         const channelInfo ATTR_UNUSED) {
-+           void *         const serverInfo,
-+           void *         const channelInfo) {
-     
-     xmlrpc_int x, y, z;
-@@ -105,6 +106,11 @@ int
- main(int           const argc, 
-      const char ** const argv) {
-+    struct xmlrpc_method_info3 const methodInfo = {
-+        .methodName     = "sample.add",
-+        .methodFunction = &sample_add,
-+        .serverInfo = NULL
-+    };
-     xmlrpc_server_abyss_parms serverparm;
-     xmlrpc_server_abyss_t * serverP;
-     xmlrpc_registry * registryP;
-@@ -126,8 +132,7 @@ main(int           const argc,
-     registryP = xmlrpc_registry_new(&env);
-     dieIfFailed("xmlrpc_registry_new", env);
--    xmlrpc_registry_add_method2(
--        &env, registryP, "sample.add", &sample_add, NULL, NULL, NULL);
-+    xmlrpc_registry_add_method3(&env, registryP, &methodInfo);
-     dieIfFailed("xmlrpc_registry_add_method2", env);
-     serverparm.config_file_name = NULL;
-diff --git a/libs/xmlrpc-c/examples/json.c b/libs/xmlrpc-c/examples/json.c
-new file mode 100644
-index 0000000..89fe82b
---- /dev/null
-+++ b/libs/xmlrpc-c/examples/json.c
-@@ -0,0 +1,115 @@
-+/* 
-+  This example program demonstrates the JSON parsing and generating
-+  capabilities of Xmlrpc-c.
-+
-+  The program reads JSON text from Standard Input and displays its value as
-+  XML-RPC XML text.  It then re-generates JSON from the intermediate
-+  parsed information and displays that.
-+*/
-+#include <stdlib.h>
-+#include <stdio.h>
-+
-+#include <xmlrpc-c/json.h>
-+
-+
-+
-+static void 
-+dieIfFaultOccurred(xmlrpc_env * const envP) {
-+    if (envP->fault_occurred) {
-+        fprintf(stderr, "ERROR: %s (%d)\n",
-+                envP->fault_string, envP->fault_code);
-+        exit(1);
-+    }
-+}
-+
-+
-+
-+void
-+printAsXml(xmlrpc_value * const valP) {
-+
-+    xmlrpc_env env;
-+    xmlrpc_mem_block out;
-+
-+    xmlrpc_env_init(&env);
-+    
-+    XMLRPC_MEMBLOCK_INIT(char, &env, &out, 0);
-+
-+    dieIfFaultOccurred(&env);
-+
-+    xmlrpc_serialize_value(&env, &out, valP);
-+
-+    printf("XML-RPC XML:\n");
-+
-+    printf("%.*s\n",
-+           XMLRPC_MEMBLOCK_SIZE(char, &out),
-+           XMLRPC_MEMBLOCK_CONTENTS(char, &out));
-+
-+    XMLRPC_MEMBLOCK_CLEAN(char, &out);
-+    xmlrpc_env_clean(&env);
-+}
-+
-+
-+
-+void
-+printAsJson(xmlrpc_value * const valP) {
-+
-+    xmlrpc_env env;
-+    xmlrpc_mem_block out;
-+    xmlrpc_value * val2P;
-+
-+    xmlrpc_env_init(&env);
-+
-+    XMLRPC_MEMBLOCK_INIT(char, &env, &out, 0);
-+
-+    dieIfFaultOccurred(&env);
-+
-+    xmlrpc_serialize_json(&env, valP, &out);
-+
-+    dieIfFaultOccurred(&env);
-+
-+    printf("JSON:\n");
-+
-+    printf("%.*s\n",
-+           XMLRPC_MEMBLOCK_SIZE(char, &out),
-+           XMLRPC_MEMBLOCK_CONTENTS(char, &out));
-+
-+    XMLRPC_MEMBLOCK_CLEAN(char, &out);
-+    xmlrpc_env_clean(&env);
-+}
-+
-+
-+
-+int
-+main(int argc, const char *argv[]) {
-+
-+    xmlrpc_env env;
-+    char buf[1024];
-+    xmlrpc_value * valP;
-+    size_t bytesRead;
-+
-+    xmlrpc_env_init(&env);
-+
-+    if (argc-1 > 0) {
-+        fprintf(stderr, "This program has no arguments.  "
-+                "JSON input is from Standard Input\n");
-+        exit(1);
-+    }
-+    
-+    bytesRead = fread(buf, 1, sizeof(buf), stdin);
-+    buf[bytesRead] = '\0';
-+        
-+    valP = xmlrpc_parse_json(&env, buf);
-+
-+    dieIfFaultOccurred(&env);
-+
-+    printAsXml(valP);
-+
-+    printAsJson(valP);
-+
-+    xmlrpc_DECREF(valP);
-+    xmlrpc_env_clean(&env);
-+    
-+    return 0;
-+}
-+
-+
-diff --git a/libs/xmlrpc-c/examples/query-meerkat.c b/libs/xmlrpc-c/examples/query-meerkat.c
-deleted file mode 100644
-index e566654..0000000
---- a/libs/xmlrpc-c/examples/query-meerkat.c
-+++ /dev/null
-@@ -1,156 +0,0 @@
--/* A simple news-searcher, written in C to demonstrate how to use the
--   xmplrpc-c client library.
--
--   This program connects to an XMLRPC server that O'Reilly runs on the
--   Internet, gets some information, and displays it on Standard Output.
--   
--   Note that that server is not in any way designed specifically for xmlrpc-c.
--   It simply implements the XMLRPC protocol, and works with any client that
--   implements XMLRPC.
--   
--   The service that the aforementioned server provides is that it gives you
--   a list of news articles that match a certain regular expression.  You give
--   that regular expression an argument to this client program.
--
--   For more details about O'Reilly's excellent Meerkat news service, see:
--   http://www.oreillynet.com/pub/a/rss/2000/11/14/meerkat_xmlrpc.html
--*/
--
--#include <stdlib.h>
--#include <stdio.h>
--#include <string.h>
--
--#include <xmlrpc-c/base.h>
--#include <xmlrpc-c/client.h>
--
--#include "config.h"  /* information about this build environment */
--
--#define NAME        "XML-RPC C Meerkat Query Demo"
--#define VERSION     "1.0"
--#define MEERKAT_URL "http://www.oreillynet.com/meerkat/xml-rpc/server.php"
--
--struct cmdline {
--    const char * searchArg;
--    int hours;
--};
--
--
--static void
--parseCommandLine(int              const argc, 
--                 const char **    const argv,
--                 struct cmdline * const cmdlineP) {
--
--    if (argc-1 < 1) {
--        fprintf(stderr, "Need at least one argument:  "
--                "A mysql regular expression "
--                "search pattern.  Try 'query-meerkat Linux'\n");
--        exit(1);
--    } else {
--        cmdlineP->searchArg = argv[1];
--
--        if (argc-1 < 2) {
--            cmdlineP->hours = 24;
--        } else {
--            cmdlineP->hours = atoi(argv[2]);
--            if (cmdlineP->hours > 49) {
--                fprintf(stderr, "It's not nice to ask for > 49 hours "
--                        "at once.\n");
--                exit(1);    
--            }
--            if (argc-1 > 2) {
--                fprintf(stderr, "There are at most 2 arguments: "
--                        "search pattern "
--                        "and number of hours.");
--                exit(1);
--            }
--        }
--    }
--}
--
--
--
--static void 
--die_if_fault_occurred(xmlrpc_env * const env) {
--    /* We're a command-line utility, so we abort if an error occurs. */
--    if (env->fault_occurred) {
--        fprintf(stderr, "XML-RPC Fault #%d: %s\n",
--                env->fault_code, env->fault_string);
--        exit(1);
--    }
--}
--
--
--
--/* Hey! We fit in one function. */
--int 
--main(int          const argc, 
--     const char** const argv) {
--
--    struct cmdline cmdline;
--    char time_period[16];
--    xmlrpc_env env;
--    xmlrpc_value *stories, *story;
--    size_t size, i;
--    int first;
--
--    parseCommandLine(argc, argv, &cmdline);
--
--    snprintf(time_period, sizeof(time_period), "%dHOUR", cmdline.hours);
--
--    xmlrpc_env_init(&env);
--
--    /* Set up our client. */
--    xmlrpc_client_init2(&env, XMLRPC_CLIENT_NO_FLAGS, NAME, VERSION, NULL, 0);
--
--    die_if_fault_occurred(&env);
--
--    /* Ask Meerkat to look for matching stories. */
--    stories = xmlrpc_client_call(&env, MEERKAT_URL,
--                                 "meerkat.getItems", "({s:s,s:i,s:s})",
--                                 "search", cmdline.searchArg,
--                                 "descriptions", (xmlrpc_int32) 76,
--                                 "time_period", time_period);
--    die_if_fault_occurred(&env);
--    
--    /* Loop over the stories. */
--    size = xmlrpc_array_size(&env, stories);
--    die_if_fault_occurred(&env);
--    first = 1;
--    for (i = 0; i < size; i++) {
--        const char * title;
--        const char * link;
--        const char * description;
--
--        /* Extract the useful information from our story. */
--        story = xmlrpc_array_get_item(&env, stories, i);
--        die_if_fault_occurred(&env);
--        xmlrpc_decompose_value(&env, story, "{s:s,s:s,s:s,*}",
--                               "title", &title,
--                               "link", &link,
--                               "description", &description);
--        die_if_fault_occurred(&env);
--
--        /* Print a separator line if necessary. */
--        if (first)
--            first = 0;
--        else
--            printf("\n");
--
--        /* Print the story. */
--        if (strlen(description) > 0) {
--            printf("%s\n%s\n%s\n", title, description, link);
--        } else {
--            printf("%s\n%s\n", title, link);
--        }
--        free((char*)title);
--        free((char*)link);
--        free((char*)description);
--    }
--    
--    /* Shut down our client. */
--    xmlrpc_DECREF(stories);
--    xmlrpc_env_clean(&env);
--    xmlrpc_client_cleanup();
--
--    return 0;
--}
-diff --git a/libs/xmlrpc-c/examples/synch_client.c b/libs/xmlrpc-c/examples/synch_client.c
-index 589aa7b..b9b62a2 100644
---- a/libs/xmlrpc-c/examples/synch_client.c
-+++ b/libs/xmlrpc-c/examples/synch_client.c
-@@ -1,4 +1,4 @@
--/* A simple synchronous XML-RPC client written in C. */
-+/* A simple synchronous XML-RPC client program written in C. */
- #include <stdlib.h>
- #include <stdio.h>
-@@ -24,7 +24,7 @@ die_if_fault_occurred(xmlrpc_env * const envP) {
- int 
- main(int           const argc, 
--     const char ** const argv ATTR_UNUSED) {
-+     const char ** const argv) {
-     xmlrpc_env env;
-     xmlrpc_value * resultP;
-diff --git a/libs/xmlrpc-c/examples/xmlrpc_asynch_client.c b/libs/xmlrpc-c/examples/xmlrpc_asynch_client.c
-index ec3bd31..ff56dfd 100644
---- a/libs/xmlrpc-c/examples/xmlrpc_asynch_client.c
-+++ b/libs/xmlrpc-c/examples/xmlrpc_asynch_client.c
-@@ -1,4 +1,4 @@
--/* A simple asynchronous XML-RPC client written in C, as an example of
-+/* A simple asynchronous XML-RPC client program written in C, as an example of
-    Xmlrpc-c asynchronous RPC facilities.  This is the same as the 
-    simpler synchronous client xmlprc_sample_add_client.c, except that
-    it adds 3 different pairs of numbers with the summation RPCs going on
-@@ -35,7 +35,7 @@ static void
- handle_sample_add_response(const char *   const serverUrl,
-                            const char *   const methodName,
-                            xmlrpc_value * const paramArrayP,
--                           void *         const user_data ATTR_UNUSED,
-+                           void *         const user_data,
-                            xmlrpc_env *   const faultP,
-                            xmlrpc_value * const resultP) {
-@@ -70,7 +70,7 @@ handle_sample_add_response(const char *   const serverUrl,
- int 
- main(int           const argc, 
--     const char ** const argv ATTR_UNUSED) {
-+     const char ** const argv) {
-     const char * const serverUrl = "http://localhost:8080/RPC2";
-     const char * const methodName = "sample.add";
-diff --git a/libs/xmlrpc-c/examples/xmlrpc_inetd_server.c b/libs/xmlrpc-c/examples/xmlrpc_inetd_server.c
-index 196b42a..8b1bb48 100644
---- a/libs/xmlrpc-c/examples/xmlrpc_inetd_server.c
-+++ b/libs/xmlrpc-c/examples/xmlrpc_inetd_server.c
-@@ -1,4 +1,4 @@
--/* A simple standalone XML-RPC server based on Abyss that processes a
-+/* A simple standalone XML-RPC server program based on Abyss that processes a
-    single RPC from an existing TCP connection on Standard Input.
-    A typical example of where this would be useful is with an Inetd
-@@ -21,6 +21,7 @@
-    respond to the client, then exit.
- */
-+#define _XOPEN_SOURCE 600
- #include <stdlib.h>
- #include <stdio.h>
- #include <signal.h>
-@@ -63,8 +64,8 @@ setupSignalHandlers(void) {
- static xmlrpc_value *
- sample_add(xmlrpc_env *   const envP, 
-            xmlrpc_value * const paramArrayP,
--           void *         const serverInfo ATTR_UNUSED,
--           void *         const channelInfo ATTR_UNUSED) {
-+           void *         const serverInfo,
-+           void *         const channelInfo) {
-     
-     xmlrpc_int x, y, z;
-@@ -86,6 +87,11 @@ int
- main(int           const argc, 
-      const char ** const argv) {
-+    struct xmlrpc_method_info3 const methodInfo = {
-+        .methodName     = "sample.add",
-+        .methodFunction = &sample_add,
-+        .serverInfo = NULL
-+    };
-     TServer abyssServer;
-     xmlrpc_registry * registryP;
-     xmlrpc_env env;
-@@ -101,8 +107,7 @@ main(int           const argc,
-     registryP = xmlrpc_registry_new(&env);
--    xmlrpc_registry_add_method2(
--        &env, registryP, "sample.add", &sample_add, NULL, NULL, NULL);
-+    xmlrpc_registry_add_method3(&env, registryP, &methodInfo);
-     ServerCreateNoAccept(&abyssServer, "XmlRpcServer", NULL, NULL);
-     
-diff --git a/libs/xmlrpc-c/examples/xmlrpc_loop_server.c b/libs/xmlrpc-c/examples/xmlrpc_loop_server.c
-index 2553ea6..af0c750 100644
---- a/libs/xmlrpc-c/examples/xmlrpc_loop_server.c
-+++ b/libs/xmlrpc-c/examples/xmlrpc_loop_server.c
-@@ -1,11 +1,14 @@
--/* A simple standalone XML-RPC server based on Abyss that contains a
-+/* A simple standalone XML-RPC server program based on Abyss that contains a
-    simple one-thread request processing loop.  
-+   This uses the "provide your own Abyss server" mode of operation.
-+
-    xmlrpc_sample_add_server.c is a server that does the same thing, but
-    does it by running a full Abyss daemon in the background, so it has
-    less control over how the requests are served.
- */
-+#define _XOPEN_SOURCE 600
- #include <stdlib.h>
- #include <stdio.h>
- #include <signal.h>
-@@ -66,7 +69,7 @@ printPeerIpAddr(TSession * const abyssSessionP) {
- static xmlrpc_value *
- sample_add(xmlrpc_env *   const envP, 
-            xmlrpc_value * const paramArrayP,
--           void *         const serverInfo ATTR_UNUSED,
-+           void *         const serverInfo,
-            void *         const channelInfo) {
-     
-     xmlrpc_int x, y, z;
-@@ -117,6 +120,11 @@ int
- main(int           const argc, 
-      const char ** const argv) {
-+    struct xmlrpc_method_info3 const methodInfo = {
-+        .methodName     = "sample.add",
-+        .methodFunction = &sample_add,
-+        .serverInfo = NULL
-+    };
-     TServer abyssServer;
-     xmlrpc_registry * registryP;
-     xmlrpc_env env;
-@@ -136,8 +144,7 @@ main(int           const argc,
-     registryP = xmlrpc_registry_new(&env);
--    xmlrpc_registry_add_method2(
--        &env, registryP, "sample.add", &sample_add, NULL, NULL, NULL);
-+    xmlrpc_registry_add_method3(&env, registryP, &methodInfo);
-     xmlrpc_registry_set_shutdown(registryP,
-                                  &requestShutdown, &terminationRequested);
-diff --git a/libs/xmlrpc-c/examples/xmlrpc_sample_add_client.c b/libs/xmlrpc-c/examples/xmlrpc_sample_add_client.c
-index f675a92..3a219dd 100644
---- a/libs/xmlrpc-c/examples/xmlrpc_sample_add_client.c
-+++ b/libs/xmlrpc-c/examples/xmlrpc_sample_add_client.c
-@@ -1,7 +1,10 @@
--/* A simple synchronous XML-RPC client written in C, as an example of
-+/* A simple synchronous XML-RPC client program written in C, as an example of
-    an Xmlrpc-c client.  This invokes the sample.add procedure that the
--   Xmlrpc-c example server.c server provides.  I.e. it adds to numbers
--   together, the hard way.
-+   Xmlrpc-c example xmlrpc_sample_add_server.c server provides.  I.e. it adds
-+   two numbers together, the hard way.
-+
-+   This sends the RPC to the server running on the local system ("localhost"),
-+   HTTP Port 8080.
- */
- #include <stdlib.h>
-@@ -16,9 +19,9 @@
- #define VERSION "1.0"
- static void 
--die_if_fault_occurred (xmlrpc_env * const envP) {
-+dieIfFaultOccurred (xmlrpc_env * const envP) {
-     if (envP->fault_occurred) {
--        fprintf(stderr, "XML-RPC Fault: %s (%d)\n",
-+        fprintf(stderr, "ERROR: %s (%d)\n",
-                 envP->fault_string, envP->fault_code);
-         exit(1);
-     }
-@@ -28,7 +31,7 @@ die_if_fault_occurred (xmlrpc_env * const envP) {
- int 
- main(int           const argc, 
--     const char ** const argv ATTR_UNUSED) {
-+     const char ** const argv) {
-     xmlrpc_env env;
-     xmlrpc_value * resultP;
-@@ -46,7 +49,7 @@ main(int           const argc,
-     /* Start up our XML-RPC client library. */
-     xmlrpc_client_init2(&env, XMLRPC_CLIENT_NO_FLAGS, NAME, VERSION, NULL, 0);
--    die_if_fault_occurred(&env);
-+    dieIfFaultOccurred(&env);
-     printf("Making XMLRPC call to server url '%s' method '%s' "
-            "to request the sum "
-@@ -55,11 +58,11 @@ main(int           const argc,
-     /* Make the remote procedure call */
-     resultP = xmlrpc_client_call(&env, serverUrl, methodName,
-                                  "(ii)", (xmlrpc_int32) 5, (xmlrpc_int32) 7);
--    die_if_fault_occurred(&env);
-+    dieIfFaultOccurred(&env);
-     
-     /* Get our sum and print it out. */
-     xmlrpc_read_int(&env, resultP, &sum);
--    die_if_fault_occurred(&env);
-+    dieIfFaultOccurred(&env);
-     printf("The sum is %d\n", sum);
-     
-     /* Dispose of our result value. */
-diff --git a/libs/xmlrpc-c/examples/xmlrpc_sample_add_server.c b/libs/xmlrpc-c/examples/xmlrpc_sample_add_server.c
-index dbd2861..a4a4370 100644
---- a/libs/xmlrpc-c/examples/xmlrpc_sample_add_server.c
-+++ b/libs/xmlrpc-c/examples/xmlrpc_sample_add_server.c
-@@ -1,4 +1,24 @@
--/* A simple standalone XML-RPC server written in C. */
-+/* A simple standalone XML-RPC server program written in C. */
-+
-+/* This server knows one RPC class (besides the system classes):
-+   "sample.add".
-+
-+   The program takes one argument: the HTTP port number on which the server
-+   is to accept connections, in decimal.
-+
-+   You can use the example program 'xmlrpc_sample_add_client' to send an RPC
-+   to this server.
-+
-+   Example:
-+
-+   $ ./xmlrpc_sample_add_server 8080&
-+   $ ./xmlrpc_sample_add_client
-+
-+   For more fun, run client and server in separate terminals and turn on
-+   tracing for each:
-+
-+   $ export XMLRPC_TRACE_XML=1
-+*/
- #include <stdlib.h>
- #include <stdio.h>
-@@ -25,8 +45,8 @@
- static xmlrpc_value *
- sample_add(xmlrpc_env *   const envP,
-            xmlrpc_value * const paramArrayP,
--           void *         const serverInfo ATTR_UNUSED,
--           void *         const channelInfo ATTR_UNUSED) {
-+           void *         const serverInfo,
-+           void *         const channelInfo) {
-     xmlrpc_int32 x, y, z;
-@@ -54,6 +74,10 @@ int
- main(int           const argc, 
-      const char ** const argv) {
-+    struct xmlrpc_method_info3 const methodInfo = {
-+        /* .methodName     = */ "sample.add",
-+        /* .methodFunction = */ &sample_add,
-+    };
-     xmlrpc_server_abyss_parms serverparm;
-     xmlrpc_registry * registryP;
-     xmlrpc_env env;
-@@ -70,8 +94,7 @@ main(int           const argc,
-     registryP = xmlrpc_registry_new(&env);
--    xmlrpc_registry_add_method2(
--        &env, registryP, "sample.add", &sample_add, NULL, NULL, NULL);
-+    xmlrpc_registry_add_method3(&env, registryP, &methodInfo);
-     /* In the modern form of the Abyss API, we supply parameters in memory
-        like a normal API.  We select the modern form by setting
-diff --git a/libs/xmlrpc-c/examples/xmlrpc_sample_add_server_cgi.c b/libs/xmlrpc-c/examples/xmlrpc_sample_add_server_cgi.c
-index fa476a7..e34c4d7 100644
---- a/libs/xmlrpc-c/examples/xmlrpc_sample_add_server_cgi.c
-+++ b/libs/xmlrpc-c/examples/xmlrpc_sample_add_server_cgi.c
-@@ -1,4 +1,22 @@
--/* A simple standalone XML-RPC server written in C. */
-+/* A CGI script written in C to effect a simple XML-RPC server.
-+
-+   Example of use:
-+
-+     - Compile this as the executable 'xmlrpc_sample_add_server.cgi'
-+
-+     - Place the .cgi file in web server www.example.com's /cgi-bin
-+       directory.
-+
-+     - Configure the web server to permit CGI scripts in /cgi-bin
-+       (Apache ExecCgi directory option).
-+
-+     - Configure the web server to recognize this .cgi file as a CGI
-+       script (Apache "AddHandler cgi-script ..." or ScriptAlias).
-+
-+     - $ xmlrpc http://www.example.com/cgi-bin/xmlrpc_sample_add_server.cgi \
-+           sample.add i/5 i/7
-+*/
-+
- #include <stdlib.h>
- #include <stdio.h>
-@@ -12,7 +30,7 @@
- static xmlrpc_value *
- sample_add(xmlrpc_env *   const envP,
-            xmlrpc_value * const paramArrayP,
--           void *         const user_data ATTR_UNUSED) {
-+           void *         const user_data) {
-     xmlrpc_int32 x, y, z;
-diff --git a/libs/xmlrpc-c/examples/xmlrpc_server_validatee.c b/libs/xmlrpc-c/examples/xmlrpc_server_validatee.c
-index 927da8a..ad613a8 100644
---- a/libs/xmlrpc-c/examples/xmlrpc_server_validatee.c
-+++ b/libs/xmlrpc-c/examples/xmlrpc_server_validatee.c
-@@ -66,7 +66,7 @@
- static xmlrpc_value *
- array_of_structs(xmlrpc_env *   const envP, 
-                  xmlrpc_value * const paramArrayP, 
--                 void *         const user_data ATTR_UNUSED) {
-+                 void *         const user_data) {
-     xmlrpc_value * arrayP;
-     xmlrpc_value * retval;
-@@ -114,7 +114,7 @@ array_of_structs(xmlrpc_env *   const envP,
- static xmlrpc_value *
- count_entities(xmlrpc_env *   const envP,
-                xmlrpc_value * const paramArrayP, 
--               void *         const user_data ATTR_UNUSED) {
-+               void *         const user_data) {
-     const char * str;
-     size_t len, i;
-@@ -154,7 +154,7 @@ count_entities(xmlrpc_env *   const envP,
- static xmlrpc_value *
- easy_struct(xmlrpc_env *   const envP,
-             xmlrpc_value * const paramArrayP,
--            void *         const user_data ATTR_UNUSED) {
-+            void *         const user_data) {
-     xmlrpc_int32 larry, moe, curly;
-@@ -179,7 +179,7 @@ easy_struct(xmlrpc_env *   const envP,
- static xmlrpc_value *
- echo_struct(xmlrpc_env *   const envP,
-             xmlrpc_value * const paramArrayP, 
--            void *         const user_data ATTR_UNUSED) {
-+            void *         const user_data) {
-     xmlrpc_value * sP;
-@@ -198,9 +198,9 @@ echo_struct(xmlrpc_env *   const envP,
- */
- static xmlrpc_value *
--many_types(xmlrpc_env *   const env ATTR_UNUSED, 
-+many_types(xmlrpc_env *   const env, 
-            xmlrpc_value * const param_array, 
--           void *         const user_data ATTR_UNUSED) {
-+           void *         const user_data) {
-     /* Create another reference to our argument array and return it as is. */
-     xmlrpc_INCREF(param_array);
-@@ -244,7 +244,7 @@ concatenate(xmlrpc_env *    const envP,
- static xmlrpc_value *
- moderate_array(xmlrpc_env *   const envP,
-                xmlrpc_value * const paramArrayP,
--               void *         const user_data ATTR_UNUSED) {
-+               void *         const user_data) {
-     xmlrpc_value * retval;
-     xmlrpc_value * arrayP;
-@@ -295,7 +295,7 @@ moderate_array(xmlrpc_env *   const envP,
- static xmlrpc_value *
- nested_struct(xmlrpc_env *   const envP,
-               xmlrpc_value * const paramArrayP,
--              void *         const user_data ATTR_UNUSED) {
-+              void *         const user_data) {
-     xmlrpc_value * yearsP;
-     xmlrpc_value * retval;
-@@ -333,7 +333,7 @@ nested_struct(xmlrpc_env *   const envP,
- static xmlrpc_value *
- struct_return(xmlrpc_env *   const envP,
-               xmlrpc_value * const paramArrayP,
--              void *         const user_data ATTR_UNUSED) {
-+              void *         const user_data) {
-     xmlrpc_int32 i;
-diff --git a/libs/xmlrpc-c/examples/xmlrpc_socket_server.c b/libs/xmlrpc-c/examples/xmlrpc_socket_server.c
-index 2e2cd8b..9cbc5aa 100644
---- a/libs/xmlrpc-c/examples/xmlrpc_socket_server.c
-+++ b/libs/xmlrpc-c/examples/xmlrpc_socket_server.c
-@@ -1,5 +1,5 @@
--/* A simple standalone XML-RPC server written in C as an example of use of
--   the Xmlrpc-c libraries.
-+/* A simple standalone XML-RPC server program written in C as an example of
-+   use of the Xmlrpc-c libraries.
-    This example expects an already bound socket on Standard Input, ready to
-    be listened on for client connections.  Also see xmlrpc_sample_add_server,
-@@ -7,7 +7,11 @@
-    creates the socket itself.  Also see xmlrpc_inetd_server.c, which is
-    the same thing except you give it a socket which is already connected
-    to a client.
-- */
-+
-+   Example:
-+
-+   $ socketexec -local_port=8080 ./xmlrpc_socket_server
-+*/
- #include <stdlib.h>
- #include <stdio.h>
-@@ -33,7 +37,8 @@
- static xmlrpc_value *
- sample_add(xmlrpc_env *   const envP,
-            xmlrpc_value * const paramArrayP,
--           void *         const user_data ATTR_UNUSED) {
-+           void *         const serverInfo,
-+           void *         const channelInfo) {
-     xmlrpc_int32 x, y, z;
-@@ -61,6 +66,11 @@ int
- main(int           const argc, 
-      const char ** const argv) {
-+    struct xmlrpc_method_info3 const methodInfo = {
-+        .methodName     = "sample.add",
-+        .methodFunction = &sample_add,
-+        .serverInfo = NULL
-+    };
-     xmlrpc_server_abyss_parms serverparm;
-     xmlrpc_registry * registryP;
-     xmlrpc_env env;
-@@ -77,8 +87,7 @@ main(int           const argc,
-     registryP = xmlrpc_registry_new(&env);
--    xmlrpc_registry_add_method(
--        &env, registryP, NULL, "sample.add", &sample_add, NULL);
-+    xmlrpc_registry_add_method3(&env, registryP, &methodInfo);
-     /* In the modern form of the Abyss API, we supply parameters in memory
-        like a normal API.  We select the modern form by setting
-diff --git a/libs/xmlrpc-c/include/Makefile b/libs/xmlrpc-c/include/Makefile
-index d396ca7..28fd00b 100644
---- a/libs/xmlrpc-c/include/Makefile
-+++ b/libs/xmlrpc-c/include/Makefile
-@@ -36,18 +36,22 @@ xmlrpc-c/config.h: $(BLDDIR)/$(SUBDIR)/xmlrpc-c
-       @echo '  #define XMLRPC_SOCKET SOCKET'                            >>$@
-       @echo '  #define XMLRPC_HAVE_TIMEVAL 0'                           >>$@
-       @echo '  #define XMLRPC_HAVE_TIMESPEC 0'                          >>$@
-+      @echo '  #define XMLRPC_HAVE_PTHREAD 0'                           >>$@
-       @echo '#else'                                                     >>$@
-       @echo '  #define XMLRPC_SOCKET int'                               >>$@
-       @echo '  #define XMLRPC_HAVE_TIMEVAL 1'                           >>$@
-       @echo '  #define XMLRPC_HAVE_TIMESPEC 1'                          >>$@
-+      @echo '  #define XMLRPC_HAVE_PTHREAD 1'                           >>$@
-       @echo '#endif'                                                    >>$@
-       @echo ''                                                          >>$@
-       @echo '#if defined(_MSC_VER)'                                     >>$@
-       @echo '  /* Newer MSVC has long long, but MSVC 6 does not */'     >>$@
-       @echo '  #define XMLRPC_INT64 __int64'                            >>$@
-+      @echo '  #define XMLRPC_PRId64 "I64"'                             >>$@
-       @echo '  #define XMLRPC_INT32 __int32'                            >>$@
-       @echo '#else'                                                     >>$@
-       @echo '  #define XMLRPC_INT64 long long'                          >>$@
-+      @echo '  #define XMLRPC_PRId64 "lld"'                             >>$@
-       @echo '  #define XMLRPC_INT32 int'                                >>$@
-       @echo '#endif'                                                    >>$@
-       @echo '#endif'                                                    >>$@
-@@ -58,7 +62,7 @@ $(BLDDIR)/$(SUBDIR)/xmlrpc-c:
- COMPAT_LINK_CMDS = \
-   $(LN_S) xmlrpc-c/oldxmlrpc.h         xmlrpc.h; \
-   $(LN_S) xmlrpc-c/server.h            xmlrpc_server.h; \
--  $(LN_S) xmlrpc-c/server_abyss.h      xmlrpc_server_abyss.h; \
-+  $(LN_S) xmlrpc-c/server_abyss.h      xmlrpc_abyss.h; \
-   $(LN_S) xmlrpc-c/server_w32httpsys.h xmlrpc_server_w32httpsys.h; \
- HEADERS_TO_INSTALL = \
-@@ -67,6 +71,7 @@ HEADERS_TO_INSTALL = \
-   xmlrpc-c/c_util.h \
-   xmlrpc-c/util.h \
-   xmlrpc-c/base.h \
-+  xmlrpc-c/json.h \
-   xmlrpc-c/abyss.h \
-   xmlrpc-c/abyss_unixsock.h \
-   xmlrpc-c/abyss_winsock.h \
-@@ -119,22 +124,25 @@ default: all
- all:
- .PHONY: install-compat-hdr
--install-compat-hdr:
-+install-compat-hdr: install-headers
- # Install old names of header files for backward compatibility
-       cd $(DESTDIR)$(HEADERINST_DIR); \
-         rm -f xmlrpc.h xmlrpc_client.h xmlrpc_server.h xmlrpc_cgi.h \
--                xmlrpc_server_abyss.h xmlrpc_server_w32httpsys.h \
-+                xmlrpc_server_abyss.h xmlrpc_abyss.h \
-+              xmlrpc_server_w32httpsys.h \
-               XmlRpcCpp.h; \
-         $(COMPAT_LINK_CMDS)
- .PHONY: install
- install: install-common install-compat-hdr
--.PHONY: clean distclean dep
-+.PHONY: clean
- clean:
--distclean:
-       rm -f xmlrpc-c/config.h
-+.PHONY: distclean
-+distclean: clean
-+
- .PHONY: check
- check:
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/abyss.h b/libs/xmlrpc-c/include/xmlrpc-c/abyss.h
-index e044008..627e872 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/abyss.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/abyss.h
-@@ -21,6 +21,7 @@ extern "C" {
- #include <sys/types.h>
-+#include <xmlrpc-c/c_util.h>
- #include <xmlrpc-c/inttypes.h>
- /****************************************************************************
-@@ -33,9 +34,11 @@ typedef int abyss_bool;
-   GLOBAL (STATIC) PROGRAM STUFF
- ****************************************************************************/
-+XMLRPC_DLLEXPORT
- void
- AbyssInit(const char ** const errorP);
-+XMLRPC_DLLEXPORT
- void
- AbyssTerm(void);
-@@ -45,23 +48,29 @@ AbyssTerm(void);
- typedef struct MIMEType MIMEType;
-+XMLRPC_DLLEXPORT
- MIMEType *
- MIMETypeCreate(void);
-+XMLRPC_DLLEXPORT
- void
- MIMETypeDestroy(MIMEType * const MIMETypeP);
-+XMLRPC_DLLEXPORT
- void
- MIMETypeInit(void);
-+XMLRPC_DLLEXPORT
- void
- MIMETypeTerm(void);
-+XMLRPC_DLLEXPORT
- abyss_bool
- MIMETypeAdd2(MIMEType *   const MIMETypeP,
-              const char * const type,
-              const char * const ext);
-+XMLRPC_DLLEXPORT
- abyss_bool
- MIMETypeAdd(const char * const type,
-             const char * const ext);
-@@ -81,9 +90,11 @@ typedef struct _TSocket TSocket;
-   #include <xmlrpc-c/abyss_unixsock.h>
- #endif
-+XMLRPC_DLLEXPORT
- void
- ChanSwitchInit(const char ** const errorP);
-+XMLRPC_DLLEXPORT
- void
- ChanSwitchTerm(void);
-@@ -92,18 +103,23 @@ ChanSwitchTerm(void);
-    in abyss_unixsock.h, etc.
- */
-+XMLRPC_DLLEXPORT
- void
- ChanSwitchDestroy(TChanSwitch * const chanSwitchP);
-+XMLRPC_DLLEXPORT
- void
- ChannelInit(const char ** const errorP);
-+XMLRPC_DLLEXPORT
- void
- ChannelTerm(void);
-+XMLRPC_DLLEXPORT
- void
- ChannelDestroy(TChannel * const channelP);
-+XMLRPC_DLLEXPORT
- void
- SocketDestroy(TSocket * const socketP);
-@@ -120,6 +136,7 @@ typedef struct {
- typedef struct _TSession TSession;
-+XMLRPC_DLLEXPORT
- abyss_bool
- ServerCreate(TServer *       const serverP,
-              const char *    const name,
-@@ -127,11 +144,13 @@ ServerCreate(TServer *       const serverP,
-              const char *    const filespath,
-              const char *    const logfilename);
-+XMLRPC_DLLEXPORT
- void
- ServerCreateSwitch(TServer *     const serverP,
-                    TChanSwitch * const chanSwitchP,
-                    const char ** const errorP);
-+XMLRPC_DLLEXPORT
- abyss_bool
- ServerCreateSocket(TServer *    const serverP,
-                    const char * const name,
-@@ -140,71 +159,87 @@ ServerCreateSocket(TServer *    const serverP,
-                    const char * const logfilename);
- #define HAVE_SERVER_CREATE_SOCKET_2
-+XMLRPC_DLLEXPORT
- void
- ServerCreateSocket2(TServer *     const serverP,
-                     TSocket *     const socketP,
-                     const char ** const errorP);
-+XMLRPC_DLLEXPORT
- abyss_bool
- ServerCreateNoAccept(TServer *    const serverP,
-                      const char * const name,
-                      const char * const filespath,
-                      const char * const logfilename);
-+XMLRPC_DLLEXPORT
- void
- ServerFree(TServer * const serverP);
-+XMLRPC_DLLEXPORT
- void
- ServerSetName(TServer *    const serverP,
-               const char * const name);
-+XMLRPC_DLLEXPORT
- void
- ServerSetFilesPath(TServer *    const serverP,
-                    const char * const filesPath);
-+XMLRPC_DLLEXPORT
- void
- ServerSetLogFileName(TServer *    const serverP,
-                      const char * const logFileName);
- #define HAVE_SERVER_SET_KEEPALIVE_TIMEOUT 1
-+XMLRPC_DLLEXPORT
- void
- ServerSetKeepaliveTimeout(TServer *       const serverP,
-                           xmlrpc_uint32_t const keepaliveTimeout);
- #define HAVE_SERVER_SET_KEEPALIVE_MAX_CONN 1
-+XMLRPC_DLLEXPORT
- void
- ServerSetKeepaliveMaxConn(TServer *       const serverP,
-                           xmlrpc_uint32_t const keepaliveMaxConn);
- #define HAVE_SERVER_SET_TIMEOUT 1
-+XMLRPC_DLLEXPORT
- void
- ServerSetTimeout(TServer *       const serverP,
-                  xmlrpc_uint32_t const timeout);
- #define HAVE_SERVER_SET_ADVERTISE 1
-+XMLRPC_DLLEXPORT
- void
- ServerSetAdvertise(TServer *  const serverP,
-                    abyss_bool const advertise);
- #define HAVE_SERVER_SET_MIME_TYPE 1
-+XMLRPC_DLLEXPORT
- void
- ServerSetMimeType(TServer *  const serverP,
-                   MIMEType * const MIMETypeP);
-+XMLRPC_DLLEXPORT
- int
- ServerInit(TServer * const serverP);
-+XMLRPC_DLLEXPORT
- void
- ServerRun(TServer * const serverP);
-+XMLRPC_DLLEXPORT
- void
- ServerRunOnce(TServer * const serverP);
- /* ServerRunOnce2() is obsolete.  See user's guide. */
-+XMLRPC_DLLEXPORT
- void
- ServerRunOnce2(TServer *           const serverP,
-                enum abyss_foreback const foregroundBackground);
-+XMLRPC_DLLEXPORT
- void
- ServerRunChannel(TServer *     const serverP,
-                  TChannel *    const channelP,
-@@ -212,24 +247,30 @@ ServerRunChannel(TServer *     const serverP,
-                  const char ** const errorP);
- #define HAVE_SERVER_RUN_CONN_2
-+XMLRPC_DLLEXPORT
- void
- ServerRunConn2(TServer *     const serverP,
-                TSocket *     const connectedSocketP,
-                const char ** const errorP);
-+XMLRPC_DLLEXPORT
- void
- ServerRunConn(TServer * const serverP,
-               TOsSocket const connectedSocket);
-+XMLRPC_DLLEXPORT
- void
- ServerDaemonize(TServer * const serverP);
-+XMLRPC_DLLEXPORT
- void
- ServerTerminate(TServer * const serverP);
-+XMLRPC_DLLEXPORT
- void
- ServerResetTerminate(TServer * const serverP);
-+XMLRPC_DLLEXPORT
- void
- ServerUseSigchld(TServer * const serverP);
-@@ -242,15 +283,31 @@ typedef abyss_bool (*URIHandler) (TSession *); /* deprecated */
- struct URIHandler2;
--typedef void (*initHandlerFn)(struct URIHandler2 *,
--                              abyss_bool *);
-+typedef void (*initHandlerFn)(struct URIHandler2 *, abyss_bool *);
- typedef void (*termHandlerFn)(void *);
-+typedef void (*handleReq3Fn)(void *,
-+                             TSession *,
-+                             abyss_bool *);
-+
- typedef void (*handleReq2Fn)(struct URIHandler2 *,
-                              TSession *,
-                              abyss_bool *);
-+struct ServerReqHandler3 {
-+    termHandlerFn term;
-+    handleReq3Fn  handleReq;
-+    void *        userdata;
-+    size_t        handleReqStackSize; /* zero = default */
-+};
-+
-+XMLRPC_DLLEXPORT
-+void
-+ServerAddHandler3(TServer *                        const serverP,
-+                  const struct ServerReqHandler3 * const handlerP,
-+                  abyss_bool *                     const successP);
-+
- typedef struct URIHandler2 {
-     initHandlerFn init;
-     termHandlerFn term;
-@@ -259,11 +316,13 @@ typedef struct URIHandler2 {
-     void *        userdata;
- } URIHandler2;
-+XMLRPC_DLLEXPORT
- void
- ServerAddHandler2(TServer *     const srvP,
-                   URIHandler2 * const handlerP,
-                   abyss_bool *  const successP);
-+XMLRPC_DLLEXPORT
- abyss_bool
- ServerAddHandler(TServer * const srvP,
-                  URIHandler const handler);
-@@ -274,6 +333,7 @@ typedef abyss_bool (*THandlerDflt) (TSession *);
-    for the same type
- */
-+XMLRPC_DLLEXPORT
- void
- ServerDefaultHandler(TServer *    const srvP,
-                      THandlerDflt const handler);
-@@ -283,10 +343,12 @@ ServerDefaultHandler(TServer *    const srvP,
-    inappropriate for an API.
- */
-+XMLRPC_DLLEXPORT
- abyss_bool
- ConfReadServerFile(const char * const filename,
-                    TServer *    const srvP);
-+XMLRPC_DLLEXPORT
- void
- LogWrite(TServer *    const srvP,
-          const char * const c);
-@@ -309,7 +371,7 @@ typedef struct {
-     const char * query;
-         /* The query part of the URI (stuff after '?').  NULL if none. */
-     const char * host;
--        /* NOT the value of the host: header.  Rather, the name of the
-+        /* NOT the value of the host: header field.  Rather, the name of the
-            target host (could be part of the host: value; could be from the
-            URI).  No port number.  NULL if request does not specify a host
-            name.
-@@ -319,7 +381,7 @@ typedef struct {
-     const char * referer;
-     const char * requestline;
-     const char * user;
--        /* Requesting user (from authorization: header).  NULL if
-+        /* Requesting user (from authorization: header field).  NULL if
-            request doesn't specify or handler has not authenticated it.
-         */
-     xmlrpc_uint16_t port;
-@@ -329,98 +391,157 @@ typedef struct {
-     abyss_bool keepalive;
- } TRequestInfo;
-+XMLRPC_DLLEXPORT
- abyss_bool
- SessionRefillBuffer(TSession * const sessionP);
-+XMLRPC_DLLEXPORT
- size_t
- SessionReadDataAvail(TSession * const sessionP);
-+XMLRPC_DLLEXPORT
- void
- SessionGetReadData(TSession *    const sessionP, 
-                    size_t        const max, 
-                    const char ** const outStartP, 
-                    size_t *      const outLenP);
-+XMLRPC_DLLEXPORT
- void
- SessionGetRequestInfo(TSession *            const sessionP,
-                       const TRequestInfo ** const requestInfoPP);
-+XMLRPC_DLLEXPORT
- void
- SessionGetChannelInfo(TSession * const sessionP,
-                       void **    const channelInfoPP);
-+XMLRPC_DLLEXPORT
- void *
- SessionGetDefaultHandlerCtx(TSession * const sessionP);
-+XMLRPC_DLLEXPORT
- char *
- RequestHeaderValue(TSession *   const sessionP,
-                    const char * const name);
-+XMLRPC_DLLEXPORT
- abyss_bool
- ResponseAddField(TSession *   const sessionP,
-                  const char * const name,
-                  const char * const value);
--void
-+XMLRPC_DLLEXPORT
-+abyss_bool
- ResponseWriteStart(TSession * const sessionP);
- /* For backward compatibility: */
- #define ResponseWrite ResponseWriteStart
-+XMLRPC_DLLEXPORT
- abyss_bool
- ResponseWriteBody(TSession *      const sessionP,
-                   const char *    const data,
-                   xmlrpc_uint32_t const len);
-+XMLRPC_DLLEXPORT
- abyss_bool
- ResponseWriteEnd(TSession * const sessionP);
-+XMLRPC_DLLEXPORT
- abyss_bool
- ResponseChunked(TSession * const sessionP);
-+XMLRPC_DLLEXPORT
- xmlrpc_uint16_t
- ResponseStatusFromErrno(int const errnoArg);
-+XMLRPC_DLLEXPORT
- void
- ResponseStatus(TSession *      const sessionP,
-                xmlrpc_uint16_t const code);
-+XMLRPC_DLLEXPORT
- void
- ResponseStatusErrno(TSession * const sessionP);
-+XMLRPC_DLLEXPORT
- abyss_bool
- ResponseContentType(TSession *   const serverP,
-                     const char * const type);
-+XMLRPC_DLLEXPORT
- abyss_bool
- ResponseContentLength(TSession *      const sessionP,
-                       xmlrpc_uint64_t const len);
-+typedef struct {
-+/*----------------------------------------------------------------------------
-+   These are parameters to control the HTTP "Access Control functions.  That's
-+   where the client asks whether it is OK to send a request that some other
-+   server asked the client to send (e.g. a person web browses a page at
-+   a.example.com, and it sends a script that executes on the user's computer
-+   and tries to perform an XML-RPC RPC on b.example.com.  The user's browser
-+   first asks b.example.com if it is OK to do an RPC that is really initiated
-+   by a.example.com.
-+-----------------------------------------------------------------------------*/
-+    const char * allowOrigin;
-+        /* This tells what original servers (a.example.com in the example
-+           above) are allowed to submit RPCs indirectly to us.  The value is a
-+           verbatim value for an HTTP Access-Control-Allow-Origin header field
-+           (just the value part of the field, not the whole field).  "*"
-+           therefore means everyone is allowed.  "" means no one.
-+    
-+           NULL means not to say anything about access control to the client.
-+        */
-+    abyss_bool expires;
-+        /* The permissions herein expire after a certain period from now.
-+           'maxAge' is that period.
-+        */
-+    unsigned int maxAge;
-+        /* Meaningful only when 'expires' is true.  The expiration period
-+           in seconds.  Zero is valid.
-+        */
-+} ResponseAccessCtl;
-+
-+XMLRPC_DLLEXPORT
-+void
-+ResponseAccessControl(TSession *        const abyssSessionP, 
-+                      ResponseAccessCtl const accessControl);
-+
-+XMLRPC_DLLEXPORT
- void
- ResponseError2(TSession *   const sessionP,
-                const char * const explanation);
-+XMLRPC_DLLEXPORT
- void
- ResponseError(TSession * const sessionP);
-+XMLRPC_DLLEXPORT
- const char *
- MIMETypeFromExt(const char * const ext);
-+XMLRPC_DLLEXPORT
- const char *
- MIMETypeFromExt2(MIMEType *   const MIMETypeP,
-                  const char * const ext);
-+XMLRPC_DLLEXPORT
- const char *
- MIMETypeFromFileName2(MIMEType *   const MIMETypeP,
-                       const char * const fileName);
-+XMLRPC_DLLEXPORT
- const char *
- MIMETypeFromFileName(const char * const fileName);
-+XMLRPC_DLLEXPORT
- const char *
- MIMETypeGuessFromFile2(MIMEType *   const MIMETypeP,
-                        const char * const fileName);
-+XMLRPC_DLLEXPORT
- const char *
- MIMETypeGuessFromFile(const char * const filename);
-@@ -460,7 +581,7 @@ MIMETypeGuessFromFile(const char * const filename);
- ** Maximum number of simultaneous connections
- *********************************************************************/
--#define MAX_CONN 100000
-+#define MAX_CONN    16
- /*********************************************************************
- ** General purpose definitions
-@@ -482,26 +603,21 @@ MIMETypeGuessFromFile(const char * const filename);
- ** Range
- *********************************************************************/
-+XMLRPC_DLLEXPORT
- abyss_bool
- RangeDecode(char *            const str,
-             xmlrpc_uint64_t   const filesize,
-             xmlrpc_uint64_t * const start,
-             xmlrpc_uint64_t * const end);
-+XMLRPC_DLLEXPORT
- abyss_bool DateInit(void);
- /*********************************************************************
--** Base64
--*********************************************************************/
--
--void
--Base64Encode(const char * const chars,
--             char *       const base64);
--
--/*********************************************************************
- ** Session
- *********************************************************************/
-+XMLRPC_DLLEXPORT
- abyss_bool SessionLog(TSession * const s);
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/abyss_winsock.h b/libs/xmlrpc-c/include/xmlrpc-c/abyss_winsock.h
-index f376446..8aeb782 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/abyss_winsock.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/abyss_winsock.h
-@@ -7,17 +7,19 @@ struct abyss_win_chaninfo {
-     struct sockaddr peerAddr;
- };
--
-+XMLRPC_DLLEXPORT
- void
- ChanSwitchWinCreate(unsigned short const portNumber,
-                     TChanSwitch ** const chanSwitchPP,
-                     const char **  const errorP);
-+XMLRPC_DLLEXPORT
- void
- ChanSwitchWinCreateWinsock(SOCKET         const winsock,
-                            TChanSwitch ** const chanSwitchPP,
-                            const char **  const errorP);
-+XMLRPC_DLLEXPORT
- void
- ChannelWinCreateWinsock(SOCKET                       const fd,
-                         TChannel **                  const channelPP,
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/base.h b/libs/xmlrpc-c/include/xmlrpc-c/base.h
-index a68a4f1..cdc9161 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/base.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/base.h
-@@ -6,26 +6,40 @@
- #include <stddef.h>
- #include <stdarg.h>
- #include <time.h>
-+#include <xmlrpc-c/c_util.h>
- #include <xmlrpc-c/util.h>
- #include <xmlrpc-c/config.h>
--  /* Defines XMLRPC_HAVE_WCHAR, XMLRPC_INT64 */
-+  /* Defines XMLRPC_HAVE_WCHAR, XMLRPC_INT64, XMLRPC_HAVE_TIMEVAL */
- #if XMLRPC_HAVE_WCHAR
- #include <wchar.h>
- #endif
-+#if XMLRPC_HAVE_TIMEVAL
-+#include <sys/time.h>
-+#endif
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
--
- /*=========================================================================
- **  Version of libxmlrpc
- **=======================================================================*/
-+
-+/* These are for backward compatibility -- they can't be exported from a
-+   Windows DLL.  xmlrpc_server_version() is preferred.
-+*/
- extern unsigned int const xmlrpc_version_major;
- extern unsigned int const xmlrpc_version_minor;
- extern unsigned int const xmlrpc_version_point;
-+XMLRPC_DLLEXPORT
-+void
-+xmlrpc_version(unsigned int * const majorP,
-+               unsigned int * const minorP,
-+               unsigned int * const pointP);
-+
- /*=========================================================================
- **  C types equivalent to XML-RPC types
- **=======================================================================*/
-@@ -50,6 +64,19 @@ typedef double xmlrpc_double;
-        so it's probably clearer just to use that.  This typedef is here 
-        for mathematical completeness.
-     */
-+typedef struct {
-+    /* A datetime of the type defined by XML-RPC <dateTime.iso8601> with
-+       a few extensions.  I.e. in the range 1-9999 AD with microsecond
-+       resolution.
-+    */
-+        unsigned int Y;   /* 1-? */
-+        unsigned int M;   /* 1-12 */
-+        unsigned int D;   /* 1-31 */
-+        unsigned int h;   /* 0-23 */
-+        unsigned int m;   /* 0-59 */
-+        unsigned int s;   /* 0-59 */
-+        unsigned int u;   /* 0-999999 */
-+} xmlrpc_datetime;
- /* xmlrpc_socket is just for backward compatibility, in case someone decided
-    to use this in user code.  New code should use the native type for a
-@@ -89,12 +116,13 @@ typedef enum {
- #define XMLRPC_HAVE_I8 1
--/* These are *always* allocated on the heap. No exceptions. */
- typedef struct _xmlrpc_value xmlrpc_value;
-+XMLRPC_DLLEXPORT
- const char *
- xmlrpc_type_name(xmlrpc_type const type);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_abort_if_array_bad(xmlrpc_value * const arrayP);
-@@ -102,109 +130,193 @@ xmlrpc_abort_if_array_bad(xmlrpc_value * const arrayP);
-     xmlrpc_abort_if_array_bad(val)
- /* Increment the reference count of an xmlrpc_value. */
--extern void xmlrpc_INCREF (xmlrpc_value* const value);
-+XMLRPC_DLLEXPORT
-+extern void xmlrpc_INCREF(xmlrpc_value* const value);
- /* Decrement the reference count of an xmlrpc_value. If there
- ** are no more references, free it. */
--extern void xmlrpc_DECREF (xmlrpc_value* const value);
-+XMLRPC_DLLEXPORT
-+extern void xmlrpc_DECREF(xmlrpc_value* const value);
- /* Get the type of an XML-RPC value. */
-+XMLRPC_DLLEXPORT
- extern xmlrpc_type xmlrpc_value_type (xmlrpc_value* const value);
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_int_new(xmlrpc_env * const envP,
-                int          const intValue);
-+XMLRPC_DLLEXPORT
-+void 
-+xmlrpc_read_int(xmlrpc_env *         const envP,
-+                const xmlrpc_value * const valueP,
-+                int *                const intValueP);
-+
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_i8_new(xmlrpc_env * const envP, 
-               xmlrpc_int64 const value);
-+XMLRPC_DLLEXPORT
- void 
--xmlrpc_read_int(xmlrpc_env *         const envP,
--                const xmlrpc_value * const valueP,
--                int *                const intValueP);
-+xmlrpc_read_i8(xmlrpc_env *         const envP,
-+               const xmlrpc_value * const valueP,
-+               xmlrpc_int64 *       const intValueP);
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_bool_new(xmlrpc_env * const envP,
-                 xmlrpc_bool  const boolValue);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_bool(xmlrpc_env *         const envP,
-                  const xmlrpc_value * const valueP,
-                  xmlrpc_bool *        const boolValueP);
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_double_new(xmlrpc_env * const envP,
-                   double       const doubleValue);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_double(xmlrpc_env *         const envP,
-                    const xmlrpc_value * const valueP,
-                    xmlrpc_double *      const doubleValueP);
-+XMLRPC_DLLEXPORT
-+xmlrpc_value *
-+xmlrpc_datetime_new(xmlrpc_env *    const envP, 
-+                    xmlrpc_datetime const dt);
-+
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_datetime_new_str(xmlrpc_env * const envP,
-                         const char * const value);
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_datetime_new_sec(xmlrpc_env * const envP, 
-                         time_t       const value);
-+XMLRPC_DLLEXPORT
-+xmlrpc_value*
-+xmlrpc_datetime_new_usec(xmlrpc_env * const envP,
-+                         time_t       const secs,
-+                         unsigned int const usecs);
-+
-+#if XMLRPC_HAVE_TIMEVAL
-+XMLRPC_DLLEXPORT
-+xmlrpc_value *
-+xmlrpc_datetime_new_timeval(xmlrpc_env *   const envP, 
-+                            struct timeval const value);
-+#endif
-+
-+#if XMLRPC_HAVE_TIMESPEC
-+XMLRPC_DLLEXPORT
-+xmlrpc_value *
-+xmlrpc_datetime_new_timespec(xmlrpc_env *    const envP, 
-+                             struct timespec const value);
-+#endif
-+
-+void
-+XMLRPC_DLLEXPORT
-+xmlrpc_read_datetime(xmlrpc_env *         const envP,
-+                     const xmlrpc_value * const valueP,
-+                     xmlrpc_datetime *    const dtP);
-+
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_datetime_str(xmlrpc_env *         const envP,
-                          const xmlrpc_value * const valueP,
-                          const char **        const stringValueP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_datetime_sec(xmlrpc_env *         const envP,
-                          const xmlrpc_value * const valueP,
-                          time_t *             const timeValueP);
-+XMLRPC_DLLEXPORT
-+void
-+xmlrpc_read_datetime_usec(xmlrpc_env *         const envP,
-+                          const xmlrpc_value * const valueP,
-+                          time_t *             const secsP,
-+                          unsigned int *       const usecsP);
-+
-+#if XMLRPC_HAVE_TIMEVAL
-+XMLRPC_DLLEXPORT
-+void
-+xmlrpc_read_datetime_timeval(xmlrpc_env *         const envP,
-+                             const xmlrpc_value * const valueP,
-+                             struct timeval *     const timeValueP);
-+#endif
-+
-+#if XMLRPC_HAVE_TIMESPEC
-+XMLRPC_DLLEXPORT
-+void
-+xmlrpc_read_datetime_timespec(xmlrpc_env *         const envP,
-+                              const xmlrpc_value * const valueP,
-+                              struct timespec *    const timeValueP);
-+#endif
-+
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_string_new(xmlrpc_env * const envP,
-                   const char * const stringValue);
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_string_new_lp(xmlrpc_env * const envP, 
-                      size_t       const length,
-                      const char * const stringValue);
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_string_new_va(xmlrpc_env * const envP,
-                      const char * const format,
-                      va_list            args);
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_string_new_f(xmlrpc_env * const envP,
-                     const char * const format,
-                     ...);
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_string_new_lp_cr(xmlrpc_env * const envP, 
-                         size_t       const length,
-                         const char * const value);
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_string_new_cr(xmlrpc_env * const envP,
-                      const char * const value);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_string(xmlrpc_env *         const envP,
-                    const xmlrpc_value * const valueP,
-                    const char **        const stringValueP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_string_crlf(xmlrpc_env *         const envP,
-                         const xmlrpc_value * const valueP,
-                         const char **        const stringValueP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_string_lp_crlf(xmlrpc_env *         const envP,
-                            const xmlrpc_value * const valueP,
-                            size_t *             const lengthP,
-                            const char **        const stringValueP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_string_lp(xmlrpc_env *         const envP,
-                       const xmlrpc_value * const valueP,
-@@ -212,80 +324,93 @@ xmlrpc_read_string_lp(xmlrpc_env *         const envP,
-                       const char **        const stringValueP);
- #if XMLRPC_HAVE_WCHAR
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_string_w_new(xmlrpc_env *    const envP,
-                     const wchar_t * const stringValue);
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_string_w_new_lp(xmlrpc_env *    const envP, 
-                        size_t          const length,
-                        const wchar_t * const stringValue);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_string_w(xmlrpc_env *     const envP,
-                      xmlrpc_value *   const valueP,
-                      const wchar_t ** const stringValueP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_string_w_crlf(xmlrpc_env *     const envP,
-                           xmlrpc_value *   const valueP,
-                           const wchar_t ** const stringValueP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_string_w_lp(xmlrpc_env *     const envP,
-                         xmlrpc_value *   const valueP,
-                         size_t *         const lengthP,
-                         const wchar_t ** const stringValueP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_string_w_lp_crlf(xmlrpc_env *     const envP,
-                              xmlrpc_value *   const valueP,
-                              size_t *         const lengthP,
-                              const wchar_t ** const stringValueP);
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_string_w_new_lp_cr(xmlrpc_env *    const envP, 
-                           size_t          const length,
-                           const wchar_t * const value);
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_string_w_new_cr(xmlrpc_env *    const envP,
-                        const wchar_t * const value);
- #endif /* XMLRPC_HAVE_WCHAR */
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_base64_new(xmlrpc_env *          const envP, 
-                   size_t                const length,
-                   const unsigned char * const value);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_base64(xmlrpc_env *           const envP,
-                    const xmlrpc_value *   const valueP,
-                    size_t *               const lengthP,
-                    const unsigned char ** const bytestringValueP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_base64_size(xmlrpc_env *           const envP,
-                         const xmlrpc_value *   const valueP,
-                         size_t *               const lengthP);
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_array_new(xmlrpc_env * const envP);
- /* Return the number of elements in an XML-RPC array.
- ** Sets XMLRPC_TYPE_ERROR if 'array' is not an array. */
-+XMLRPC_DLLEXPORT
- int 
- xmlrpc_array_size(xmlrpc_env *         const env, 
-                   const xmlrpc_value * const array);
--/* Append an item to an XML-RPC array.
--** Sets XMLRPC_TYPE_ERROR if 'array' is not an array. */
--extern void
--xmlrpc_array_append_item (xmlrpc_env   * const envP,
--                          xmlrpc_value * const arrayP,
--                          xmlrpc_value * const valueP);
-+XMLRPC_DLLEXPORT
-+void
-+xmlrpc_array_append_item(xmlrpc_env   * const envP,
-+                         xmlrpc_value * const arrayP,
-+                         xmlrpc_value * const valueP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_array_read_item(xmlrpc_env *         const envP,
-                        const xmlrpc_value * const arrayP,
-@@ -299,30 +424,35 @@ xmlrpc_array_read_item(xmlrpc_env *         const envP,
-    Sets XMLRPC_TYPE_ERROR if 'array' is not an array.
-    Sets XMLRPC_INDEX_ERROR if 'index' is out of bounds.
- */
-+XMLRPC_DLLEXPORT
- xmlrpc_value * 
- xmlrpc_array_get_item(xmlrpc_env *         const envP,
-                       const xmlrpc_value * const arrayP,
-                       int                  const index);
- /* Not implemented--we don't need it yet.
--extern 
--int xmlrpc_array_set_item (xmlrpc_env* env,
--xmlrpc_value* array,
--int index,
--                                  xmlrpc_value* value);
-+XMLRPC_DLLEXPORT
-+int
-+xmlrpc_array_set_item(xmlrpc_env *   const envP,
-+                      xmlrpc_value * const arrayP,
-+                      unsigned int   const index,
-+                      xmlrpc_value * const valueP);
- */
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_struct_new(xmlrpc_env * const env);
- /* Return the number of key/value pairs in a struct.
- ** Sets XMLRPC_TYPE_ERROR if 'strct' is not a struct. */
-+XMLRPC_DLLEXPORT
- int
--xmlrpc_struct_size (xmlrpc_env   * env, 
--                    xmlrpc_value * strct);
-+xmlrpc_struct_size (xmlrpc_env   * const env, 
-+                    xmlrpc_value * const strct);
- /* Returns true iff 'strct' contains 'key'.
- ** Sets XMLRPC_TYPE_ERROR if 'strct' is not a struct. */
-+XMLRPC_DLLEXPORT
- int 
- xmlrpc_struct_has_key(xmlrpc_env *   const envP,
-                       xmlrpc_value * const strctP,
-@@ -332,6 +462,7 @@ xmlrpc_struct_has_key(xmlrpc_env *   const envP,
-    Deprecated.  xmlrpc_struct_get_value_v() is more general, and this
-    case is not common enough to warrant a shortcut.
- */
-+XMLRPC_DLLEXPORT
- int 
- xmlrpc_struct_has_key_n(xmlrpc_env   * const envP,
-                         xmlrpc_value * const strctP,
-@@ -340,6 +471,7 @@ xmlrpc_struct_has_key_n(xmlrpc_env   * const envP,
- #if 0
- /* Not implemented yet, but needed for completeness. */
-+XMLRPC_DLLEXPORT
- int
- xmlrpc_struct_has_key_v(xmlrpc_env *   env, 
-                         xmlrpc_value * strct,
-@@ -347,6 +479,7 @@ xmlrpc_struct_has_key_v(xmlrpc_env *   env,
- #endif
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_struct_find_value(xmlrpc_env *    const envP,
-                          xmlrpc_value *  const structP,
-@@ -354,18 +487,21 @@ xmlrpc_struct_find_value(xmlrpc_env *    const envP,
-                          xmlrpc_value ** const valuePP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_struct_find_value_v(xmlrpc_env *    const envP,
-                            xmlrpc_value *  const structP,
-                            xmlrpc_value *  const keyP,
-                            xmlrpc_value ** const valuePP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_struct_read_value(xmlrpc_env *    const envP,
-                          xmlrpc_value *  const structP,
-                          const char *    const key,
-                          xmlrpc_value ** const valuePP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_struct_read_value_v(xmlrpc_env *    const envP,
-                            xmlrpc_value *  const structP,
-@@ -375,6 +511,7 @@ xmlrpc_struct_read_value_v(xmlrpc_env *    const envP,
- /* The "get_value" functions are deprecated.  Use the "find_value"
-    and "read_value" functions instead.
- */
-+XMLRPC_DLLEXPORT
- xmlrpc_value * 
- xmlrpc_struct_get_value(xmlrpc_env *   const envP,
-                         xmlrpc_value * const strctP,
-@@ -384,6 +521,7 @@ xmlrpc_struct_get_value(xmlrpc_env *   const envP,
-    Deprecated.  xmlrpc_struct_get_value_v() is more general, and this
-    case is not common enough to warrant a shortcut.
- */
-+XMLRPC_DLLEXPORT
- xmlrpc_value * 
- xmlrpc_struct_get_value_n(xmlrpc_env *   const envP,
-                           xmlrpc_value * const strctP,
-@@ -393,6 +531,7 @@ xmlrpc_struct_get_value_n(xmlrpc_env *   const envP,
- /* Set the value associated with 'key' in 'strct' to 'value'.
-    Sets XMLRPC_TYPE_ERROR if 'strct' is not a struct. 
- */
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_struct_set_value(xmlrpc_env *   const env,
-                         xmlrpc_value * const strct,
-@@ -403,6 +542,7 @@ xmlrpc_struct_set_value(xmlrpc_env *   const env,
-    The general way to set a structure value is xmlrpc_struct_set_value_v(),
-    and this case is not common enough to deserve a shortcut.
- */
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_struct_set_value_n(xmlrpc_env *    const env,
-                           xmlrpc_value *  const strct,
-@@ -412,6 +552,7 @@ xmlrpc_struct_set_value_n(xmlrpc_env *    const env,
- /* The same as above, but the key must be an XML-RPC string.
- ** Fails with XMLRPC_TYPE_ERROR if 'keyval' is not a string. */
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_struct_set_value_v(xmlrpc_env *   const env,
-                           xmlrpc_value * const strct,
-@@ -423,6 +564,7 @@ xmlrpc_struct_set_value_v(xmlrpc_env *   const env,
- ** Fails with XMLRPC_TYPE_ERROR if 'struct' is not a struct.
- ** Fails with XMLRPC_INDEX_ERROR if 'index' is out of bounds. */
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_struct_read_member(xmlrpc_env *    const envP,
-                           xmlrpc_value *  const structP,
-@@ -436,6 +578,7 @@ xmlrpc_struct_read_member(xmlrpc_env *    const envP,
-    Deprecated.  Use xmlrpc_struct_read_member() instead.
- */
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_struct_get_key_and_value(xmlrpc_env *    const env,
-                                 xmlrpc_value *  const strct,
-@@ -443,38 +586,55 @@ xmlrpc_struct_get_key_and_value(xmlrpc_env *    const env,
-                                 xmlrpc_value ** const out_keyval,
-                                 xmlrpc_value ** const out_value);
-+/* The "C pointer" type has no relation to XML-RPC.  It is here for the
-+   convenience of programs that use xmlrpc_value for XML-RPC purposes
-+   and can benefit from using it for non-XML-RPC purposes as well.
-+
-+   Also, some people use libxmlrpc for xmlrpc_value alone, because sometimes
-+   you need to work with basic data types in richer ways than the C types
-+   (int, time_t, etc) allow.
-+*/
-+
-+XMLRPC_DLLEXPORT
-+xmlrpc_value *
-+xmlrpc_cptr_new(xmlrpc_env * const envP,
-+                void *       const value);
-+
-+typedef void (*xmlrpc_cptr_dtor_fn)(void *, void *);
-+
-+XMLRPC_DLLEXPORT
-+xmlrpc_value *
-+xmlrpc_cptr_new_dtor(xmlrpc_env *        const envP,
-+                     void *              const value,
-+                     xmlrpc_cptr_dtor_fn const dtor,
-+                     void *              const dtorContext);
-+
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_cptr(xmlrpc_env *         const envP,
-                  const xmlrpc_value * const valueP,
-                  void **              const ptrValueP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_nil(xmlrpc_env *   const envP,
-                 xmlrpc_value * const valueP);
-                 
--
--void 
--xmlrpc_read_i8(xmlrpc_env *         const envP,
--               const xmlrpc_value * const valueP,
--               xmlrpc_int64 *       const intValueP);
--
--
--xmlrpc_value *
--xmlrpc_cptr_new(xmlrpc_env * const envP,
--                void *       const value);
--
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_nil_new(xmlrpc_env * const envP);
- /* Build an xmlrpc_value from a format string. */
-+XMLRPC_DLLEXPORT
- xmlrpc_value * 
- xmlrpc_build_value(xmlrpc_env * const env,
-                    const char * const format, 
-                    ...);
- /* The same as the above, but using a va_list and more general */
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_build_value_va(xmlrpc_env *    const env,
-                       const char *    const format,
-@@ -482,12 +642,14 @@ xmlrpc_build_value_va(xmlrpc_env *    const env,
-                       xmlrpc_value ** const valPP,
-                       const char **   const tailP);
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_decompose_value(xmlrpc_env *   const envP,
-                        xmlrpc_value * const value,
-                        const char *   const format, 
-                        ...);
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_decompose_value_va(xmlrpc_env *   const envP,
-                           xmlrpc_value * const value,
-@@ -501,6 +663,7 @@ xmlrpc_decompose_value_va(xmlrpc_env *   const envP,
-    These are deprecated.  Use xmlrpc_decompose_value... instead.
- */
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_parse_value(xmlrpc_env *   const envP,
-                    xmlrpc_value * const value,
-@@ -508,6 +671,7 @@ xmlrpc_parse_value(xmlrpc_env *   const envP,
-                    ...);
- /* The same as the above, but using a va_list. */
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_parse_value_va(xmlrpc_env *   const envP,
-                       xmlrpc_value * const value,
-@@ -523,28 +687,33 @@ typedef enum xmlrpc_dialect {
-     xmlrpc_dialect_apache
- } xmlrpc_dialect;
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_serialize_value2(xmlrpc_env *       const envP,
-                         xmlrpc_mem_block * const outputP,
-                         xmlrpc_value *     const valueP,
-                         xmlrpc_dialect     const dialect);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_serialize_value(xmlrpc_env *       const envP,
-                        xmlrpc_mem_block * const outputP,
-                        xmlrpc_value *     const valueP);
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_serialize_params2(xmlrpc_env *       const envP,
-                          xmlrpc_mem_block * const outputP,
-                          xmlrpc_value *     const paramArrayP,
-                          xmlrpc_dialect     const dialect);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_serialize_params(xmlrpc_env *       const envP,
-                         xmlrpc_mem_block * const outputP,
-                         xmlrpc_value *     const paramArrayP);
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_serialize_call2(xmlrpc_env *       const envP,
-                        xmlrpc_mem_block * const outputP,
-@@ -552,23 +721,27 @@ xmlrpc_serialize_call2(xmlrpc_env *       const envP,
-                        xmlrpc_value *     const paramArrayP,
-                        xmlrpc_dialect     const dialect);
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_serialize_call(xmlrpc_env *       const envP,
-                       xmlrpc_mem_block * const outputP,
-                       const char *       const methodName,
-                       xmlrpc_value *     const paramArrayP);
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_serialize_response2(xmlrpc_env *       const envP,
-                            xmlrpc_mem_block * const outputP,
-                            xmlrpc_value *     const valueP,
-                            xmlrpc_dialect     const dialect);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_serialize_response(xmlrpc_env *       const envP,
-                           xmlrpc_mem_block * const outputP,
-                           xmlrpc_value *     const valueP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_serialize_fault(xmlrpc_env *       const envP,
-                        xmlrpc_mem_block * const outputP,
-@@ -579,17 +752,22 @@ xmlrpc_serialize_fault(xmlrpc_env *       const envP,
- **  Decoding XML
- **=======================================================================*/
--/* Parse an XML-RPC call. If an error occurs, set a fault and set
--** the output variables to NULL.
--** The caller is responsible for calling free(*out_method_name) and
--** xmlrpc_DECREF(*out_param_array). */
-+XMLRPC_DLLEXPORT
-+void
-+xmlrpc_parse_value_xml(xmlrpc_env *    const envP,
-+                       const char *    const xmlData,
-+                       size_t          const xmlDataLen,
-+                       xmlrpc_value ** const valuePP);
-+
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_parse_call(xmlrpc_env *    const envP,
--                  const char *    const xml_data,
--                  size_t          const xml_len,
--                  const char **   const out_method_name,
--                  xmlrpc_value ** const out_param_array);
-+                  const char *    const xmlData,
-+                  size_t          const xmlDataLen,
-+                  const char **   const methodNameP,
-+                  xmlrpc_value ** const paramArrayP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_parse_response2(xmlrpc_env *    const envP,
-                        const char *    const xmlData,
-@@ -601,6 +779,7 @@ xmlrpc_parse_response2(xmlrpc_env *    const envP,
- /* xmlrpc_parse_response() is for backward compatibility */
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_parse_response(xmlrpc_env * const envP, 
-                       const char * const xmlData, 
-@@ -616,23 +795,26 @@ xmlrpc_parse_response(xmlrpc_env * const envP,
- /* This routine inserts newlines every 76 characters, as required by the
- ** Base64 specification. */
-+XMLRPC_DLLEXPORT
- xmlrpc_mem_block *
--xmlrpc_base64_encode(xmlrpc_env *    env,
--                     unsigned char * bin_data,
--                     size_t          bin_len);
-+xmlrpc_base64_encode(xmlrpc_env *          const envP,
-+                     const unsigned char * const binData,
-+                     size_t                const binLen);
- /* This routine encodes everything in one line. This is needed for HTTP
- ** authentication and similar tasks. */
-+XMLRPC_DLLEXPORT
- xmlrpc_mem_block *
--xmlrpc_base64_encode_without_newlines(xmlrpc_env *    env,
--                                      unsigned char * bin_data,
--                                      size_t          bin_len);
-+xmlrpc_base64_encode_without_newlines(xmlrpc_env *          const envP,
-+                                      const unsigned char * const binData,
-+                                      size_t                const binLen);
- /* This decodes Base64 data with or without newlines. */
-+XMLRPC_DLLEXPORT
- extern xmlrpc_mem_block *
- xmlrpc_base64_decode(xmlrpc_env * const envP,
--                     const char * const ascii_data,
--                     size_t       const ascii_len);
-+                     const char * const asciiData,
-+                     size_t       const asciiLen);
- /*=========================================================================
-@@ -645,10 +827,12 @@ xmlrpc_base64_decode(xmlrpc_env * const envP,
- **  a cookie replacement of basic authentication.)
- **/
-+XMLRPC_DLLEXPORT
- extern void xmlrpc_authcookie_set(xmlrpc_env * const env,
-                                   const char * const username,
-                                   const char * const password);
-+XMLRPC_DLLEXPORT
- char *xmlrpc_authcookie(void);
- /*=========================================================================
-@@ -677,9 +861,11 @@ char *xmlrpc_authcookie(void);
- #define XMLRPC_XML_SIZE_LIMIT_DEFAULT (512*1024)
- /* Set a specific limit to the specified value. */
-+XMLRPC_DLLEXPORT
- extern void xmlrpc_limit_set (int const limit_id, size_t const value);
- /* Get the value of a specified limit. */
-+XMLRPC_DLLEXPORT
- extern size_t xmlrpc_limit_get (int const limit_id);
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/base.hpp b/libs/xmlrpc-c/include/xmlrpc-c/base.hpp
-index ab6fe3e..6f93e38 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/base.hpp
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/base.hpp
-@@ -1,19 +1,24 @@
- #ifndef XMLRPC_BASE_HPP_INCLUDED
- #define XMLRPC_BASE_HPP_INCLUDED
-+#include <xmlrpc-c/config.h>
-+
- #include <climits>
- #include <cfloat>
- #include <ctime>
- #include <vector>
- #include <map>
- #include <string>
-+#if XMLRPC_HAVE_TIMEVAL
-+#include <sys/time.h>
-+#endif
-+#include <xmlrpc-c/c_util.h>
- #include <xmlrpc-c/base.h>
- namespace xmlrpc_c {
--
--class value {
-+class XMLRPC_DLLEXPORT value {
-     // This is a handle.  You don't want to create a pointer to this;
-     // it is in fact a pointer itself.
- public:
-@@ -26,6 +31,8 @@ public:
-     ~value();
-     enum type_t {
-+        // These are designed to be identical to the values for
-+        // enum xmlrpc_type in the C library.
-         TYPE_INT        = 0,
-         TYPE_BOOLEAN    = 1,
-         TYPE_DOUBLE     = 2,
-@@ -62,6 +69,8 @@ public:
-     xmlrpc_value *
-     cValue() const;
-+        // Not to be confused with public 'cvalue' method that all the derived
-+        // classes have.
-     value(xmlrpc_value * const valueP);
-@@ -72,33 +81,42 @@ public:
-     xmlrpc_value * cValueP;
-         // NULL means this is merely a placeholder object.
-+
-+protected:
-+    void
-+    validateInstantiated() const;
- };
-+std::ostream& operator<<(std::ostream& out,
-+                         xmlrpc_c::value::type_t const& type);
-+
--class value_int : public value {
-+class XMLRPC_DLLEXPORT value_int : public value {
- public:
-     value_int(int const cvalue);
-     value_int(xmlrpc_c::value const baseValue);
-     operator int() const;
--};
-+    int cvalue() const;
-+};
--class value_boolean : public value {
-+class XMLRPC_DLLEXPORT value_boolean : public value {
- public:
-     value_boolean(bool const cvalue);
-     value_boolean(xmlrpc_c::value const baseValue);
-     operator bool() const;
--};
-+    bool cvalue() const;
-+};
--class value_string : public value {
-+class XMLRPC_DLLEXPORT value_string : public value {
- public:
-     enum nlCode {nlCode_all, nlCode_lf};
-@@ -113,103 +131,274 @@ public:
-     crlfValue() const;
-     operator std::string() const;
--};
-+    std::string cvalue() const;
-+};
--class value_double : public value {
-+class XMLRPC_DLLEXPORT value_double : public value {
- public:
-     value_double(double const cvalue);
-     value_double(xmlrpc_c::value const baseValue);
-     operator double() const;
--};
-+    double cvalue() const;
-+};
--class value_datetime : public value {
-+class XMLRPC_DLLEXPORT value_datetime : public value {
- public:
-     value_datetime(std::string const cvalue);
-     value_datetime(time_t const cvalue);
- #if XMLRPC_HAVE_TIMEVAL
-     value_datetime(struct timeval const& cvalue);
-+    operator timeval() const;
- #endif
- #if XMLRPC_HAVE_TIMESPEC
-     value_datetime(struct timespec const& cvalue);
-+    operator timespec() const;
- #endif
-     value_datetime(xmlrpc_c::value const baseValue);
-     operator time_t() const;
-+
-+    time_t cvalue() const;
- };
-+typedef std::vector<unsigned char> cbytestring;
--class value_bytestring : public value {
-+class XMLRPC_DLLEXPORT value_bytestring : public value {
- public:
--    value_bytestring(std::vector<unsigned char> const& cvalue);
-+    value_bytestring(cbytestring const& cvalue);
-     value_bytestring(xmlrpc_c::value const baseValue);
-     // You can't cast to a vector because the compiler can't tell which
-     // constructor to use (complains about ambiguity).  So we have this:
--    std::vector<unsigned char>
-+    cbytestring
-     vectorUcharValue() const;
-+    cbytestring cvalue() const;
-+
-     size_t
-     length() const;
- };
--class value_struct : public value {
-+typedef std::map<std::string, xmlrpc_c::value> cstruct;
-+
-+class XMLRPC_DLLEXPORT value_struct : public value {
- public:
--    value_struct(std::map<std::string, xmlrpc_c::value> const& cvalue);
-+    value_struct(cstruct const& cvalue);
-     value_struct(xmlrpc_c::value const baseValue);
--    operator std::map<std::string, xmlrpc_c::value>() const;
-+    operator cstruct() const;
-+
-+    cstruct cvalue() const;
- };
--class value_array : public value {
-+typedef std::vector<xmlrpc_c::value> carray;
-+
-+class XMLRPC_DLLEXPORT value_array : public value {
- public:
--    value_array(std::vector<xmlrpc_c::value> const& cvalue);
-+    value_array(carray const& cvalue);
-     value_array(xmlrpc_c::value const baseValue);
--    std::vector<xmlrpc_c::value>
-+    // You can't cast to a vector because the compiler can't tell which
-+    // constructor to use (complains about ambiguity).  So we have this:
-+    carray
-     vectorValueValue() const;
-+    carray cvalue() const;
-+
-     size_t
-     size() const;
- };
--class value_nil : public value {
-+template<class InputIterator> xmlrpc_c::value_array
-+arrayValueSlice(InputIterator begin,
-+                InputIterator end) {
-+/*----------------------------------------------------------------------------
-+  convert C++ iterator pair to XML-RPC array
-+-----------------------------------------------------------------------------*/
-+    carray ret;
-+    for (InputIterator p = begin; p != end; ++p) {
-+        ret.push_back(toValue(*p));
-+    }
-+    return xmlrpc_c::value_array(ret);
-+}
-+
-+template<class MemberClass> inline xmlrpc_c::value_array
-+arrayValueArray(const MemberClass * const in,
-+                size_t              const size) {
-+/*----------------------------------------------------------------------------
-+  convert C++ array to XML-RPC array
-+-----------------------------------------------------------------------------*/
-+    return arrayValueSlice(in, in + size);
-+}
-+
-+class XMLRPC_DLLEXPORT value_nil : public value {
- public:
-     value_nil();
-     value_nil(xmlrpc_c::value const baseValue);
--};
-+    void * cvalue() const;
-+};
--class value_i8 : public value {
-+class XMLRPC_DLLEXPORT value_i8 : public value {
- public:
-     value_i8(xmlrpc_int64 const cvalue);
-     value_i8(xmlrpc_c::value const baseValue);
-     operator xmlrpc_int64() const;
-+
-+    xmlrpc_int64 cvalue() const;
- };
-+inline xmlrpc_c::value_string
-+toValue(const char * const x) {
-+    return xmlrpc_c::value_string(x);
-+}
-+
-+inline xmlrpc_c::value_string
-+toValue(std::string const& x) {
-+    return xmlrpc_c::value_string(x);
-+}
-+
-+inline xmlrpc_c::value_int
-+toValue(int const x) {
-+    return xmlrpc_c::value_int(x);
-+}
-+
-+inline xmlrpc_c::value_boolean
-+toValue(bool const x) {
-+    return xmlrpc_c::value_boolean(x);
-+}
-+
-+inline xmlrpc_c::value_double
-+toValue(double const x) {
-+    return xmlrpc_c::value_double(x);
-+}
-+
-+inline xmlrpc_c::value_bytestring
-+    toValue(cbytestring const& x) {
-+    return xmlrpc_c::value_bytestring(x);
-+}
-+
-+inline const xmlrpc_c::value &
-+toValue(xmlrpc_c::value const& v) {
-+/*----------------------------------------------------------------------------
-+  This does a null conversion; you use it to catch all the XML-RPC types that
-+  have no usable C++ equivalent, so you can do a toValue() of any XML-RPC
-+  type at all.  In particular: 'value_datetime', 'value_nil'.
-+-----------------------------------------------------------------------------*/
-+    return v;
-+}
--class fault {
-+template<class K, class V> xmlrpc_c::value_struct
-+toValue(std::map<K, V> const& in) {
-+/*----------------------------------------------------------------------------
-+  convert C++ map to XML-RPC structure
-+-----------------------------------------------------------------------------*/
-+    cstruct ret;
-+    for (typename std::map<std::string, V>::const_iterator p = in.begin();
-+         p != in.end();
-+         ++p) {
-+        ret[p->first] = toValue(p->second);
-+    }
-+    return xmlrpc_c::value_struct(ret);
-+}
-+
-+template<class T> inline xmlrpc_c::value_array
-+toValue(std::vector<T> const& in) {
-+/*----------------------------------------------------------------------------
-+  convert C++ vector to XML-RPC array
-+-----------------------------------------------------------------------------*/
-+    return arrayValueSlice(in.begin(), in.end());
-+}
-+
-+// fromValue() returns via reference argument instead of by return value
-+// so the compiler can tell which version of it to invoke based on the
-+// desired output type.
-+
-+inline void
-+fromValue(std::string & y, xmlrpc_c::value const& x) {
-+    y = xmlrpc_c::value_string(x);
-+}
-+
-+inline void
-+fromValue(int & y, xmlrpc_c::value const& x) {
-+    y = xmlrpc_c::value_int(x);
-+}
-+
-+inline void
-+fromValue(bool & y, xmlrpc_c::value const& x) {
-+    y = xmlrpc_c::value_boolean(x);
-+}
-+
-+inline void
-+fromValue(double & y, xmlrpc_c::value const& x) {
-+    y = xmlrpc_c::value_double(x);
-+}
-+
-+inline void
-+fromValue(cbytestring & y, xmlrpc_c::value const& x) {
-+    y = xmlrpc_c::value_bytestring(x).vectorUcharValue();
-+}
-+
-+inline void
-+fromValue(xmlrpc_c::value & y, xmlrpc_c::value const& x) {
-+/*----------------------------------------------------------------------------
-+  This does a null conversion; it's so you can use fromValue() with
-+  an XML-RPC value or C++ value without having to know which it is.
-+  One reason you would have an XML-RPC value lying around with C++ values
-+  is that some XML-RPC values don't have a common C++ equivalent.
-+-----------------------------------------------------------------------------*/
-+    y = x;
-+}
-+
-+template<class K, class V> inline void
-+fromValue(std::map<K, V> & y, xmlrpc_c::value const& x) {
-+/*----------------------------------------------------------------------------
-+   Convert XML-RPC structure to C++ map.
-+-----------------------------------------------------------------------------*/
-+    cstruct m = xmlrpc_c::value_struct(x);
-+    y.clear();
-+    for (std::map<std::string, xmlrpc_c::value>::const_iterator p = m.begin();
-+         p != m.end();
-+         ++p) {
-+        fromValue(y[p->first], p->second);
-+    }
-+}
-+
-+template<class T> inline void
-+fromValue(std::vector<T> & y, xmlrpc_c::value const& x) {
-+/*----------------------------------------------------------------------------
-+   Convert XML-RPC array to C++ vector.
-+-----------------------------------------------------------------------------*/
-+    carray v = xmlrpc_c::value_array(x).vectorValueValue();
-+    y.resize(v.size());
-+    for (unsigned int i = 0; i < v.size(); ++i) {
-+        fromValue(y[i], v[i]);
-+    }
-+}
-+
-+class XMLRPC_DLLEXPORT fault {
- /*----------------------------------------------------------------------------
-    This is an XML-RPC fault.
-@@ -253,7 +442,7 @@ private:
-     std::string             description;
- };
--class rpcOutcome {
-+class XMLRPC_DLLEXPORT rpcOutcome {
- /*----------------------------------------------------------------------------
-   The outcome of a validly executed RPC -- either an XML-RPC fault
-   or an XML-RPC value of the result.
-@@ -275,7 +464,7 @@ private:
-     xmlrpc_c::fault fault;   // valid if not 'succeeded'
- };
--class paramList {
-+class XMLRPC_DLLEXPORT paramList {
- /*----------------------------------------------------------------------------
-    A parameter list of an XML-RPC call.
- -----------------------------------------------------------------------------*/
-@@ -288,6 +477,11 @@ public:
-     paramList&
-     addx(xmlrpc_c::value const param);
-+    template<class T > paramList& addc(const T & x) {
-+        xmlrpc_c::paramList::add(toValue(x));
-+        return *this;
-+    }
-+
-     unsigned int
-     size() const;
-@@ -316,15 +510,15 @@ public:
-     std::string
-     getString(unsigned int const paramNumber) const;
--    std::vector<unsigned char>
-+    cbytestring
-     getBytestring(unsigned int const paramNumber) const;
--    std::vector<xmlrpc_c::value>
-+    carray
-     getArray(unsigned int const paramNumber,
-              unsigned int const minSize = 0,
-              unsigned int const maxSize = UINT_MAX) const;
--    std::map<std::string, xmlrpc_c::value>
-+    cstruct
-     getStruct(unsigned int const paramNumber) const;
-     void
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/base64.hpp b/libs/xmlrpc-c/include/xmlrpc-c/base64.hpp
-index a884225..4ef06aa 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/base64.hpp
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/base64.hpp
-@@ -4,18 +4,21 @@
- #include <string>
- #include <vector>
-+#include <xmlrpc-c/c_util.h>
-+
- namespace xmlrpc_c {
- enum newlineCtl {NEWLINE_NO, NEWLINE_YES};
-+XMLRPC_DLLEXPORT
- std::string
- base64FromBytes(
-     std::vector<unsigned char> const& bytes,
-     xmlrpc_c::newlineCtl       const  newlineCtl = xmlrpc_c::NEWLINE_YES);
--
-+XMLRPC_DLLEXPORT
- std::vector<unsigned char>
- bytesFromBase64(std::string const& base64);
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/base64_int.h b/libs/xmlrpc-c/include/xmlrpc-c/base64_int.h
-new file mode 100644
-index 0000000..1d1414d
---- /dev/null
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/base64_int.h
-@@ -0,0 +1,11 @@
-+#ifndef BASE64_INT_H_INCLUDED
-+#define BASE64_INT_H_INCLUDED
-+
-+#include "xmlrpc-c/c_util.h"
-+
-+XMLRPC_DLLEXPORT
-+void
-+xmlrpc_base64Encode(const char * const chars,
-+                    char *       const base64);
-+
-+#endif
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/base_int.h b/libs/xmlrpc-c/include/xmlrpc-c/base_int.h
-index be45cfd..cff8773 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/base_int.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/base_int.h
-@@ -18,14 +18,14 @@
- #include "bool.h"
- #include "int.h"
--#include <xmlrpc-c/base.h>
-+#include <xmlrpc-c/c_util.h>
- #include <xmlrpc-c/util_int.h>
-+#include <xmlrpc-c/base.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
--
- struct _xmlrpc_value {
-     xmlrpc_type _type;
-     int _refcount;
-@@ -36,8 +36,13 @@ struct _xmlrpc_value {
-         xmlrpc_int64 i8;
-         xmlrpc_bool b;
-         double d;
--        /* time_t t */
--        void * c_ptr;
-+        xmlrpc_datetime dt;
-+           /* NOTE: may be invalid! e.g. February 30 */
-+        struct {
-+            void *              objectP;
-+            xmlrpc_cptr_dtor_fn dtor;   // NULL if none
-+            void *              dtorContext;
-+        } cptr;
-     } _value;
-     
-     /* Other data types use a memory block.
-@@ -77,6 +82,15 @@ struct _xmlrpc_value {
-            This member is always NULL on a system that does not have
-            Unicode wchar functions.
-         */
-+    void * _cache;
-+        /* This is a hack to support the old style memory management in which
-+           one gets a pointer into memory that belongs to the xmlrpc_value
-+           object; i.e. the caller of xmlrpc_read_datetime_str_old() doesn't
-+           get memory that he is responsible for freeing.
-+
-+           This is essentially a cached value of the result of a
-+           xmlrpc_read_datetime_str_old().  NULL means nothing cached.
-+        */
- };
- #define XMLRPC_ASSERT_VALUE_OK(val) \
-@@ -97,24 +111,34 @@ typedef struct {
- } _struct_member;
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_createXmlrpcValue(xmlrpc_env *    const envP,
-                          xmlrpc_value ** const valPP);
-+XMLRPC_DLLEXPORT
- const char *
- xmlrpc_typeName(xmlrpc_type const type);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_traceXml(const char * const label, 
-                 const char * const xml,
--                unsigned int const xmlLength);
-+                size_t       const xmlLength);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_destroyString(xmlrpc_value * const stringP);
-+XMLRPC_DLLEXPORT
-+void
-+xmlrpc_destroyDatetime(xmlrpc_value * const datetimeP);
-+
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_destroyStruct(xmlrpc_value * const structP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_destroyArrayContents(xmlrpc_value * const arrayP);
-@@ -130,16 +154,19 @@ xmlrpc_destroyArrayContents(xmlrpc_value * const arrayP);
-    new memory for them.
- -----------------------------------------------------------------------------*/
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_datetime_str_old(xmlrpc_env *         const envP,
-                              const xmlrpc_value * const valueP,
-                              const char **        const stringValueP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_string_old(xmlrpc_env *         const envP,
-                        const xmlrpc_value * const valueP,
-                        const char **        const stringValueP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_string_lp_old(xmlrpc_env *         const envP,
-                           const xmlrpc_value * const valueP,
-@@ -147,11 +174,13 @@ xmlrpc_read_string_lp_old(xmlrpc_env *         const envP,
-                           const char **        const stringValueP);
- #if XMLRPC_HAVE_WCHAR
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_string_w_old(xmlrpc_env *     const envP,
-                          xmlrpc_value *   const valueP,
-                          const wchar_t ** const stringValueP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_string_w_lp_old(xmlrpc_env *     const envP,
-                             xmlrpc_value *   const valueP,
-@@ -159,6 +188,7 @@ xmlrpc_read_string_w_lp_old(xmlrpc_env *     const envP,
-                             const wchar_t ** const stringValueP);
- #endif
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_read_base64_old(xmlrpc_env *           const envP,
-                        const xmlrpc_value *   const valueP,
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/c_util.h b/libs/xmlrpc-c/include/xmlrpc-c/c_util.h
-index 8cc72e9..b8635e6 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/c_util.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/c_util.h
-@@ -1,14 +1,31 @@
- #ifndef XMLRPC_C_C_UTIL_H_INCLUDED
- #define XMLRPC_C_C_UTIL_H_INCLUDED
--/* GNU_PRINTF_ATTR lets the GNU compiler check printf-type
-+/* C language stuff.  Doesn't involve any libraries that aren't part of
-+   the compiler.
-+*/
-+
-+#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
-+
-+/* XMLRPC_PRINTF_ATTR lets the GNU compiler check printf-type
-    calls to be sure the arguments match the format string, thus preventing
-    runtime segmentation faults and incorrect messages.
- */
- #ifdef __GNUC__
--#define GNU_PRINTF_ATTR(a,b) __attribute__ ((format (printf, a, b)))
-+#define XMLRPC_PRINTF_ATTR(a,b) __attribute__ ((format (printf, a, b)))
-+#define XMLRPC_NORETURN_ATTR __attribute__((noreturn))
-+#else
-+#define XMLRPC_PRINTF_ATTR(a,b)
-+#define XMLRPC_NORETURN_ATTR
-+#endif
-+
-+/* XMLRPC_DLLEXPORT is an attribute of an external symbols that says it
-+   is to be exported from a library that contains it.
-+*/
-+#if defined(_DLL) &&  defined(_MSC_VER) && _MSC_VER >= 1500
-+#define XMLRPC_DLLEXPORT __declspec(dllexport)
- #else
--#define GNU_PRINTF_ATTR(a,b)
-+#define XMLRPC_DLLEXPORT
- #endif
- #endif
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/client.h b/libs/xmlrpc-c/include/xmlrpc-c/client.h
-index c2e2e61..f4166e3 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/client.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/client.h
-@@ -10,6 +10,8 @@
- #ifndef  XMLRPC_CLIENT_H_INCLUDED
- #define  XMLRPC_CLIENT_H_INCLUDED
-+#include <stdarg.h>
-+#include <xmlrpc-c/c_util.h>
- #include <xmlrpc-c/base.h>
- #ifdef __cplusplus
-@@ -39,8 +41,11 @@ typedef struct xmlrpc_client_transport_ops xmlrpc_client_transport_ops;
-    so now we just use void * as a base class pointer.
- */
-+XMLRPC_DLLEXPORT
- extern struct xmlrpc_client_transport_ops xmlrpc_libwww_transport_ops;
-+XMLRPC_DLLEXPORT
- extern struct xmlrpc_client_transport_ops xmlrpc_wininet_transport_ops;
-+XMLRPC_DLLEXPORT
- extern struct xmlrpc_client_transport_ops xmlrpc_curl_transport_ops;
- enum xmlrpc_sslversion {
-@@ -50,6 +55,29 @@ enum xmlrpc_sslversion {
-     XMLRPC_SSLVERSION_SSLv3
- };
-+
-+enum xmlrpc_httpauthtype {
-+    /* These are just constants.  They can be or'ed as integers to create
-+       a set.
-+    */
-+    XMLRPC_HTTPAUTH_BASIC         = (1<<0),
-+    XMLRPC_HTTPAUTH_DIGEST        = (1<<1),
-+    XMLRPC_HTTPAUTH_GSSNEGOTIATE  = (1<<2),
-+    XMLRPC_HTTPAUTH_NTLM          = (1<<3), 
-+};
-+
-+/* The following are useful combinations of the HTTP authentication types
-+   above.
-+*/
-+#define XMLRPC_HTTPAUTH_NONE 0
-+#define XMLRPC_HTTPAUTH_ANY  ~0
-+#define XMLRPC_HTTPAUTH_ANYSAFE (~XMLRPC_HTTPAUTH_BASIC)
-+
-+enum xmlrpc_httpproxytype {
-+    XMLRPC_HTTPPROXY_HTTP   = 0,
-+    XMLRPC_HTTPPROXY_SOCKS5 = 5
-+};
-+
- struct xmlrpc_curl_xportparms {
-     /* This is designed so that zero values are always the defaults. */
-     const char * network_interface;
-@@ -71,6 +99,15 @@ struct xmlrpc_curl_xportparms {
-     const char * egdsocket;
-     const char * ssl_cipher_list;
-     unsigned int timeout;
-+    xmlrpc_bool dont_advertise;
-+    const char * proxy;
-+    unsigned int proxy_port;
-+    enum xmlrpc_httpproxytype proxy_type;
-+    unsigned int proxy_auth;
-+        /* A set of authentication schemes -- an OR of
-+           enum xmlrpc_httpproxyauth values
-+        */
-+    const char * proxy_userpwd;
- };
-@@ -88,6 +125,19 @@ struct xmlrpc_wininet_xportparms {
- /* XMLRPC_WXPSIZE(xyz) is analogous to XMLRPC_CPSIZE, below */
-+struct xmlrpc_transfer_progress {
-+    double total;
-+    double now;
-+};
-+
-+struct xmlrpc_progress_data {
-+    struct xmlrpc_transfer_progress call;
-+    struct xmlrpc_transfer_progress response;
-+};
-+
-+typedef void xmlrpc_progress_fn(void * const,
-+                                struct xmlrpc_progress_data const);
-+
- struct xmlrpc_clientparms {
-     /* (transport, transportparmsP, transportparm_size) and
-        (transportOpsP, transportP) are mutually exclusive.
-@@ -100,6 +150,7 @@ struct xmlrpc_clientparms {
-     const struct xmlrpc_client_transport_ops * transportOpsP;
-     xmlrpc_client_transport *  transportP;
-     xmlrpc_dialect             dialect;
-+    xmlrpc_progress_fn *       progressFn;
- };
- #define XMLRPC_CPSIZE(mbrname) \
-@@ -112,23 +163,24 @@ struct xmlrpc_clientparms {
-    not the caller is new enough to have supplied a certain parameter.
- */
-+XMLRPC_DLLEXPORT
- const char * 
- xmlrpc_client_get_default_transport(xmlrpc_env * const env);
- /* A callback function to handle the response to an asynchronous call.
- ** If 'fault->fault_occurred' is true, then response will be NULL. All
--** arguments except 'user_data' will be deallocated internally; please do
-+** arguments except 'userHandle' will be deallocated internally; please do
- ** not free any of them yourself.
--** WARNING: param_array may (or may not) be NULL if fault->fault_occurred
-+** WARNING: 'paramArray' may (or may not) be NULL if fault->fault_occurred
- ** is true, and you set up the call using xmlrpc_client_call_asynch.
- ** WARNING: If asynchronous calls are still pending when the library is
- ** shut down, your handler may (or may not) be called with a fault. */
--typedef void (*xmlrpc_response_handler) (const char *server_url,
--                                         const char *method_name,
--                                         xmlrpc_value *param_array,
--                                         void *user_data,
--                                         xmlrpc_env *fault,
--                                         xmlrpc_value *result);
-+typedef void xmlrpc_response_handler(const char *   serverUrl,
-+                                     const char *   methodName,
-+                                     xmlrpc_value * paramArray,
-+                                     void *         userHandle,
-+                                     xmlrpc_env *   fault,
-+                                     xmlrpc_value * result);
- /*=========================================================================
-@@ -147,73 +199,98 @@ typedef void (*xmlrpc_response_handler) (const char *server_url,
- typedef struct _xmlrpc_server_info xmlrpc_server_info;
- /* Create a new server info record, pointing to the specified server. */
-+XMLRPC_DLLEXPORT
- xmlrpc_server_info *
- xmlrpc_server_info_new(xmlrpc_env * const envP,
-                        const char * const serverUrl);
- /* Create a new server info record, with a copy of the old server. */
-+XMLRPC_DLLEXPORT
- extern xmlrpc_server_info * 
- xmlrpc_server_info_copy(xmlrpc_env *         const envP,
-                         xmlrpc_server_info * const srcP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_info_free(xmlrpc_server_info * const serverP);
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_server_info_set_user(xmlrpc_env *         const envP,
-                             xmlrpc_server_info * const serverInfoP,
-                             const char *         const username,
-                             const char *         const password);
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_server_info_set_basic_auth(xmlrpc_env *         const envP,
-                                   xmlrpc_server_info * const serverP,
-                                   const char *         const username,
-                                   const char *         const password);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_info_allow_auth_basic(xmlrpc_env *         const envP,
-                                     xmlrpc_server_info * const sP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_info_disallow_auth_basic(xmlrpc_env *         const envP,
-                                        xmlrpc_server_info * const sP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_info_allow_auth_digest(xmlrpc_env *         const envP,
-                                      xmlrpc_server_info * const sP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_info_disallow_auth_digest(xmlrpc_env *         const envP,
-                                         xmlrpc_server_info * const sP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_info_allow_auth_negotiate(xmlrpc_env *         const envP,
-                                         xmlrpc_server_info * const sP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_info_disallow_auth_negotiate(xmlrpc_env *         const envP,
-                                            xmlrpc_server_info * const sP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_info_allow_auth_ntlm(xmlrpc_env *         const envP,
-                                    xmlrpc_server_info * const sP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_info_disallow_auth_ntlm(xmlrpc_env *         const envP,
-                                       xmlrpc_server_info * const sP);
-+/* These are for backward compatibility -- they can't be exported from a
-+   Windows DLL.  xmlrpc_server_version() is preferred.
-+*/
- extern unsigned int const xmlrpc_client_version_major;
- extern unsigned int const xmlrpc_client_version_minor;
- extern unsigned int const xmlrpc_client_version_point;
-+XMLRPC_DLLEXPORT
-+void
-+xmlrpc_client_version(unsigned int * const majorP,
-+                      unsigned int * const minorP,
-+                      unsigned int * const pointP);
-+
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_client_setup_global_const(xmlrpc_env * const envP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_client_teardown_global_const(void);
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_client_create(xmlrpc_env *                      const envP,
-                      int                               const flags,
-@@ -223,9 +300,11 @@ xmlrpc_client_create(xmlrpc_env *                      const envP,
-                      unsigned int                      const parmSize,
-                      xmlrpc_client **                  const clientPP);
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_client_destroy(xmlrpc_client * const clientP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_client_transport_call2(
-     xmlrpc_env *               const envP,
-@@ -234,6 +313,7 @@ xmlrpc_client_transport_call2(
-     xmlrpc_mem_block *         const callXmlP,
-     xmlrpc_mem_block **        const respXmlPP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_client_call2(xmlrpc_env *               const envP,
-                     struct xmlrpc_client *     const clientP,
-@@ -242,6 +322,7 @@ xmlrpc_client_call2(xmlrpc_env *               const envP,
-                     xmlrpc_value *             const paramArrayP,
-                     xmlrpc_value **            const resultPP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_client_call2f(xmlrpc_env *    const envP,
-                      xmlrpc_client * const clientP,
-@@ -251,32 +332,58 @@ xmlrpc_client_call2f(xmlrpc_env *    const envP,
-                      const char *    const format,
-                      ...);
-+XMLRPC_DLLEXPORT
-+void
-+xmlrpc_client_call2f_va(xmlrpc_env *               const envP,
-+                        xmlrpc_client *            const clientP,
-+                        const char *               const serverUrl,
-+                        const char *               const methodName,
-+                        const char *               const format,
-+                        xmlrpc_value **            const resultPP,
-+                        va_list                          args);
-+
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_client_event_loop_finish(xmlrpc_client * const clientP);
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_client_event_loop_finish_timeout(xmlrpc_client * const clientP,
-                                         unsigned long   const milliseconds);
-+XMLRPC_DLLEXPORT
- void
--xmlrpc_client_start_rpc(xmlrpc_env *             const envP,
--                        struct xmlrpc_client *   const clientP,
--                        xmlrpc_server_info *     const serverInfoP,
--                        const char *             const methodName,
--                        xmlrpc_value *           const argP,
--                        xmlrpc_response_handler        responseHandler,
--                        void *                   const userData);
--
-+xmlrpc_client_start_rpc(xmlrpc_env *               const envP,
-+                        struct xmlrpc_client *     const clientP,
-+                        const xmlrpc_server_info * const serverInfoP,
-+                        const char *               const methodName,
-+                        xmlrpc_value *             const paramArrayP,
-+                        xmlrpc_response_handler          responseHandler,
-+                        void *                     const userData);
-+
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_client_start_rpcf(xmlrpc_env *    const envP,
-                          xmlrpc_client * const clientP,
-                          const char *    const serverUrl,
-                          const char *    const methodName,
--                         xmlrpc_response_handler callback,
-+                         xmlrpc_response_handler responseHandler,
-                          void *          const userData,
-                          const char *    const format,
-                          ...);
-+XMLRPC_DLLEXPORT
-+void
-+xmlrpc_client_start_rpcf_va(xmlrpc_env *    const envP,
-+                            xmlrpc_client * const clientP,
-+                            const char *    const serverUrl,
-+                            const char *    const methodName,
-+                            xmlrpc_response_handler responseHandler,
-+                            void *          const userData,
-+                            const char *    const format,
-+                            va_list               args);
-+
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_client_set_interrupt(xmlrpc_client * const clientP,
-                             int *           const interruptP);
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/client.hpp b/libs/xmlrpc-c/include/xmlrpc-c/client.hpp
-index de6d073..f757b6a 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/client.hpp
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/client.hpp
-@@ -5,6 +5,7 @@
- #include <vector>
- #include <memory>
-+#include <xmlrpc-c/c_util.h>
- #include <xmlrpc-c/girerr.hpp>
- #include <xmlrpc-c/girmem.hpp>
- #include <xmlrpc-c/base.hpp>
-@@ -13,9 +14,9 @@
- namespace xmlrpc_c {
--class clientTransactionPtr;
-+class XMLRPC_DLLEXPORT clientTransactionPtr;
--class clientTransaction : public girmem::autoObject {
-+class XMLRPC_DLLEXPORT clientTransaction : public girmem::autoObject {
-     friend class clientTransactionPtr;
-@@ -26,11 +27,14 @@ public:
-     virtual void
-     finishErr(girerr::error const& error) = 0;
-+    virtual void
-+    progress(struct xmlrpc_progress_data const& progressData) const = 0;
-+
- protected:
-     clientTransaction();
- };
--class clientTransactionPtr : public girmem::autoObjectPtr {
-+class XMLRPC_DLLEXPORT clientTransactionPtr : public girmem::autoObjectPtr {
-     
- public:
-     clientTransactionPtr();
-@@ -43,9 +47,9 @@ public:
-     operator->() const;
- };
--class clientPtr;
-+class XMLRPC_DLLEXPORT clientPtr;
--class client : public girmem::autoObject {
-+class XMLRPC_DLLEXPORT client : public girmem::autoObject {
- /*----------------------------------------------------------------------------
-    A generic client -- a means of performing an RPC.  This is so generic
-    that it can be used for clients that are not XML-RPC.
-@@ -77,7 +81,7 @@ public:
-     setInterrupt(int *);
- };
--class clientPtr : public girmem::autoObjectPtr {
-+class XMLRPC_DLLEXPORT clientPtr : public girmem::autoObjectPtr {
- public:
-     clientPtr();
-@@ -90,7 +94,7 @@ public:
-     get() const;
- };
--class serverAccessor : public girmem::autoObject {
-+class XMLRPC_DLLEXPORT serverAccessor : public girmem::autoObject {
-     
- public:
-     serverAccessor(xmlrpc_c::clientPtr       const clientP,
-@@ -106,7 +110,7 @@ private:
-     xmlrpc_c::carriageParmPtr const carriageParmP;
- };
--class serverAccessorPtr : public girmem::autoObjectPtr {
-+class XMLRPC_DLLEXPORT serverAccessorPtr : public girmem::autoObjectPtr {
- public:
-     serverAccessorPtr();
-@@ -120,7 +124,7 @@ public:
-     get() const;
- };
--class connection {
-+class XMLRPC_DLLEXPORT connection {
- /*----------------------------------------------------------------------------
-    A nexus of a particular client and a particular server, along with
-    carriage parameters for performing RPCs between the two.
-@@ -140,7 +144,7 @@ public:
-     xmlrpc_c::carriageParm * carriageParmP;
- };
--class client_xml : public xmlrpc_c::client {
-+class XMLRPC_DLLEXPORT client_xml : public xmlrpc_c::client {
- /*----------------------------------------------------------------------------
-    A client that uses XML-RPC XML in the RPC.  This class does not define
-    how the XML gets transported, though (i.e. does not require HTTP).
-@@ -180,7 +184,7 @@ private:
-     struct client_xml_impl * implP;
- };
--class xmlTransaction_client : public xmlrpc_c::xmlTransaction {
-+class XMLRPC_DLLEXPORT xmlTransaction_client : public xmlrpc_c::xmlTransaction {
- public:
-     xmlTransaction_client(xmlrpc_c::clientTransactionPtr const& tranP);
-@@ -190,11 +194,15 @@ public:
-     void
-     finishErr(girerr::error const& error) const;
-+
-+    void
-+    progress(xmlrpc_progress_data const& progressData) const;
-+
- private:
-     xmlrpc_c::clientTransactionPtr const tranP;
- };
--class xmlTransaction_clientPtr : public xmlTransactionPtr {
-+class XMLRPC_DLLEXPORT xmlTransaction_clientPtr : public xmlTransactionPtr {
- public:
-     xmlTransaction_clientPtr();
-     
-@@ -206,21 +214,23 @@ public:
- class rpcPtr;
--class rpc : public clientTransaction {
-+class XMLRPC_DLLEXPORT rpc : public clientTransaction {
- /*----------------------------------------------------------------------------
-    An RPC.  An RPC consists of method name, parameters, and result.  It
-    does not specify in any way how the method name and parameters get
-    turned into a result.  It does not presume XML or HTTP.
--
--   You don't create an object of this class directly.  All references to
--   an rpc object should be by an rpcPtr object.  Create a new RPC by
--   creating a new rpcPtr.  Accordingly, our constructors and destructors
--   are protected, but available to our friend class rpcPtr.
--
-+  
-+   You don't normally create or reference an object of this class directly,
-+   but rather via an 'rpcPtr' object.  That takes care of deleting the object
-+   when you are done with it (but not before).  This is critical if you plan
-+   to use the 'start' method, because without an rpcPtr reference, the system
-+   will destroy the object under the covers when the RPC finishes, and there
-+   is no way for you to guarantee you won't still access it after it finishes
-+   (because of accesses within Xmlrpc-c calls such as the call that finishes
-+   the RPC or just rpc::start).
-+ 
-    In order to do asynchronous RPCs, you normally have to create a derived
--   class that defines a useful notifyComplete().  If you do that, you'll
--   want to make sure the derived class objects get accessed only via rpcPtrs
--   as well.
-+   class that defines a useful notifyComplete().
- -----------------------------------------------------------------------------*/
-     friend class xmlrpc_c::rpcPtr;
-@@ -248,6 +258,9 @@ public:
-     virtual void
-     notifyComplete();
-+    virtual void
-+    progress(struct xmlrpc_progress_data const& progressData) const;
-+
-     bool
-     isFinished() const;
-@@ -269,7 +282,7 @@ private:
-     struct rpc_impl * implP;
- };
--class rpcPtr : public clientTransactionPtr {
-+class XMLRPC_DLLEXPORT rpcPtr : public clientTransactionPtr {
- public:
-     rpcPtr();
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/client_global.h b/libs/xmlrpc-c/include/xmlrpc-c/client_global.h
-index 4f388fc..7d7a11b 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/client_global.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/client_global.h
-@@ -1,6 +1,9 @@
- #ifndef CLIENT_GLOBAL_H_INCLUDED
- #define CLIENT_GLOBAL_H_INCLUDED
-+#include <xmlrpc-c/c_util.h>
-+#include <xmlrpc-c/client.h>
-+
- /*=========================================================================
- **  Initialization and Shutdown
- **=========================================================================
-@@ -12,11 +15,13 @@
- #define XMLRPC_CLIENT_NO_FLAGS         (0)
- #define XMLRPC_CLIENT_SKIP_LIBWWW_INIT (1)
-+XMLRPC_DLLEXPORT
- extern void
- xmlrpc_client_init(int          const flags,
-                    const char * const appname,
-                    const char * const appversion);
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_client_init2(xmlrpc_env *                      const env,
-                     int                               const flags,
-@@ -25,6 +30,7 @@ xmlrpc_client_init2(xmlrpc_env *                      const env,
-                     const struct xmlrpc_clientparms * const clientparms,
-                     unsigned int                      const parm_size);
-+XMLRPC_DLLEXPORT
- extern void
- xmlrpc_client_cleanup(void);
-@@ -35,6 +41,7 @@ xmlrpc_client_cleanup(void);
- **  functions from inside an asynchronous callback!
- */
-+XMLRPC_DLLEXPORT
- xmlrpc_value * 
- xmlrpc_client_call(xmlrpc_env * const envP,
-                    const char * const server_url,
-@@ -42,12 +49,14 @@ xmlrpc_client_call(xmlrpc_env * const envP,
-                    const char * const format,
-                    ...);
-+XMLRPC_DLLEXPORT
- xmlrpc_value * 
- xmlrpc_client_call_params(xmlrpc_env *   const envP,
-                           const char *   const serverUrl,
-                           const char *   const methodName,
-                           xmlrpc_value * const paramArrayP);
-+XMLRPC_DLLEXPORT
- xmlrpc_value * 
- xmlrpc_client_call_server(xmlrpc_env *               const envP,
-                           const xmlrpc_server_info * const server,
-@@ -55,6 +64,7 @@ xmlrpc_client_call_server(xmlrpc_env *               const envP,
-                           const char *               const format, 
-                           ...);
-+XMLRPC_DLLEXPORT
- xmlrpc_value *
- xmlrpc_client_call_server_params(
-     xmlrpc_env *               const envP,
-@@ -62,6 +72,7 @@ xmlrpc_client_call_server_params(
-     const char *               const method_name,
-     xmlrpc_value *             const paramArrayP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_client_transport_call(
-     xmlrpc_env *               const envP,
-@@ -83,6 +94,7 @@ xmlrpc_client_transport_call(
- ** to run the event loop somehow; see below.
- ** WARNING: If an error occurs while building the argument, the
- ** response handler will be called with a NULL param_array. */
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_client_call_asynch(const char * const server_url,
-                           const char * const method_name,
-@@ -93,6 +105,7 @@ xmlrpc_client_call_asynch(const char * const server_url,
- /* As above, but use an xmlrpc_server_info object. The server object can be
- ** safely destroyed as soon as this function returns. */
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_client_call_server_asynch(xmlrpc_server_info * const server,
-                                  const char *         const method_name,
-@@ -104,6 +117,7 @@ xmlrpc_client_call_server_asynch(xmlrpc_server_info * const server,
- /* As above, but the parameter list is supplied as an xmlrpc_value
- ** containing an array.
- */
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_client_call_asynch_params(const char *   const server_url,
-                                  const char *   const method_name,
-@@ -113,6 +127,7 @@ xmlrpc_client_call_asynch_params(const char *   const server_url,
-     
- /* As above, but use an xmlrpc_server_info object. The server object can be
- ** safely destroyed as soon as this function returns. */
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_client_call_server_asynch_params(
-     xmlrpc_server_info * const server,
-@@ -130,11 +145,13 @@ xmlrpc_client_call_server_asynch_params(
- /* Finish all outstanding asynchronous calls. Alternatively, the loop
- ** will exit if someone calls xmlrpc_client_event_loop_end. */
-+XMLRPC_DLLEXPORT
- extern void
- xmlrpc_client_event_loop_finish_asynch(void);
- /* Finish all outstanding asynchronous calls. */
-+XMLRPC_DLLEXPORT
- extern void
- xmlrpc_client_event_loop_finish_asynch_timeout(unsigned long const milliseconds);
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/client_int.h b/libs/xmlrpc-c/include/xmlrpc-c/client_int.h
-index dabdcaf..79f7ade 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/client_int.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/client_int.h
-@@ -86,6 +86,35 @@ xmlrpc_client_event_loop_end (void);
- extern int
- xmlrpc_client_asynch_calls_are_unfinished (void);
-+
-+
-+/*=========================================================================
-+** Interface between global client and general client functions.
-+** (These are necessary because there are some global client functions
-+** that don't have exported private client versions because we don't like
-+** them and have them for global functions only for backward compatibility.
-+** The global client functions existed before any private client ones did).
-+**========================================================================= */
-+void
-+xmlrpc_client_call_server2_va(xmlrpc_env *               const envP,
-+                              struct xmlrpc_client *     const clientP,
-+                              const xmlrpc_server_info * const serverInfoP,
-+                              const char *               const methodName,
-+                              const char *               const format,
-+                              va_list                          args,
-+                              xmlrpc_value **            const resultPP);
-+
-+void
-+xmlrpc_client_start_rpcf_server_va(
-+    xmlrpc_env *               const envP,
-+    struct xmlrpc_client *     const clientP,
-+    const xmlrpc_server_info * const serverInfoP,
-+    const char *               const methodName,
-+    xmlrpc_response_handler responseHandler,
-+    void *                     const userData,
-+    const char *               const format,
-+    va_list                    args);
-+
- /* Copyright (C) 2001 by First Peer, Inc. All rights reserved.
- **
- ** Redistribution and use in source and binary forms, with or without
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/client_simple.hpp b/libs/xmlrpc-c/include/xmlrpc-c/client_simple.hpp
-index 52e6c2b..5252363 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/client_simple.hpp
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/client_simple.hpp
-@@ -3,13 +3,13 @@
- #include <string>
-+#include <xmlrpc-c/c_util.h>
- #include <xmlrpc-c/base.hpp>
- #include <xmlrpc-c/client.hpp>
- namespace xmlrpc_c {
--
--class clientSimple {
-+class XMLRPC_DLLEXPORT clientSimple {
- public:
-     clientSimple();
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/client_transport.hpp b/libs/xmlrpc-c/include/xmlrpc-c/client_transport.hpp
-index 8d6053d..ddeabf5 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/client_transport.hpp
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/client_transport.hpp
-@@ -3,6 +3,8 @@
- #include <string>
- #include <vector>
-+
-+#include <xmlrpc-c/c_util.h>
- #include <xmlrpc-c/util.h>
- #include <xmlrpc-c/client.h>
- #include <xmlrpc-c/girerr.hpp>
-@@ -11,9 +13,9 @@
- namespace xmlrpc_c {
--class carriageParmPtr;
-+class XMLRPC_DLLEXPORT carriageParmPtr;
--class carriageParm : public girmem::autoObject {
-+class XMLRPC_DLLEXPORT carriageParm : public girmem::autoObject {
- /*----------------------------------------------------------------------------
-    The parameter to a client for an individual RPC.  It tells specifics
-    of how to carry the call to the server and the response back.  For
-@@ -30,7 +32,7 @@ protected:
-     carriageParm();
- };
--class carriageParmPtr : public girmem::autoObjectPtr {
-+class XMLRPC_DLLEXPORT carriageParmPtr : public girmem::autoObjectPtr {
- public:
-     carriageParmPtr();
-@@ -46,9 +48,9 @@ public:
- //----------------------------------------------------------------------------
--class xmlTransactionPtr;
-+class XMLRPC_DLLEXPORT xmlTransactionPtr;
--class xmlTransaction : public girmem::autoObject {
-+class XMLRPC_DLLEXPORT xmlTransaction : public girmem::autoObject {
-     friend class xmlTransactionPtr;
-@@ -59,11 +61,14 @@ public:
-     virtual void
-     finishErr(girerr::error const& error) const;
-+    virtual void
-+    progress(struct xmlrpc_progress_data const& progressData) const;
-+
- protected:
-     xmlTransaction();
- };
--class xmlTransactionPtr : public girmem::autoObjectPtr {
-+class XMLRPC_DLLEXPORT xmlTransactionPtr : public girmem::autoObjectPtr {
- public:
-     xmlTransactionPtr();
-@@ -75,7 +80,7 @@ public:
- //----------------------------------------------------------------------------
--class clientXmlTransport : public girmem::autoObject {
-+class XMLRPC_DLLEXPORT clientXmlTransport : public girmem::autoObject {
- /*----------------------------------------------------------------------------
-    An object which transports XML to and from an XML-RPC server for an
-    XML-RPC client.
-@@ -105,11 +110,16 @@ public:
-         xmlrpc_mem_block *        const responseXmlMP,
-         xmlrpc_env                const transportEnv);
-+    static void
-+    progress(
-+        struct xmlrpc_call_info *   const callInfoP,
-+        struct xmlrpc_progress_data const progressData);
-+
-     virtual void
-     setInterrupt(int * const interruptP);
- };
--class clientXmlTransportPtr : public girmem::autoObjectPtr {
-+class XMLRPC_DLLEXPORT clientXmlTransportPtr : public girmem::autoObjectPtr {
-     
- public:
-     clientXmlTransportPtr();
-@@ -127,7 +137,7 @@ public:
-                            HTTP
- ===========================================================================*/
--class carriageParm_http0 : public xmlrpc_c::carriageParm {
-+class XMLRPC_DLLEXPORT carriageParm_http0 : public xmlrpc_c::carriageParm {
- public:
-     carriageParm_http0(std::string const serverUrl);
-@@ -179,7 +189,7 @@ protected:
-     instantiate(std::string const serverUrl);
- };
--class carriageParm_http0Ptr : public xmlrpc_c::carriageParmPtr {
-+class XMLRPC_DLLEXPORT carriageParm_http0Ptr : public xmlrpc_c::carriageParmPtr {
- public:
-     carriageParm_http0Ptr();
-@@ -189,7 +199,7 @@ public:
-     operator->() const;
- };
--class clientXmlTransport_http : public xmlrpc_c::clientXmlTransport {
-+class XMLRPC_DLLEXPORT clientXmlTransport_http : public xmlrpc_c::clientXmlTransport {
- /*----------------------------------------------------------------------------
-    A base class for client XML transports that use the simple, classic
-    C HTTP transports.
-@@ -230,13 +240,13 @@ protected:
-                            curl
- ===========================================================================*/
--class carriageParm_curl0 : public xmlrpc_c::carriageParm_http0 {
-+class XMLRPC_DLLEXPORT carriageParm_curl0 : public xmlrpc_c::carriageParm_http0 {
- public:
-     carriageParm_curl0(std::string const serverUrl);
- };
--class carriageParm_curl0Ptr : public xmlrpc_c::carriageParm_http0Ptr {
-+class XMLRPC_DLLEXPORT carriageParm_curl0Ptr : public xmlrpc_c::carriageParm_http0Ptr {
- public:
-     carriageParm_curl0Ptr();
-@@ -246,16 +256,21 @@ public:
-     operator->() const;
- };
--class clientXmlTransport_curl : public xmlrpc_c::clientXmlTransport_http {
-+class XMLRPC_DLLEXPORT clientXmlTransport_curl : public xmlrpc_c::clientXmlTransport_http {
- public:
-+    struct constrOpt_impl;
-+
-     class constrOpt {
-     public:
-         constrOpt();
-+        ~constrOpt();
-+        constrOpt(constrOpt&);
-         constrOpt & network_interface (std::string  const& arg);
-         constrOpt & no_ssl_verifypeer (bool         const& arg);
-         constrOpt & no_ssl_verifyhost (bool         const& arg);
-+        constrOpt & dont_advertise    (bool         const& arg);
-         constrOpt & user_agent        (std::string  const& arg);
-         constrOpt & ssl_cert          (std::string  const& arg);
-         constrOpt & sslcerttype       (std::string  const& arg);
-@@ -272,49 +287,15 @@ public:
-         constrOpt & egdsocket         (std::string  const& arg);
-         constrOpt & ssl_cipher_list   (std::string  const& arg);
-         constrOpt & timeout           (unsigned int const& arg);
--
--        struct {
--            std::string  network_interface;
--            bool         no_ssl_verifypeer;
--            bool         no_ssl_verifyhost;
--            std::string  user_agent;
--            std::string  ssl_cert;
--            std::string  sslcerttype;
--            std::string  sslcertpasswd;
--            std::string  sslkey;
--            std::string  sslkeytype;
--            std::string  sslkeypasswd;
--            std::string  sslengine;
--            bool         sslengine_default;
--            xmlrpc_sslversion sslversion;
--            std::string  cainfo;
--            std::string  capath;
--            std::string  randomfile;
--            std::string  egdsocket;
--            std::string  ssl_cipher_list;
--            unsigned int timeout;
--        } value;
--        struct {
--            bool network_interface;
--            bool no_ssl_verifypeer;
--            bool no_ssl_verifyhost;
--            bool user_agent;
--            bool ssl_cert;
--            bool sslcerttype;
--            bool sslcertpasswd;
--            bool sslkey;
--            bool sslkeytype;
--            bool sslkeypasswd;
--            bool sslengine;
--            bool sslengine_default;
--            bool sslversion;
--            bool cainfo;
--            bool capath;
--            bool randomfile;
--            bool egdsocket;
--            bool ssl_cipher_list;
--            bool timeout;
--        } present;
-+        constrOpt & proxy             (std::string  const& arg);
-+        constrOpt & proxy_port        (unsigned int const& arg);
-+        constrOpt & proxy_auth        (unsigned int const& arg);
-+        constrOpt & proxy_userpwd     (std::string  const& arg);
-+        constrOpt & proxy_type        (xmlrpc_httpproxytype const& arg);
-+
-+    private:
-+        struct constrOpt_impl * implP;
-+        friend class clientXmlTransport_curl;
-     };
-     clientXmlTransport_curl(constrOpt const& opt);
-@@ -335,14 +316,14 @@ private:
-                            libwww
- ===========================================================================*/
--class carriageParm_libwww0 : public xmlrpc_c::carriageParm_http0 {
-+class XMLRPC_DLLEXPORT carriageParm_libwww0 : public xmlrpc_c::carriageParm_http0 {
- public:
-     carriageParm_libwww0(std::string const serverUrl);
- };
--class carriageParm_libwww0Ptr : public xmlrpc_c::carriageParm_http0Ptr {
-+class XMLRPC_DLLEXPORT carriageParm_libwww0Ptr : public xmlrpc_c::carriageParm_http0Ptr {
- public:
-     carriageParm_libwww0Ptr();
-@@ -352,7 +333,7 @@ public:
-     operator->() const;
- };
--class clientXmlTransport_libwww : public xmlrpc_c::clientXmlTransport_http {
-+class XMLRPC_DLLEXPORT clientXmlTransport_libwww : public xmlrpc_c::clientXmlTransport_http {
-     
- public:
-     clientXmlTransport_libwww(std::string const appname = "",
-@@ -365,14 +346,14 @@ public:
-                            wininet
- ===========================================================================*/
--class carriageParm_wininet0 : public xmlrpc_c::carriageParm_http0 {
-+class XMLRPC_DLLEXPORT carriageParm_wininet0 : public xmlrpc_c::carriageParm_http0 {
- public:
-     carriageParm_wininet0(std::string const serverUrl);
- };
--class carriageParm_wininet0Ptr : public xmlrpc_c::carriageParm_http0Ptr {
-+class XMLRPC_DLLEXPORT carriageParm_wininet0Ptr : public xmlrpc_c::carriageParm_http0Ptr {
- public:
-     carriageParm_wininet0Ptr();
-@@ -382,7 +363,7 @@ public:
-     operator->() const;
- };
--class clientXmlTransport_wininet : public xmlrpc_c::clientXmlTransport_http {
-+class XMLRPC_DLLEXPORT clientXmlTransport_wininet : public xmlrpc_c::clientXmlTransport_http {
- public:
-     clientXmlTransport_wininet(bool const allowInvalidSslCerts = false);
-@@ -394,15 +375,15 @@ public:
-                            pstream
- ===========================================================================*/
--class packetSocket;
-+class XMLRPC_DLLEXPORT packetSocket;
--class carriageParm_pstream : public xmlrpc_c::carriageParm {
-+class XMLRPC_DLLEXPORT carriageParm_pstream : public xmlrpc_c::carriageParm {
-     // There are no parameters for carrying an RPC on a packet stream.
-     // There's only one way to carry it.
- };
--class carriageParm_pstreamPtr : public xmlrpc_c::carriageParmPtr {
-+class XMLRPC_DLLEXPORT carriageParm_pstreamPtr : public xmlrpc_c::carriageParmPtr {
- public:
-     carriageParm_pstreamPtr();
-@@ -413,21 +394,22 @@ public:
-     operator->() const;
- };
--class clientXmlTransport_pstream : public xmlrpc_c::clientXmlTransport {
-+class XMLRPC_DLLEXPORT clientXmlTransport_pstream : public xmlrpc_c::clientXmlTransport {
- public:
-+    struct constrOpt_impl;
-+
-     class constrOpt {
-     public:
-         constrOpt();
-+        ~constrOpt();
-+        constrOpt(constrOpt&);
-         constrOpt & fd                (int         const& arg);
--        struct {
--            int         fd;
--        } value;
--        struct {
--            bool fd;
--        } present;
-+    private:
-+        struct constrOpt_impl * implP;
-+        friend class clientXmlTransport_pstream;
-     };
-     clientXmlTransport_pstream(constrOpt const& opt);
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/config.h.in b/libs/xmlrpc-c/include/xmlrpc-c/config.h.in
-deleted file mode 100644
-index 2575010..0000000
---- a/libs/xmlrpc-c/include/xmlrpc-c/config.h.in
-+++ /dev/null
-@@ -1,37 +0,0 @@
--#ifndef XMLRPC_C_CONFIG_H_INCLUDED
--#define XMLRPC_C_CONFIG_H_INCLUDED
--
--/* This file, part of XML-RPC For C/C++, is meant to 
--   define characteristics of this particular installation 
--   that the other <xmlrpc-c/...> header files need in 
--   order to compile correctly when #included in Xmlrpc-c
--   user code.
--
--   Those header files #include this one.
--
--   This file was created by a make rule.
--*/
--#define XMLRPC_HAVE_WCHAR @HAVE_WCHAR_H_DEFINE@
--#ifdef WIN32
--  /* SOCKET is a type defined by <winsock.h>.  Anyone who
--     uses XMLRPC_SOCKET on a WIN32 system must #include
--     <winsock.h>
--  */
--  #define XMLRPC_SOCKET SOCKET
--  #define XMLRPC_HAVE_TIMEVAL 0
--  #define XMLRPC_HAVE_TIMESPEC 0
--#else
--  #define XMLRPC_SOCKET int
--  #define XMLRPC_HAVE_TIMEVAL 1
--  #define XMLRPC_HAVE_TIMESPEC 1
--#endif
--
--#if defined(_MSC_VER)
--  /* Newer MSVC has long long, but MSVC 6 does not */
--  #define XMLRPC_INT64 __int64
--  #define XMLRPC_INT32 __int32
--#else
--  #define XMLRPC_INT64 long long
--  #define XMLRPC_INT32 int
--#endif
--#endif
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/girerr.hpp b/libs/xmlrpc-c/include/xmlrpc-c/girerr.hpp
-index 1008722..62fd677 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/girerr.hpp
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/girerr.hpp
-@@ -4,11 +4,13 @@
- #include <string>
- #include <exception>
-+#include <xmlrpc-c/c_util.h>
-+
- #define HAVE_GIRERR_ERROR
- namespace girerr {
--class error : public std::exception {
-+class XMLRPC_DLLEXPORT error : public std::exception {
- public:
-     error(std::string const& what_arg) : _what(what_arg) {}
-@@ -23,8 +25,11 @@ private:
- // throwf() always throws a girerr::error .
-+XMLRPC_DLLEXPORT
- void
--throwf(const char * const format, ...);
-+throwf(const char * const format, ...)
-+  XMLRPC_PRINTF_ATTR(1,2)
-+  XMLRPC_NORETURN_ATTR;
- } // namespace
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/girmem.hpp b/libs/xmlrpc-c/include/xmlrpc-c/girmem.hpp
-index 2eed408..80ef8fc 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/girmem.hpp
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/girmem.hpp
-@@ -1,6 +1,8 @@
- #ifndef GIRMEM_HPP_INCLUDED
- #define GIRMEM_HPP_INCLUDED
-+#include <xmlrpc-c/config.h>
-+#include <xmlrpc-c/c_util.h>
- /* The following pthread crap mirrors what is in pthreadx.h, which is
-    what girmem.cpp uses to declare the lock interface.  We can't simply
-@@ -15,7 +17,7 @@
-    a pthread_mutex_t member, and on Windows, there's no such type.
- */
-    
--#ifndef WIN32
-+#if XMLRPC_HAVE_PTHREAD
- #  include <pthread.h>
-    typedef pthread_mutex_t girmem_lock;
- #else
-@@ -25,9 +27,9 @@
- namespace girmem {
--class autoObjectPtr;
-+class XMLRPC_DLLEXPORT autoObjectPtr;
--class autoObject {
-+class XMLRPC_DLLEXPORT autoObject {
-     friend class autoObjectPtr;
- public:
-@@ -43,7 +45,7 @@ private:
-     unsigned int refcount;
- };
--class autoObjectPtr {
-+class XMLRPC_DLLEXPORT autoObjectPtr {
- public:
-     autoObjectPtr();
-     autoObjectPtr(girmem::autoObject * objectP);
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/inttypes.h b/libs/xmlrpc-c/include/xmlrpc-c/inttypes.h
-index fe1feb5..1e470e5 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/inttypes.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/inttypes.h
-@@ -9,6 +9,9 @@ typedef unsigned __int64  xmlrpc_uint64_t;
- #else
- #include <inttypes.h>
-+#ifdef __INTERIX
-+#  include <stdint.h>
-+#endif
- typedef uint16_t xmlrpc_uint16_t;
- typedef uint32_t xmlrpc_uint32_t;
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/json.h b/libs/xmlrpc-c/include/xmlrpc-c/json.h
-new file mode 100644
-index 0000000..d7b8453
---- /dev/null
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/json.h
-@@ -0,0 +1,39 @@
-+#ifndef XMLRPC_JSON_H_INCLUDED
-+#define XMLRPC_JSON_H_INCLUDED
-+
-+#include <xmlrpc-c/base.h>
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif /* __cplusplus */
-+
-+/*
-+    Parse a given string as JSON and return its value as an XML-RPC value
-+    object.
-+
-+    @param envP xmlrpc environment for error handling
-+    @param buf holds a pointer to a ziro terminated string
-+    @return the value generated or NULL (check error)
-+*/
-+xmlrpc_value *
-+xmlrpc_parse_json(xmlrpc_env * const envP,
-+                  const char * const json);
-+
-+
-+/*
-+    Serialize an XML-RPC value object into JSON.
-+
-+    @param envP holds the xmlrpc execution environment
-+    @param valP holds the value to serialize
-+    @param out holds a mem block containing the result
-+*/
-+void
-+xmlrpc_serialize_json(xmlrpc_env *       const envP,
-+                      xmlrpc_value *     const valP,
-+                      xmlrpc_mem_block * const jsonP);
-+
-+#ifdef __cplusplus
-+}
-+#endif /* __cplusplus */
-+
-+#endif /* XMLRPC_JSON_H_INCLUDED */
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/oldcppwrapper.hpp b/libs/xmlrpc-c/include/xmlrpc-c/oldcppwrapper.hpp
-index 78a9c51..858fdd3 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/oldcppwrapper.hpp
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/oldcppwrapper.hpp
-@@ -27,17 +27,18 @@
- #include <cstdlib>
- #include <string>
-+
-+#include <xmlrpc-c/c_util.h>
- #include <xmlrpc-c/base.h>
- #include <xmlrpc-c/client.h>
- #include <xmlrpc-c/server.h>
--
- //=========================================================================
- //  XmlRpcFault
- //=========================================================================
- //  A C++ exception class representing an XML-RPC fault.
--class XmlRpcFault {
-+class XMLRPC_DLLEXPORT XmlRpcFault {
- private:
-     xmlrpc_env   mFault;
-@@ -51,9 +52,9 @@ public:
-     XmlRpcFault (const xmlrpc_env *env);
-     ~XmlRpcFault (void);
--    int          getFaultCode (void) const;
--    std::string  getFaultString (void) const;
--    xmlrpc_env  *getFaultEnv (void);
-+    inline int getFaultCode (void) const;
-+    std::string getFaultString (void) const;
-+    inline xmlrpc_env * getFaultEnv (void);
- };
- inline int XmlRpcFault::getFaultCode (void) const {
-@@ -74,7 +75,7 @@ inline xmlrpc_env *XmlRpcFault::getFaultEnv (void) {
- //    xmlrpc_parse_value(env, v, "(i)", &i);
- //    env.throwIfFaultOccurred();        
--class XmlRpcEnv {
-+class XMLRPC_DLLEXPORT XmlRpcEnv {
- private:
-     xmlrpc_env   mEnv;
-@@ -128,7 +129,7 @@ inline void XmlRpcEnv::throwIfFaultOccurred (void) const {
- //
- //  So reference counting for the xmlrpc_value is quite a nightmare.
--class XmlRpcValue {
-+class XMLRPC_DLLEXPORT XmlRpcValue {
- private:
-     xmlrpc_value *mValue;
-@@ -257,7 +258,7 @@ inline xmlrpc_value *XmlRpcValue::borrowReference (void) const {
- //  XmlRpcClient
- //=========================================================================
--class XmlRpcClient {
-+class XMLRPC_DLLEXPORT XmlRpcClient {
- private:
-     std::string mServerUrl;
-@@ -344,7 +345,7 @@ inline XmlRpcValue XmlRpcClient::call (std::string method_name,
- //  XmlRpcGenSrv
- //=========================================================================
--class XmlRpcGenSrv {
-+class XMLRPC_DLLEXPORT XmlRpcGenSrv {
- private:
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/packetsocket.hpp b/libs/xmlrpc-c/include/xmlrpc-c/packetsocket.hpp
-index 64b7221..2ad7a46 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/packetsocket.hpp
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/packetsocket.hpp
-@@ -15,20 +15,21 @@
- #include <string>
- #include <queue>
-+#include <xmlrpc-c/c_util.h>
- #include <xmlrpc-c/girmem.hpp>
- namespace xmlrpc_c {
--class packet : public girmem::autoObject {
-+class XMLRPC_DLLEXPORT packet : public girmem::autoObject {
- public:
-     packet();
-     packet(const unsigned char * const data,
--                   size_t                const dataLength);
-+           size_t                const dataLength);
-     packet(const char * const data,
--                   size_t       const dataLength);
-+           size_t       const dataLength);
-     ~packet();
-@@ -54,7 +55,7 @@ private:
--class packetPtr: public girmem::autoObjectPtr {
-+class XMLRPC_DLLEXPORT packetPtr: public girmem::autoObjectPtr {
- public:
-     packetPtr();
-@@ -67,7 +68,9 @@ public:
--class packetSocket {
-+class XMLRPC_DLLEXPORT packetSocket_impl;
-+
-+class XMLRPC_DLLEXPORT packetSocket {
- /*----------------------------------------------------------------------------
-    This is an Internet communication vehicle that transmits individual
-    variable-length packets of text.
-@@ -106,56 +109,7 @@ public:
-              packetPtr * const packetPP);
- private:
--    int sockFd;
--        // The kernel stream socket we use.
--    bool eof;
--        // The packet socket is at end-of-file for reads.
--        // 'readBuffer' is empty and there won't be any more data to fill
--        // it because the underlying stream socket is closed.
--    std::queue<packetPtr> readBuffer;
--    packetPtr packetAccumP;
--        // The receive packet we're currently accumulating; it will join
--        // 'readBuffer' when we've received the whole packet (and we've
--        // seen the END escape sequence so we know we've received it all).
--        // If we're not currently accumulating a packet (haven't seen a
--        // PKT escape sequence), this points to nothing.
--    bool inEscapeSeq;
--        // In our trek through the data read from the underlying stream
--        // socket, we are after an ESC character and before the end of the
--        // escape sequence.  'escAccum' shows what of the escape sequence
--        // we've seen so far.
--    bool inPacket;
--        // We're now receiving packet data from the underlying stream
--        // socket.  We've seen a complete PKT escape sequence, but have not
--        // seen a complete END escape sequence since.
--    struct {
--        unsigned char bytes[3];
--        size_t len;
--    } escAccum;
--
--    void
--    bufferFinishedPacket();
--
--    void
--    takeSomeEscapeSeq(const unsigned char * const buffer,
--                                    size_t                const length,
--                                    size_t *              const bytesTakenP);
--
--    void
--    takeSomePacket(const unsigned char * const buffer,
--                   size_t                const length,
--                   size_t *              const bytesTakenP);
--
--    void
--    verifyNothingAccumulated();
--
--    void
--    processBytesRead(const unsigned char * const buffer,
--                     size_t                const bytesRead);
--
--    void
--    readFromFile();
--
-+    packetSocket_impl * implP;
- };
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/registry.hpp b/libs/xmlrpc-c/include/xmlrpc-c/registry.hpp
-index 1182b86..81db5b0 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/registry.hpp
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/registry.hpp
-@@ -1,10 +1,12 @@
- #ifndef REGISTRY_HPP_INCLUDED
- #define REGISTRY_HPP_INCLUDED
-+#include <sys/types.h>
- #include <string>
- #include <vector>
- #include <list>
-+#include <xmlrpc-c/c_util.h>
- #include <xmlrpc-c/server.h>
- #include <xmlrpc-c/girmem.hpp>
- #include <xmlrpc-c/base.hpp>
-@@ -12,7 +14,20 @@
- namespace xmlrpc_c {
--class method : public girmem::autoObject {
-+class XMLRPC_DLLEXPORT callInfo {
-+/*----------------------------------------------------------------------------
-+   Information about how an XML-RPC call arrived.
-+
-+   This base class carries no information; Servers that don't have any
-+   call information to provide might use this.  Servers that do have call
-+   information to provide define a derived class of this that contains
-+   information pertinent to that kind of server.
-+-----------------------------------------------------------------------------*/
-+public:
-+    virtual ~callInfo() {};  // This makes it polymorphic
-+};
-+
-+class XMLRPC_DLLEXPORT method : public girmem::autoObject {
- /*----------------------------------------------------------------------------
-    An XML-RPC method.
-@@ -68,7 +83,34 @@ protected:
- */
--class methodPtr : public girmem::autoObjectPtr {
-+class XMLRPC_DLLEXPORT method2 : public method {
-+/*----------------------------------------------------------------------------
-+   An XML-RPC method.
-+
-+   This base class is abstract.  You can't create an object in it.
-+   Define a useful method with this as a base class, with an
-+   execute() method.
-+
-+   This differs from class 'method' in that the execute() method gets
-+   call information ('callInfo').
-+-----------------------------------------------------------------------------*/
-+public:
-+    method2();
-+
-+    virtual ~method2();
-+
-+    virtual void
-+    execute(xmlrpc_c::paramList        const& paramList,
-+            const xmlrpc_c::callInfo * const  callInfoP,
-+            xmlrpc_c::value *          const  resultP) = 0;
-+
-+    void
-+    execute(xmlrpc_c::paramList const& paramList,
-+            xmlrpc_c::value *   const  resultP);
-+
-+};
-+
-+class XMLRPC_DLLEXPORT methodPtr : public girmem::autoObjectPtr {
- public:
-     methodPtr(xmlrpc_c::method * const methodP);
-@@ -77,7 +119,7 @@ public:
-     operator->() const;
- };
--class defaultMethod : public girmem::autoObject {
-+class XMLRPC_DLLEXPORT defaultMethod : public girmem::autoObject {
- public:
-     virtual ~defaultMethod();
-@@ -88,7 +130,7 @@ public:
-             xmlrpc_c::value *   const  resultP) = 0;
- };
--class defaultMethodPtr : public girmem::autoObjectPtr {
-+class XMLRPC_DLLEXPORT defaultMethodPtr : public girmem::autoObjectPtr {
- public:
-     defaultMethodPtr();
-@@ -102,9 +144,9 @@ public:
-     get() const;
- };
-+struct registry_impl;
--
--class registry : public girmem::autoObject {
-+class XMLRPC_DLLEXPORT registry : public girmem::autoObject {
- /*----------------------------------------------------------------------------
-    An Xmlrpc-c server method registry.  An Xmlrpc-c server transport
-    (e.g.  an HTTP server) uses this object to process an incoming
-@@ -126,7 +168,7 @@ public:
-     void
-     disableIntrospection();
--    class shutdown {
-+    class XMLRPC_DLLEXPORT shutdown {
-     public:
-         virtual ~shutdown() = 0;
-         virtual void
-@@ -141,36 +183,24 @@ public:
-     setDialect(xmlrpc_dialect const dialect);
-     
-     void
--    processCall(std::string   const& body,
--                std::string * const  responseP) const;
-+    processCall(std::string   const& callXml,
-+                std::string * const  responseXmlP) const;
--    xmlrpc_registry *
--    c_registry() const;
--        /* This is meant to be private except to other objects in the
--           Xmlrpc-c library.
--        */
-+    void
-+    processCall(std::string                const& callXml,
-+                const xmlrpc_c::callInfo * const callInfoP,
-+                std::string *              const  responseXmlP) const;
-+        
-+    size_t
-+    maxStackSize() const;
- private:
--    xmlrpc_registry * c_registryP;
--        // Pointer to the C registry object we use to implement this
--        // object.
--
--    std::list<xmlrpc_c::methodPtr> methodList;
--        // This is a list of all the method objects (actually, pointers
--        // to them).  But since the real registry is the C registry object,
--        // all this list is for is to maintain references to the objects
--        // to which the C registry points so that they continue to exist.
--
--    xmlrpc_c::defaultMethodPtr defaultMethodP;
--        // The real identifier of the default method is the C registry
--        // object; this member exists only to maintain a reference to the
--        // object to which the C registry points so that it will continue
--        // to exist.
-+    registry_impl * implP;
- };
--class registryPtr : public girmem::autoObjectPtr {
-+class XMLRPC_DLLEXPORT registryPtr : public girmem::autoObjectPtr {
- public:
-     registryPtr();
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/select_int.h b/libs/xmlrpc-c/include/xmlrpc-c/select_int.h
-index 3b42a1d..7a43ec3 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/select_int.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/select_int.h
-@@ -1,11 +1,12 @@
- #ifndef SELECT_INT_H_INCLUDED
- #define SELECT_INT_H_INCLUDED
--#ifndef WIN32
-+#if HAVE_SYS_SELECT_H
- #include <sys/select.h>
- #endif
- #include <signal.h>
-+#include "xmlrpc-c/c_util.h"
- #include "xmlrpc-c/time_int.h"
- #ifdef WIN32
- #ifndef sigset_t
-@@ -13,6 +14,7 @@ typedef int sigset_t;
- #endif
- #endif
-+XMLRPC_DLLEXPORT
- int
- xmlrpc_pselect(int                     const n,
-                fd_set *                const readfdsP,
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/server.h b/libs/xmlrpc-c/include/xmlrpc-c/server.h
-index 70d4896..11256fe 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/server.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/server.h
-@@ -3,6 +3,7 @@
- #ifndef  XMLRPC_SERVER_H_INCLUDED
- #define  XMLRPC_SERVER_H_INCLUDED
-+#include <xmlrpc-c/c_util.h>
- #include <xmlrpc-c/base.h>
- #ifdef __cplusplus
-@@ -37,19 +38,32 @@ typedef xmlrpc_value *
-                          xmlrpc_value * const paramArrayP,
-                          void *         const serverInfo);
-+/* These are for backward compatibility -- they can't be exported from a
-+   Windows DLL.  xmlrpc_server_version() is preferred.
-+*/
- extern unsigned int const xmlrpc_server_version_major;
- extern unsigned int const xmlrpc_server_version_minor;
- extern unsigned int const xmlrpc_server_version_point;
-+XMLRPC_DLLEXPORT
-+void
-+xmlrpc_server_version(unsigned int * const majorP,
-+                      unsigned int * const minorP,
-+                      unsigned int * const pointP);
-+
-+XMLRPC_DLLEXPORT
- xmlrpc_registry *
- xmlrpc_registry_new(xmlrpc_env * const envP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_registry_free(xmlrpc_registry * const registryP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_registry_disable_introspection(xmlrpc_registry * const registryP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_registry_add_method(xmlrpc_env *      const envP,
-                            xmlrpc_registry * const registryP,
-@@ -58,6 +72,7 @@ xmlrpc_registry_add_method(xmlrpc_env *      const envP,
-                            xmlrpc_method     const method,
-                            void *            const serverInfo);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_registry_add_method_w_doc(xmlrpc_env *      const envP,
-                                  xmlrpc_registry * const registryP,
-@@ -68,6 +83,7 @@ xmlrpc_registry_add_method_w_doc(xmlrpc_env *      const envP,
-                                  const char *      const signatureString,
-                                  const char *      const help);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_registry_add_method2(xmlrpc_env *      const envP,
-                             xmlrpc_registry * const registryP,
-@@ -77,12 +93,30 @@ xmlrpc_registry_add_method2(xmlrpc_env *      const envP,
-                             const char *      const help,
-                             void *            const serverInfo);
-+struct xmlrpc_method_info3 {
-+    const char *      methodName;
-+    xmlrpc_method2    methodFunction;
-+    void *            serverInfo;
-+    size_t            stackSize;
-+    const char *      signatureString;
-+    const char *      help;
-+};
-+
-+XMLRPC_DLLEXPORT
-+void
-+xmlrpc_registry_add_method3(
-+    xmlrpc_env *                       const envP,
-+    xmlrpc_registry *                  const registryP,
-+    const struct xmlrpc_method_info3 * const infoP);
-+
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_registry_set_default_method(xmlrpc_env *          const envP,
-                                    xmlrpc_registry *     const registryP,
-                                    xmlrpc_default_method const handler,
-                                    void *                const userData);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_registry_set_preinvoke_method(xmlrpc_env *            const envP,
-                                      xmlrpc_registry *       const registryP,
-@@ -95,11 +129,13 @@ typedef void xmlrpc_server_shutdown_fn(xmlrpc_env * const envP,
-                                        const char * const comment,
-                                        void *       const callInfo);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_registry_set_shutdown(xmlrpc_registry *           const registryP,
-                              xmlrpc_server_shutdown_fn * const shutdownFn,
-                              void *                      const context);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_registry_set_dialect(xmlrpc_env *      const envP,
-                             xmlrpc_registry * const registryP,
-@@ -109,6 +145,7 @@ xmlrpc_registry_set_dialect(xmlrpc_env *      const envP,
-    Lower interface -- services to be used by an HTTP request handler
- -----------------------------------------------------------------------------*/
-                     
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_registry_process_call2(xmlrpc_env *        const envP,
-                               xmlrpc_registry *   const registryP,
-@@ -117,6 +154,7 @@ xmlrpc_registry_process_call2(xmlrpc_env *        const envP,
-                               void *              const callInfo,
-                               xmlrpc_mem_block ** const outputPP);
-+XMLRPC_DLLEXPORT
- xmlrpc_mem_block *
- xmlrpc_registry_process_call(xmlrpc_env *      const envP,
-                              xmlrpc_registry * const registryP,
-@@ -124,6 +162,10 @@ xmlrpc_registry_process_call(xmlrpc_env *      const envP,
-                              const char *      const xmlData,
-                              size_t            const xmlLen);
-+XMLRPC_DLLEXPORT
-+size_t
-+xmlrpc_registry_max_stackSize(xmlrpc_registry * const registryP);
-+
- #ifdef __cplusplus
- }
- #endif
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.h b/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.h
-index 975fa0e..36bcb11 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.h
-@@ -16,6 +16,7 @@
- #endif
- #include <xmlrpc-c/config.h>  /* For XMLRPC_SOCKET */
-+#include <xmlrpc-c/c_util.h>
- #include <xmlrpc-c/abyss.h>
- #include <xmlrpc-c/server.h>
-@@ -33,9 +34,11 @@ extern "C" {
- **  of your program, when it is only one thread.
- **=======================================================================*/
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_abyss_global_init(xmlrpc_env * const envP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_abyss_global_term(void);
-@@ -68,6 +71,9 @@ typedef struct {
-     const char *      uri_path;
-     xmlrpc_bool       chunk_response;
-     xmlrpc_bool       enable_shutdown;
-+    const char *      allow_origin;
-+    xmlrpc_bool       access_ctl_expires;
-+    unsigned int      access_ctl_max_age;
- } xmlrpc_server_abyss_parms;
-@@ -85,10 +91,11 @@ typedef struct {
- **  Simple server with Abyss under the covers
- **=======================================================================*/
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_abyss(xmlrpc_env *                      const envP,
-                     const xmlrpc_server_abyss_parms * const parms,
--                    unsigned int                      const parm_size);
-+                    unsigned int                      const parmSize);
- /*=========================================================================
- **  Object-oriented XML-RPC server with Abyss under the covers
-@@ -96,39 +103,47 @@ xmlrpc_server_abyss(xmlrpc_env *                      const envP,
- typedef struct xmlrpc_server_abyss xmlrpc_server_abyss_t;
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_abyss_create(xmlrpc_env *                      const envP,
-                            const xmlrpc_server_abyss_parms * const parmsP,
-                            unsigned int                      const parmSize,
-                            xmlrpc_server_abyss_t **          const serverPP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_abyss_destroy(xmlrpc_server_abyss_t * const serverP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_abyss_run_server(xmlrpc_env *            const envP,
-                                xmlrpc_server_abyss_t * const serverP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_abyss_terminate(xmlrpc_env *            const envP,
-                               xmlrpc_server_abyss_t * const serverP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_abyss_reset_terminate(xmlrpc_env *            const envP,
-                                     xmlrpc_server_abyss_t * const serverP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_abyss_use_sigchld(xmlrpc_server_abyss_t * const serverP);
- typedef struct xmlrpc_server_abyss_sig xmlrpc_server_abyss_sig;
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_abyss_setup_sig(
-     xmlrpc_env *               const envP,
-     xmlrpc_server_abyss_t *    const serverP,
-     xmlrpc_server_abyss_sig ** const oldHandlersPP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_abyss_restore_sig(
-     const xmlrpc_server_abyss_sig * const oldHandlersP);
-@@ -139,21 +154,78 @@ xmlrpc_server_abyss_restore_sig(
- **  Functions to make an XML-RPC server out of your own Abyss server
- **=======================================================================*/
-+typedef void
-+xmlrpc_call_processor(xmlrpc_env *        const envP,
-+                      void *              const processorArg,
-+                      const char *        const callXml,
-+                      size_t              const callXmlLen,
-+                      TSession *          const abyssSessionP,
-+                      xmlrpc_mem_block ** const responseXmlPP);
-+
-+typedef struct {
-+    xmlrpc_call_processor * xml_processor;
-+    void *                  xml_processor_arg;
-+    size_t                  xml_processor_max_stack;
-+    const char *            uri_path;
-+    xmlrpc_bool             chunk_response;
-+    const char *            allow_origin;
-+        /* NULL means don't answer HTTP access control query */
-+    xmlrpc_bool             access_ctl_expires;
-+    unsigned int            access_ctl_max_age;
-+} xmlrpc_server_abyss_handler_parms;
-+
-+#define XMLRPC_AHPSIZE(MBRNAME) \
-+    XMLRPC_STRUCTSIZE(xmlrpc_server_abyss_handler_parms, MBRNAME)
-+
-+/* XMLRPC_AHPSIZE(xyz) is the minimum size a struct
-+   xmlrpc_server_abyss_handler_parms must be to include the 'xyz' member.
-+   This is essential to forward and backward compatibility, as new members
-+   will be added to the end of the struct in future releases.  This is how the
-+   callee knows whether or not the caller is new enough to have supplied a
-+   certain parameter.
-+*/
-+
-+
-+XMLRPC_DLLEXPORT
-+void
-+xmlrpc_server_abyss_set_handler3(
-+    xmlrpc_env *                              const envP,
-+    TServer *                                 const srvP,
-+    const xmlrpc_server_abyss_handler_parms * const parms,
-+    unsigned int                              const parmSize);
-+
-+XMLRPC_DLLEXPORT
-+void
-+xmlrpc_server_abyss_set_handler2(
-+    TServer *         const srvP,
-+    const char *      const uriPath,
-+    xmlrpc_call_processor   xmlProcessor,
-+    void *            const xmlProcessorArg,
-+    size_t            const xmlProcessorMaxStackSize,
-+    xmlrpc_bool       const chunkResponse);
-+
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_abyss_set_handlers2(TServer *         const srvP,
-                                   const char *      const filename,
-                                   xmlrpc_registry * const registryP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_abyss_set_handlers(TServer *         const serverP,
-                                  xmlrpc_registry * const registryP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_abyss_set_handler(xmlrpc_env *      const envP,
-                                 TServer *         const serverP,
-                                 const char *      const filename,
-                                 xmlrpc_registry * const registryP);
-+XMLRPC_DLLEXPORT
-+void
-+xmlrpc_server_abyss_set_default_handler(TServer * const serverP);
-+
- /*=========================================================================
- **  Handy Abyss Extensions
- **=======================================================================*/
-@@ -171,6 +243,7 @@ xmlrpc_server_abyss_set_handler(xmlrpc_env *      const envP,
- ** Once you call this routine, it is illegal to modify the server any
- ** more, including changing any method registry.
- */
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_abyss_run(void);
-@@ -180,6 +253,7 @@ xmlrpc_server_abyss_run(void);
- ** function.  'runfirstArg' is the argument the server passes to the runfirst
- ** function.
- **/
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_server_abyss_run_first(runfirstFn const runfirst,
-                               void *     const runfirstArg);
-@@ -200,29 +274,34 @@ xmlrpc_server_abyss_run_first(runfirstFn const runfirst,
- ** Or use a regular method registry and call
- ** xmlrpc_server_abyss_set_handlers().
- **/
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_server_abyss_init(int          const flags, 
-                          const char * const config_file);
- /* This is called automatically by xmlrpc_server_abyss_init. */
-+XMLRPC_DLLEXPORT
- void xmlrpc_server_abyss_init_registry (void);
- /* Fetch the internal registry, if you happen to need it. 
-    If you're using this, you really shouldn't be using the built-in
-    registry at all.  It exists today only for backward compatibilty.
- */
-+XMLRPC_DLLEXPORT
- extern xmlrpc_registry *
- xmlrpc_server_abyss_registry (void);
- /* A quick & easy shorthand for adding a method. Depending on
- ** how you've configured your copy of Abyss, it's probably not safe to
- ** call this method after calling xmlrpc_server_abyss_run. */
-+XMLRPC_DLLEXPORT
- void xmlrpc_server_abyss_add_method (char *        const method_name,
-                                      xmlrpc_method const method,
-                                      void *        const user_data);
-     
- /* As above, but provide documentation (see xmlrpc_registry_add_method_w_doc
- ** for more information). You should really use this one. */
-+XMLRPC_DLLEXPORT
- extern void
- xmlrpc_server_abyss_add_method_w_doc (char *        const method_name,
-                                       xmlrpc_method const method,
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.hpp b/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.hpp
-index 1ff9043..44636f9 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.hpp
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/server_abyss.hpp
-@@ -5,18 +5,25 @@
- #include <winsock.h>   // For XMLRPC_SOCKET (= SOCKET)
- #endif
--#include "xmlrpc-c/config.h"  // For XMLRPC_SOCKET
--#include "xmlrpc-c/base.hpp"
--#include "abyss.h"
-+#include <xmlrpc-c/config.h>  // For XMLRPC_SOCKET
-+#include <xmlrpc-c/c_util.h>
-+#include <xmlrpc-c/base.hpp>
-+#include <xmlrpc-c/registry.hpp>
-+#include <xmlrpc-c/abyss.h>
- namespace xmlrpc_c {
--class serverAbyss {
-+struct serverAbyss_impl;
-+
-+class XMLRPC_DLLEXPORT serverAbyss {
-     
- public:
--    class constrOpt {
-+    struct constrOpt_impl;
-+
-+    class XMLRPC_DLLEXPORT constrOpt {
-     public:
-         constrOpt();
-+        ~constrOpt();
-         constrOpt & registryPtr       (xmlrpc_c::registryPtr      const& arg);
-         constrOpt & registryP         (const xmlrpc_c::registry * const& arg);
-@@ -29,33 +36,14 @@ public:
-         constrOpt & dontAdvertise     (bool           const& arg);
-         constrOpt & uriPath           (std::string    const& arg);
-         constrOpt & chunkResponse     (bool           const& arg);
-+        constrOpt & allowOrigin       (std::string    const& arg);
-+        constrOpt & accessCtlMaxAge (unsigned int const& arg);
-+        constrOpt & serverOwnsSignals (bool           const& arg);
-+        constrOpt & expectSigchld     (bool           const& arg);
--        struct value {
--            xmlrpc_c::registryPtr      registryPtr;
--            const xmlrpc_c::registry * registryP;
--            XMLRPC_SOCKET  socketFd;
--            unsigned int   portNumber;
--            std::string    logFileName;
--            unsigned int   keepaliveTimeout;
--            unsigned int   keepaliveMaxConn;
--            unsigned int   timeout;
--            bool           dontAdvertise;
--            std::string    uriPath;
--            bool           chunkResponse;
--        } value;
--        struct {
--            bool registryPtr;
--            bool registryP;
--            bool socketFd;
--            bool portNumber;
--            bool logFileName;
--            bool keepaliveTimeout;
--            bool keepaliveMaxConn;
--            bool timeout;
--            bool dontAdvertise;
--            bool uriPath;
--            bool chunkResponse;
--        } present;
-+    private:
-+        struct constrOpt_impl * implP;
-+        friend class serverAbyss;
-     };
-     serverAbyss(constrOpt const& opt);
-@@ -82,10 +70,15 @@ public:
-     void
-     runConn(int const socketFd);
-+#ifndef WIN32
-+    void
-+    sigchld(pid_t pid);
-+#endif
-+
-     void
-     terminate();
-     
--    class shutdown : public xmlrpc_c::registry::shutdown {
-+    class XMLRPC_DLLEXPORT shutdown : public xmlrpc_c::registry::shutdown {
-     public:
-         shutdown(xmlrpc_c::serverAbyss * const severAbyssP);
-         virtual ~shutdown();
-@@ -95,35 +88,64 @@ public:
-     };
- private:
--    // The user has the choice of supplying the registry by plain pointer
--    // (and managing the object's existence himself) or by autoObjectPtr
--    // (with automatic management).  'registryPtr' exists here only to
--    // maintain a reference count in the case that the user supplied an
--    // autoObjectPtr.  The object doesn't reference the C++ registry
--    // object except during construction, because the C registry is the
--    // real registry.
--    xmlrpc_c::registryPtr registryPtr;
--    TServer cServer;
--
--    void
--    setAdditionalServerParms(constrOpt const& opt);
-+    serverAbyss_impl * implP;
-     void
-     initialize(constrOpt const& opt);
- };
-+class XMLRPC_DLLEXPORT callInfo_serverAbyss : public xmlrpc_c::callInfo {
-+/*----------------------------------------------------------------------------
-+   This is information about how an XML-RPC call arrived via an Abyss server.
-+   It is available to the user's XML-RPC method execute() method, so for
-+   example an XML-RPC method might execute differently depending upon the
-+   IP address of the client.
-+
-+   This is for a user of a xmlrpc_c::serverAbyss server.
-+-----------------------------------------------------------------------------*/
-+public:
-+    callInfo_serverAbyss(xmlrpc_c::serverAbyss * const abyssServerP,
-+                         TSession *              const abyssSessionP);
-+
-+    xmlrpc_c::serverAbyss * const serverAbyssP;
-+        // The server that is processing the RPC.
-+    TSession * const abyssSessionP;
-+        // The HTTP transaction that embodies the RPC.  You can ask this
-+        // object things like what the IP address of the client is.
-+};
-+
-+class XMLRPC_DLLEXPORT callInfo_abyss : public xmlrpc_c::callInfo {
-+/*----------------------------------------------------------------------------
-+   This is information about how an XML-RPC call arrived via an Abyss server.
-+   It is available to the user's XML-RPC method execute() method, so for
-+   example an XML-RPC method might execute differently depending upon the
-+   IP address of the client.
-+
-+   This is for a user with his own Abyss server, using
-+   the "set_handlers" routines to make it into an XML-RPC server.
-+-----------------------------------------------------------------------------*/
-+public:
-+    callInfo_abyss(TSession * const abyssSessionP);
-+
-+    TSession * abyssSessionP;
-+        // The HTTP transaction that embodies the RPC.  You can ask this
-+        // object things like what the IP address of the client is.
-+};
-+XMLRPC_DLLEXPORT
- void
- server_abyss_set_handlers(TServer *          const  srvP,
-                           xmlrpc_c::registry const& registry,
-                           std::string        const& uriPath = "/RPC2");
-+XMLRPC_DLLEXPORT
- void
- server_abyss_set_handlers(TServer *                  const  srvP,
-                           const xmlrpc_c::registry * const  registryP,
-                           std::string                const& uriPath = "/RPC2");
-+XMLRPC_DLLEXPORT
- void
- server_abyss_set_handlers(TServer *             const srvP,
-                           xmlrpc_c::registryPtr const registryPtr,
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/server_cgi.h b/libs/xmlrpc-c/include/xmlrpc-c/server_cgi.h
-index ad926aa..e43b9e7 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/server_cgi.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/server_cgi.h
-@@ -6,38 +6,45 @@
- #ifndef  XMLRPC_CGI_H_INCLUDED
- #define  XMLRPC_CGI_H_INCLUDED
-+#include <xmlrpc-c/c_util.h>
- #include <xmlrpc-c/server.h>
- #ifdef __cplusplus
- extern "C" {
- #endif /* __cplusplus */
--
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_cgi_process_call(xmlrpc_registry * const registryP);
- #define XMLRPC_CGI_NO_FLAGS (0)
-+XMLRPC_DLLEXPORT
- extern void
--xmlrpc_cgi_init (int flags);
-+xmlrpc_cgi_init(int const flags);
-+XMLRPC_DLLEXPORT
- extern xmlrpc_registry *
- xmlrpc_cgi_registry (void);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_cgi_add_method(const char *  const method_name,
-                       xmlrpc_method const method,
-                       void *        const user_data);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_cgi_add_method_w_doc(const char *  const method_name,
-                             xmlrpc_method const method,
-                             void *        const user_data,
-                             const char *  const signature,
-                             const char *  const help);
-+XMLRPC_DLLEXPORT
- extern void
- xmlrpc_cgi_process_call (void);
-+XMLRPC_DLLEXPORT
- extern void
- xmlrpc_cgi_cleanup (void);
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/server_cgi.hpp b/libs/xmlrpc-c/include/xmlrpc-c/server_cgi.hpp
-new file mode 100644
-index 0000000..a030ee5
---- /dev/null
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/server_cgi.hpp
-@@ -0,0 +1,45 @@
-+#ifndef SERVER_CGI_HPP_INCLUDED
-+#define SERVER_CGI_HPP_INCLUDED
-+
-+#include <xmlrpc-c/c_util.h>
-+#include <xmlrpc-c/registry.hpp>
-+
-+namespace xmlrpc_c {
-+
-+class XMLRPC_DLLEXPORT serverCgi {
-+
-+public:
-+
-+    class XMLRPC_DLLEXPORT constrOpt {
-+    public:
-+        constrOpt();
-+
-+        constrOpt & registryPtr       (xmlrpc_c::registryPtr      const& arg);
-+        constrOpt & registryP         (const xmlrpc_c::registry * const& arg);
-+
-+        struct value {
-+            xmlrpc_c::registryPtr      registryPtr;
-+            const xmlrpc_c::registry * registryP;
-+        } value;
-+        struct {
-+            bool registryPtr;
-+            bool registryP;
-+        } present;
-+    };
-+
-+    serverCgi(constrOpt const& opt);
-+
-+    ~serverCgi();
-+
-+    void
-+    processCall();
-+
-+private:
-+
-+    struct serverCgi_impl * implP;
-+};
-+
-+
-+} // namespace
-+
-+#endif
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/server_pstream.hpp b/libs/xmlrpc-c/include/xmlrpc-c/server_pstream.hpp
-index b542532..c365f9a 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/server_pstream.hpp
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/server_pstream.hpp
-@@ -3,36 +3,36 @@
- #ifdef WIN32
- #include <winsock.h>  /* For XMLRPC_SOCKET (= SOCKET) */
-+typedef int socklen_t;
-+#else
-+#include <sys/socket.h>
- #endif
- #include <xmlrpc-c/config.h>  /* For XMLRPC_SOCKET */
-+#include <xmlrpc-c/c_util.h>
- #include <xmlrpc-c/registry.hpp>
- #include <xmlrpc-c/packetsocket.hpp>
- namespace xmlrpc_c {
--class serverPstreamConn {
-+class XMLRPC_DLLEXPORT serverPstreamConn {
- public:
--    class constrOpt {
-+    struct constrOpt_impl;
-+
-+    class XMLRPC_DLLEXPORT constrOpt {
-     public:
-         constrOpt();
-+        ~constrOpt();
-         constrOpt & registryPtr       (xmlrpc_c::registryPtr      const& arg);
-         constrOpt & registryP         (const xmlrpc_c::registry * const& arg);
-         constrOpt & socketFd          (XMLRPC_SOCKET  const& arg);
--        struct value {
--            xmlrpc_c::registryPtr      registryPtr;
--            const xmlrpc_c::registry * registryP;
--            XMLRPC_SOCKET              socketFd;
--        } value;
--        struct {
--            bool registryPtr;
--            bool registryP;
--            bool socketFd;
--        } present;
-+    private:
-+        struct constrOpt_impl * implP;
-+        friend class serverPstreamConn;
-     };
-     serverPstreamConn(constrOpt const& opt);
-@@ -40,33 +40,122 @@ public:
-     ~serverPstreamConn();
-     void
-+    runOnce(xmlrpc_c::callInfo * const callInfoP,
-+            volatile const int * const interruptP,
-+            bool *               const eofP);
-+
-+    void
-     runOnce(volatile const int * const interruptP,
-             bool *               const eofP);
-     void
-     runOnce(bool * const eofP);
-+    void
-+    runOnceNoWait(callInfo * const callInfoP,
-+                  bool *     const eofP,
-+                  bool *     const didOneP);
-+
-+    void
-+    runOnceNoWait(bool * const eofP,
-+                  bool * const didOneP);
-+
-+    void
-+    runOnceNoWait(bool * const eofP);
-+
-+    void
-+    run(xmlrpc_c::callInfo * const callInfoP,
-+        volatile const int * const interruptP);
-+
-+    void
-+    run(volatile const int * const interruptP);
-+
-+    void
-+    run();
-+
- private:
-+    struct serverPstreamConn_impl * implP;
-+};
--    // 'registryP' is what we actually use; 'registryHolder' just holds a
--    // reference to 'registryP' so the registry doesn't disappear while
--    // this server exists.  But note that if the creator doesn't supply
--    // a registryPtr, 'registryHolder' is just a placeholder variable and
--    // the creator is responsible for making sure the registry doesn't
--    // go anywhere while the server exists.
--    registryPtr registryHolder;
--    const registry * registryP;
-+class XMLRPC_DLLEXPORT serverPstream {
--    packetSocket * packetSocketP;
--        // The packet socket over which we received RPCs.
--        // This is permanently connected to our fixed client.
-+public:
-+
-+    struct constrOpt_impl;
-+
-+    class XMLRPC_DLLEXPORT constrOpt {
-+    public:
-+        constrOpt();
-+        ~constrOpt();
-+
-+        constrOpt & registryPtr       (xmlrpc_c::registryPtr      const& arg);
-+        constrOpt & registryP         (const xmlrpc_c::registry * const& arg);
-+        constrOpt & socketFd          (XMLRPC_SOCKET  const& arg);
-+
-+    private:
-+        struct constrOpt_impl * implP;
-+        friend class serverPstream;
-+    };
-+
-+    serverPstream(constrOpt const& opt);
-+
-+    virtual ~serverPstream();  // This makes it polymorphic
-     void
--    establishRegistry(constrOpt const& opt);
-+    runSerial(volatile const int * const interruptP);
-     void
--    establishPacketSocket(constrOpt const& opt);
-+    runSerial();
-+
-+    void
-+    terminate();
-+    
-+    class shutdown : public xmlrpc_c::registry::shutdown {
-+    public:
-+        shutdown(xmlrpc_c::serverPstream * const severAbyssP);
-+        virtual ~shutdown();
-+        void doit(std::string const& comment, void * const callInfo) const;
-+    private:
-+        xmlrpc_c::serverPstream * const serverPstreamP;
-+    };
-+
-+private:
-+    struct serverPstream_impl * implP;
-+};
-+
-+// Note: there is no xmlrpc_c::callInfo_serverPstreamConn .  That's
-+// because the serverPstreamConn server is so low-level that the user
-+// defines his own derived class of xmlrpc_c::callInfo.  He creates an
-+// object of that class and passes it to the 'runOnce' method.  The
-+// server then passes it on through to the user's XML-RPC method 
-+// execute() method.
-+
-+class XMLRPC_DLLEXPORT callInfo_serverPstream : public xmlrpc_c::callInfo {
-+/*----------------------------------------------------------------------------
-+   This is information about how an XML-RPC call arrived to the server.  It is
-+   available to the user's XML-RPC method execute() method, so for example an
-+   XML-RPC method might execute differently depending upon the IP address of
-+   the client.
-+
-+   This is for a user of a xmlrpc_c::serverPstream server.
-+-----------------------------------------------------------------------------*/
-+public:
-+    callInfo_serverPstream(
-+        xmlrpc_c::serverPstream * const serverP,
-+        struct sockaddr           const clientAddr,
-+        socklen_t                 const clientAddrSize);
-+
-+    xmlrpc_c::serverPstream * const serverP;
-+        // The server that is processing the RPC.
-+    struct sockaddr const clientAddr;
-+        // The address (typically, IP address and TCP port) of the XML-RPC
-+        // client.  This is a Unix OS type.
-+    socklen_t const clientAddrSize;
-+        // Size in bytes of the valid part of 'clientAddr'.  (Usually implied
-+        // by type of socket, as well as the address type member of
-+        // 'clientAddr', but here because it's technically part of the POSIX
-+        // socket interface).
- };
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/server_w32httpsys.h b/libs/xmlrpc-c/include/xmlrpc-c/server_w32httpsys.h
-index 085f6e3..4c054c0 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/server_w32httpsys.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/server_w32httpsys.h
-@@ -38,6 +38,7 @@
- #ifndef  _XMLRPC_SERVER_HTTPSYS_H_
- #define  _XMLRPC_SERVER_HTTPSYS_H_ 1
-+#include "c_util.h"
- #include "transport_config.h"
- #ifdef __cplusplus
-@@ -81,6 +82,7 @@ typedef struct {
-    not the caller is new enough to have supplied a certain parameter.
- */
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_server_httpsys(
-       xmlrpc_env *                        const envP,
-@@ -92,4 +94,4 @@ xmlrpc_server_httpsys(
- }
- #endif /* __cplusplus */
--#endif
-\ No newline at end of file
-+#endif
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/sleep_int.h b/libs/xmlrpc-c/include/xmlrpc-c/sleep_int.h
-index be18e8f..369fd24 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/sleep_int.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/sleep_int.h
-@@ -1,7 +1,18 @@
- #ifndef SLEEP_INT_H_INCLUDED
- #define SLEEP_INT_H_INCLUDED
-+#include "xmlrpc-c/c_util.h"
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_millisecond_sleep(unsigned int const milliseconds);
-+#ifdef __cplusplus
-+}
-+#endif
-+
- #endif
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/string_int.h b/libs/xmlrpc-c/include/xmlrpc-c/string_int.h
-index fa787cb..04ac8c7 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/string_int.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/string_int.h
-@@ -13,22 +13,37 @@
- extern "C" {
- #endif
--extern const char * const xmlrpc_strsol;
-+XMLRPC_DLLEXPORT
-+bool
-+xmlrpc_strnomem(const char * const string);
-+XMLRPC_DLLEXPORT
-+const char *
-+xmlrpc_strnomemval(void);
-+
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_vasprintf(const char ** const retvalP,
-                  const char *  const fmt,
-                  va_list             varargs);
--void GNU_PRINTF_ATTR(2,3)
-+XMLRPC_DLLEXPORT
-+void XMLRPC_PRINTF_ATTR(2,3)
- xmlrpc_asprintf(const char ** const retvalP, const char * const fmt, ...);
-+XMLRPC_DLLEXPORT
- const char *
--xmlrpc_strdupnull(const char * const string);
-+xmlrpc_strdupsol(const char * const string);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_strfree(const char * const string);
-+XMLRPC_DLLEXPORT
-+const char *
-+xmlrpc_strdupnull(const char * const string);
-+
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_strfreenull(const char * const string);
-@@ -46,6 +61,11 @@ xmlrpc_memeq(const void * const a,
-     return (memcmp(a, b, size) == 0);
- }
-+/* strcasecmp doesn't exist on some systems without _BSD_SOURCE, so
-+   xmlrpc_strcaseeq() can't either.
-+*/
-+#ifdef _BSD_SOURCE
-+
- static __inline__ bool
- xmlrpc_strcaseeq(const char * const a,
-                  const char * const b) {
-@@ -59,6 +79,7 @@ xmlrpc_strcaseeq(const char * const a,
-     #error "This platform has no known case-independent string compare fn"
- #endif
- }
-+#endif
- static __inline__ bool
- xmlrpc_strneq(const char * const a,
-@@ -67,16 +88,42 @@ xmlrpc_strneq(const char * const a,
-     return (strncmp(a, b, len) == 0);
- }
-+XMLRPC_DLLEXPORT
- const char * 
- xmlrpc_makePrintable(const char * const input);
-+XMLRPC_DLLEXPORT
- const char *
- xmlrpc_makePrintable_lp(const char * const input,
-                         size_t       const inputLength);
-+XMLRPC_DLLEXPORT
- const char *
- xmlrpc_makePrintableChar(char const input);
-+/*----------------------------------------------------------------*/
-+/* Standard string functions with destination array size checking */
-+/*----------------------------------------------------------------*/
-+#define STRSCPY(A,B) \
-+      (strncpy((A), (B), sizeof(A)), *((A)+sizeof(A)-1) = '\0')
-+#define STRSCMP(A,B) \
-+      (strncmp((A), (B), sizeof(A)))
-+#define STRSCAT(A,B) \
-+    (strncat((A), (B), sizeof(A)-strlen(A)), *((A)+sizeof(A)-1) = '\0')
-+
-+/* We could do this, but it works only in GNU C 
-+#define SSPRINTF(TARGET, REST...) \
-+  (snprintf(TARGET, sizeof(TARGET) , ## REST)) 
-+
-+Or this, but it works only in C99 compilers, which leaves out MSVC
-+before 2005 and can't handle the zero variable argument case except
-+by an MSVC extension:
-+
-+#define SSPRINTF(TARGET, ...) \
-+  (snprintf(TARGET, sizeof(TARGET) , __VA_ARGS__)) 
-+
-+*/
-+
- #ifdef __cplusplus
- }
- #endif
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/string_number.h b/libs/xmlrpc-c/include/xmlrpc-c/string_number.h
-new file mode 100644
-index 0000000..570a192
---- /dev/null
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/string_number.h
-@@ -0,0 +1,21 @@
-+#ifndef STRING_NUMBER_H_INCLUDED
-+#define STRING_NUMBER_H_INCLUDED
-+
-+#include <xmlrpc-c/config.h>
-+#include <xmlrpc-c/util.h>
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+XMLRPC_DLLEXPORT
-+void
-+xmlrpc_parse_int64(xmlrpc_env *   const envP,
-+                   const char *   const str,
-+                   xmlrpc_int64 * const i64P);
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/time_int.h b/libs/xmlrpc-c/include/xmlrpc-c/time_int.h
-index 4db4537..705f2c8 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/time_int.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/time_int.h
-@@ -16,18 +16,22 @@
-   } xmlrpc_timespec;
- #endif
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_gettimeofday(xmlrpc_timespec * const todP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_timegm(const struct tm  * const brokenTime,
-               time_t *           const timeValueP,
-               const char **      const errorP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_localtime(time_t      const datetime,
-                  struct tm * const tmP);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_gmtime(time_t      const datetime,
-               struct tm * const resultP);
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/timeout.hpp b/libs/xmlrpc-c/include/xmlrpc-c/timeout.hpp
-index ef347e5..1da4a2f 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/timeout.hpp
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/timeout.hpp
-@@ -1,13 +1,16 @@
- #ifndef XMLRPC_TIMEOUT_H_INCLUDED
- #define XMLRPC_TIMEOUT_H_INCLUDED
-+#include <xmlrpc-c/c_util.h>
-+
- namespace xmlrpc_c {
--struct timeout {
-+struct XMLRPC_DLLEXPORT timeout {
-     timeout() : finite(false) {}
--    timeout(unsigned int const duration) : duration(duration) {}
-+    timeout(unsigned int const duration) :
-+        finite(true), duration(duration) {}
-         // 'duration' is the timeout time in milliseconds
-     bool finite;
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/transport.h b/libs/xmlrpc-c/include/xmlrpc-c/transport.h
-index 13d901f..be53e18 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/transport.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/transport.h
-@@ -38,12 +38,17 @@ typedef void (*xmlrpc_transport_asynch_complete)(
-     xmlrpc_mem_block *        const responseXmlP,
-     xmlrpc_env                const env);
-+typedef void (*xmlrpc_transport_progress)(
-+    struct xmlrpc_call_info *   const callInfoP,
-+    struct xmlrpc_progress_data const data);
-+
- typedef void (*xmlrpc_transport_send_request)(
-     xmlrpc_env *                     const envP, 
-     struct xmlrpc_client_transport * const clientTransportP,
-     const xmlrpc_server_info *       const serverP,
-     xmlrpc_mem_block *               const xmlP,
-     xmlrpc_transport_asynch_complete       complete,
-+    xmlrpc_transport_progress              progress,
-     struct xmlrpc_call_info *        const callInfoP);
- typedef void (*xmlrpc_transport_call)(
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/transport_int.h b/libs/xmlrpc-c/include/xmlrpc-c/transport_int.h
-deleted file mode 100644
-index 80b92ca..0000000
---- a/libs/xmlrpc-c/include/xmlrpc-c/transport_int.h
-+++ /dev/null
-@@ -1,42 +0,0 @@
--/* Copyright information is at the end of the file */
--#ifndef  XMLRPC_TRANSPORT_INT_H_INCLUDED
--#define  XMLRPC_TRANSPORT_INT_H_INCLUDED
--
--#ifdef __cplusplus
--extern "C" {
--#endif
--
--#include "pthreadx.h" /* For threading helpers. */
--
--/*=========================================================================
--**  Transport Helper Functions and declarations.
--**=========================================================================
--*/
--typedef struct _running_thread_info
--{
--    struct _running_thread_info * Next;
--    struct _running_thread_info * Last;
--
--    pthread_t _thread;
--} running_thread_info;
--
--
--/* list of running Async callback functions. */
--typedef struct _running_thread_list
--{
--    running_thread_info * AsyncThreadHead;
--    running_thread_info * AsyncThreadTail;
--} running_thread_list;
--
--/* MRB-WARNING: Only call when you have successfully
--**     acquired the Lock/Unlock mutex! */
--void register_asynch_thread (running_thread_list *list, pthread_t *thread);
--
--/* MRB-WARNING: Only call when you have successfully
--**     acquired the Lock/Unlock mutex! */
--void unregister_asynch_thread (running_thread_list *list, pthread_t *thread);
--
--
--#ifdef __cplusplus
--}
--#endif
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/util.h b/libs/xmlrpc-c/include/xmlrpc-c/util.h
-index 2cad286..3a6404d 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/util.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/util.h
-@@ -4,7 +4,10 @@
-   This is the interface to the libxmlrpc_util library, which contains
-   utility routines that have nothing to do with XML-RPC.  The library
--  exists because other Xmlrpc-c libraries use the utilities.
-+  exists primarily because other Xmlrpc-c libraries use the utilities,
-+  but the utilities are also documented for use by Xmlrpc-c users.
-+  For use by Xmlrpc-c users, they are considered to be part of the
-+  libxmlrpc library.  libxmlrpc_util is a prerequisite of libxmlrpc.
-   By Bryan Henderson, San Jose, CA 05.09.21.
-@@ -18,7 +21,7 @@
- #include <stdarg.h>
- #include <xmlrpc-c/config.h>  /* Defines XMLRPC_HAVE_WCHAR */
--#include <xmlrpc-c/c_util.h>  /* for GNU_PRINTF_ATTR */
-+#include <xmlrpc-c/c_util.h>  /* for XMLRPC_PRINTF_ATTR */
- #if XMLRPC_HAVE_WCHAR
- #include <wchar.h>
-@@ -28,7 +31,6 @@
- extern "C" {
- #endif
--
- /*=========================================================================
- **  C struct size computations
- **=======================================================================*/
-@@ -40,7 +42,7 @@ extern "C" {
- */
- #define _XMLRPC_STRUCT_MEMBER_OFFSET(TYPE, MBRNAME) \
--  ((unsigned long)(char*)&((TYPE *)0)->MBRNAME)
-+  ((size_t)(char*)&((TYPE *)0)->MBRNAME)
- #define _XMLRPC_STRUCT_MEMBER_SIZE(TYPE, MBRNAME) \
-   sizeof(((TYPE *)0)->MBRNAME)
- #define XMLRPC_STRUCTSIZE(TYPE, MBRNAME) \
-@@ -71,6 +73,7 @@ extern "C" {
- #define XMLRPC_ASSERT(cond) while (0) {}
- #endif
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_assertion_failed(const char * const fileName,
-                         int          const lineNumber);
-@@ -124,38 +127,44 @@ typedef struct _xmlrpc_env {
- /* Initialize and destroy the contents of the provided xmlrpc_env object.
- ** These functions will never fail. */
-+XMLRPC_DLLEXPORT
- void xmlrpc_env_init (xmlrpc_env* env);
-+XMLRPC_DLLEXPORT
- void xmlrpc_env_clean (xmlrpc_env* const env);
- /* Fill out an xmlrpc_fault with the specified values, and set the
- ** fault_occurred flag. This function will make a private copy of 'string',
- ** so you retain responsibility for your copy. */
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_env_set_fault(xmlrpc_env * const env, 
-                      int          const faultCode, 
-                      const char * const faultDescription);
- /* The same as the above, but using varargs */
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_set_fault_formatted_v(xmlrpc_env * const envP,
-                              int          const code,
-                              const char * const format,
--                             va_list      const args);
-+                             va_list            args);
- /* The same as the above, but using a printf-style format string. */
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_env_set_fault_formatted(xmlrpc_env * const envP, 
-                                int          const code,
-                                const char * const format, 
--                               ...) GNU_PRINTF_ATTR(3,4);
-+                               ...) XMLRPC_PRINTF_ATTR(3,4);
- /* This one infers XMLRPC_INTERNAL_ERROR and has a shorter name.
-    So a call takes up less source code space.
- */
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_faultf(xmlrpc_env * const envP,
-               const char * const format,
--              ...) GNU_PRINTF_ATTR(2,3);
-+              ...) XMLRPC_PRINTF_ATTR(2,3);
- /* A simple debugging assertion. */
- #define XMLRPC_ASSERT_ENV_OK(envP) \
-@@ -223,32 +232,40 @@ typedef struct _xmlrpc_mem_block {
- } xmlrpc_mem_block;
- /* Allocate a new xmlrpc_mem_block. */
-+XMLRPC_DLLEXPORT
- xmlrpc_mem_block* xmlrpc_mem_block_new (xmlrpc_env* const env, size_t const size);
- /* Destroy an existing xmlrpc_mem_block, and everything it contains. */
-+XMLRPC_DLLEXPORT
- void xmlrpc_mem_block_free (xmlrpc_mem_block* const block);
- /* Initialize the contents of the provided xmlrpc_mem_block. */
-+XMLRPC_DLLEXPORT
- void xmlrpc_mem_block_init
-     (xmlrpc_env* const env, xmlrpc_mem_block* const block, size_t const size);
- /* Deallocate the contents of the provided xmlrpc_mem_block, but not the
- ** block itself. */
-+XMLRPC_DLLEXPORT
- void xmlrpc_mem_block_clean (xmlrpc_mem_block* const block);
- /* Get the size and contents of the xmlrpc_mem_block. */
-+XMLRPC_DLLEXPORT
- size_t 
- xmlrpc_mem_block_size(const xmlrpc_mem_block * const block);
-+XMLRPC_DLLEXPORT
- void * 
- xmlrpc_mem_block_contents(const xmlrpc_mem_block * const block);
- /* Resize an xmlrpc_mem_block, preserving as much of the contents as
- ** possible. */
-+XMLRPC_DLLEXPORT
- void xmlrpc_mem_block_resize
-     (xmlrpc_env* const env, xmlrpc_mem_block* const block, size_t const size);
- /* Append data to an existing xmlrpc_mem_block. */
-+XMLRPC_DLLEXPORT
- void xmlrpc_mem_block_append
-     (xmlrpc_env* const env, xmlrpc_mem_block* const block, const void * const data, size_t const len);
-@@ -295,12 +312,14 @@ void xmlrpc_mem_block_append
- **  UTF-8 Encoding and Decoding
- **=======================================================================*/
-+XMLRPC_DLLEXPORT
- void 
- xmlrpc_validate_utf8(xmlrpc_env * const envP,
-                      const char * const utf8Data,
-                      size_t       const utf8Len);
- /* Decode a UTF-8 string. */
-+XMLRPC_DLLEXPORT
- xmlrpc_mem_block *
- xmlrpc_utf8_to_wcs(xmlrpc_env * const envP,
-                    const char * const utf8_data,
-@@ -309,15 +328,18 @@ xmlrpc_utf8_to_wcs(xmlrpc_env * const envP,
- /* Encode a UTF-8 string. */
- #if XMLRPC_HAVE_WCHAR
-+XMLRPC_DLLEXPORT
- xmlrpc_mem_block *
- xmlrpc_wcs_to_utf8(xmlrpc_env *    const envP,
-                    const wchar_t * const wcsData,
-                    size_t          const wcsLen);
- #endif
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_force_to_utf8(char * const buffer);
-+XMLRPC_DLLEXPORT
- void
- xmlrpc_force_to_xml_chars(char * const buffer);
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/util_int.h b/libs/xmlrpc-c/include/xmlrpc-c/util_int.h
-index 8dbc11c..db5c5e9 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/util_int.h
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/util_int.h
-@@ -1,14 +1,19 @@
- #ifndef XMLRPC_C_UTIL_INT_H_INCLUDED
- #define XMLRPC_C_UTIL_INT_H_INCLUDED
-+/* This file contains facilities for use by Xmlrpc-c code, but not intended
-+   to be included in a user compilation.
-+
-+   Names in here might conflict with other names in a user's compilation
-+   if included in a user compilation.
-+
-+   The facilities may change in future releases.
-+*/
-+
- #include "util.h"
--#ifndef MIN
- #define MIN(a,b) ((a) < (b) ? (a) : (b))
--#endif
--#ifndef MAX
- #define MAX(a,b) ((a) > (b) ? (a) : (b))
--#endif
- /* When we deallocate a pointer in a struct, we often replace it with
- ** this and throw in a few assertions here and there. */
-diff --git a/libs/xmlrpc-c/include/xmlrpc-c/xml.hpp b/libs/xmlrpc-c/include/xmlrpc-c/xml.hpp
-index a77731f..9e6ca90 100644
---- a/libs/xmlrpc-c/include/xmlrpc-c/xml.hpp
-+++ b/libs/xmlrpc-c/include/xmlrpc-c/xml.hpp
-@@ -2,31 +2,53 @@
- #define XML_HPP_INCLUDED
- #include <string>
-+#include <xmlrpc-c/c_util.h>
- #include <xmlrpc-c/base.hpp>
- namespace xmlrpc_c {
- namespace xml {
-+XMLRPC_DLLEXPORT
- void
- generateCall(std::string         const& methodName,
-              xmlrpc_c::paramList const& paramList,
-              std::string *       const  callXmlP);
-     
-+XMLRPC_DLLEXPORT
- void
- generateCall(std::string         const& methodName,
-              xmlrpc_c::paramList const& paramList,
-              xmlrpc_dialect      const  dialect,
-              std::string *       const  callXmlP);
-     
-+XMLRPC_DLLEXPORT
-+void
-+parseCall(std::string           const& callXml,
-+          std::string *         const  methodNameP,
-+          xmlrpc_c::paramList * const  paramListP);
-+
-+XMLRPC_DLLEXPORT
-+void
-+generateResponse(xmlrpc_c::rpcOutcome const& outcome,
-+                 xmlrpc_dialect       const  dialect,
-+                 std::string *        const  respXmlP);
-+
-+XMLRPC_DLLEXPORT
-+void
-+generateResponse(xmlrpc_c::rpcOutcome const& outcome,
-+                 std::string *        const  respXmlP);
-+
-+XMLRPC_DLLEXPORT
- void
- parseSuccessfulResponse(std::string       const& responseXml,
-                         xmlrpc_c::value * const  resultP);
-+XMLRPC_DLLEXPORT
- void
- parseResponse(std::string            const& responseXml,
-               xmlrpc_c::rpcOutcome * const  outcomeP);
--
-+XMLRPC_DLLEXPORT
- void
- trace(std::string const& label,
-       std::string const& xml);
-diff --git a/libs/xmlrpc-c/irix-common.make b/libs/xmlrpc-c/irix-common.make
-deleted file mode 100644
-index 9f4ac62..0000000
---- a/libs/xmlrpc-c/irix-common.make
-+++ /dev/null
-@@ -1,31 +0,0 @@
--# -*-makefile-*-    <-- an Emacs control
--
--# See unix-common.make for an explanation of this file.  This file is
--# analogous to unix-common.make, but is for an Irix system.
--
--SONAME = $(@:%.$(MAJ):%)
--
--SHLIB_CMD = $(CCLD) $(LDFLAGS_SHLIB) -o $@ $^ $(LADD)
--
--SHLIB_LE_TARGETS = $(call shliblefn, $(SHARED_LIBS_TO_BUILD))
--
--$(SHLIB_LE_TARGETS):%:%.$(MAJ)
--      rm -f $@
--      $(LN_S) $< $@
--
--
--.PHONY: $(SHLIB_INSTALL_TARGETS)
--.PHONY: install-shared-libraries
--
--SHLIB_INSTALL_TARGETS = $(SHARED_LIBS_TO_INSTALL:%=%/install)
--
--#SHLIB_INSTALL_TARGETS is like "libfoo/install libbar/install"
--
--install-shared-libraries: $(SHLIB_INSTALL_TARGETS)
--
--$(SHLIB_INSTALL_TARGETS):%/install:%.$(SHLIB_SUFFIX).$(MAJ)
--# $< is a library file name, e.g. libfoo.so.3.1 .
--      $(INSTALL_SHLIB) $< $(DESTDIR)$(LIBINST_DIR)/$<
--      cd $(DESTDIR)$(LIBINST_DIR); \
--        rm -f $< $(<:%.$(MAJ)=%); \
--        $(LN_S) $< $(<:%.$(MAJ)=%)
-diff --git a/libs/xmlrpc-c/irix-common.mk b/libs/xmlrpc-c/irix-common.mk
-new file mode 100644
-index 0000000..b0c936e
---- /dev/null
-+++ b/libs/xmlrpc-c/irix-common.mk
-@@ -0,0 +1,31 @@
-+# -*-makefile-*-    <-- an Emacs control
-+
-+# See unix-common.mk for an explanation of this file.  This file is
-+# analogous to unix-common.mk, but is for an Irix system.
-+
-+SONAME = $(@:%.$(MAJ):%)
-+
-+SHLIB_CMD = $(CCLD) $(LADD) $(LDFLAGS_SHLIB) -o $@ $^ 
-+
-+SHLIB_LE_TARGETS = $(call shliblefn, $(SHARED_LIBS_TO_BUILD))
-+
-+$(SHLIB_LE_TARGETS):%:%.$(MAJ)
-+      rm -f $@
-+      $(LN_S) $< $@
-+
-+
-+.PHONY: $(SHLIB_INSTALL_TARGETS)
-+.PHONY: install-shared-libraries
-+
-+SHLIB_INSTALL_TARGETS = $(SHARED_LIBS_TO_INSTALL:%=%/install)
-+
-+#SHLIB_INSTALL_TARGETS is like "libfoo/install libbar/install"
-+
-+install-shared-libraries: $(SHLIB_INSTALL_TARGETS)
-+
-+$(SHLIB_INSTALL_TARGETS):%/install:%.$(SHLIB_SUFFIX).$(MAJ)
-+# $< is a library file name, e.g. libfoo.so.3.1 .
-+      $(INSTALL_SHLIB) $< $(DESTDIR)$(LIBINST_DIR)/$<
-+      cd $(DESTDIR)$(LIBINST_DIR); \
-+        rm -f $< $(<:%.$(MAJ)=%); \
-+        $(LN_S) $< $(<:%.$(MAJ)=%)
-diff --git a/libs/xmlrpc-c/lib/Makefile.depend b/libs/xmlrpc-c/lib/Makefile.depend
-deleted file mode 100644
-index e69de29..0000000
-diff --git a/libs/xmlrpc-c/lib/abyss/.cvsignore b/libs/xmlrpc-c/lib/abyss/.cvsignore
-deleted file mode 100644
-index e69de29..0000000
-diff --git a/libs/xmlrpc-c/lib/abyss/Makefile.depend b/libs/xmlrpc-c/lib/abyss/Makefile.depend
-deleted file mode 100644
-index e69de29..0000000
-diff --git a/libs/xmlrpc-c/lib/abyss/change.log b/libs/xmlrpc-c/lib/abyss/change.log
-deleted file mode 100644
-index 2d32d1a..0000000
---- a/libs/xmlrpc-c/lib/abyss/change.log
-+++ /dev/null
-@@ -1,34 +0,0 @@
--                     Change log for the ABYSS Web Server
--                     -----------------------------------
--
--Version 0.3 (March 23,2000):
------------------------------
--* Handles conditional GET requests (by date)
--* Conforms to all the MUSTs of the RFC2616 (newer version of the HTTP/1.1 protocol draft)
--* New configuration options (such as pidfile for UNIX systems...)
--* Handles HEAD and OPTIONS methods
--* Many bug fixes
--* Tested on Sun-OS 5.7
--* Second public release
--
--Version 0.2 beta (February 7,2000):
-------------------------------------
--* Handles GET on static files
--* Handles correctly range requests
--* Conforms to 80% of the MUSTs of the RFC2068 (HTTP/1.1 protocol draft)
--* Improved code portability (Win32 and UNIX platforms)
--* Tested on Linux 2.2 and Win95/98
--* First public release
--
--Version 0.1 (January 2000):
-----------------------------
--* Completely rewritten in C
--* Speed improvement
--* New memory allocation scheme (using pools)
--* Never released
--
--Version 0.0 (January 2000):
-----------------------------
--* Initial version
--* Written in C++
--* Never released
-\ No newline at end of file
-diff --git a/libs/xmlrpc-c/lib/abyss/htdocs/index.htm b/libs/xmlrpc-c/lib/abyss/htdocs/index.htm
-deleted file mode 100644
-index f0369a5..0000000
---- a/libs/xmlrpc-c/lib/abyss/htdocs/index.htm
-+++ /dev/null
-@@ -1,21 +0,0 @@
--<HTML>
--<HEAD>
--<TITLE>ABYSS is working !!!</TITLE>
--</HEAD>
--<BODY bgColor=#80a0f0 text=#000000>
--<H1 align=center>Congratulations, ABYSS is working !!!</H1>
--<BR>
--<P>
--<B>ABYSS</B> Web Server is working correctly on your system. You should now change this
--page with yours.
--<BR>
--Please include in your web pages (at least the first), the <b><i>'Powered by ABYSS'</i></b>
--banner to promote the use of <B>ABYSS</B>.
--</P>
--<hr>
--<P>
--<CENTER><FONT size=-1>
--Copyright © 2000 <A href="mailto:mmoez@bigfoot.com">Moez Mahfoudh</A>. All rights reserved.
--</FONT>
--<BR><BR><A href="http://abyss.linuxave.net/"><IMG border=0 src="pwrabyss.gif"></A></center></P>
--</BODY></HTML>
-diff --git a/libs/xmlrpc-c/lib/abyss/patch_notes.txt b/libs/xmlrpc-c/lib/abyss/patch_notes.txt
-deleted file mode 100644
-index 8ca4f77..0000000
---- a/libs/xmlrpc-c/lib/abyss/patch_notes.txt
-+++ /dev/null
-@@ -1,114 +0,0 @@
--Notes about the Abyss Patch -- By: Rosimildo da Silva, Jan 31, 2001.
---------------------------------------------------------------------
--
--This file contains some notes about the changes made to the
--Abyss source tree. The changes were required to fix a few 
--bugs, and port the base code to compile under CygWin,
--and Borland C++ free compiler. The free compiler for 
--Win32 from Borland can be downloaded from here:
--
--  http://www.borland.com/bcppbuilder/freecompiler/
--
--
--What is new:
--
--    + Package should compile out of the box under CygWin
--
--    + Added makefiles and changes to use Borland C++ compiler
--under WIN32 as well as VC++ 6.0
--
--    + Fix Abyss.dsp to use the proper thread safe libraries,
--and updated to VC++ 6.0
--
--    + Fixed thread leaks ( handles )
--
--
--
--Applying the patch to Abyss-0.3.tar.gz
----------------------------------------
--
--   + get archive from here:
--      http://abyss.linuxave.net/abyss-0.3.tar.gz
--WARNING: this site seems to be dead for the last two months.
--
--   + cd /work ( any dir )
--     tar xzvf abyss-0.3.tar.gz
--       cd abyss
--       patch -p1 <abyss-0.3-20010131.patch
--
--
--What to do next:
--
--
--   a) Cygwin
--
--      cd abyss/src
--      make
--       
--
--   b) Borland C++
--
--      cd abyss\src
--      set BCC_PATH=<location where your compiler is located>
--      ( BCC_PATH=d:\bcb5 )
--
--      make -f makefile.bcc32
--
--   c) VC++ 6.0                        
--      cd abyss\src
--      msdev Abyss.dsp
--      ( Or just open the workspace with Visual Studio, and you know
--      the drill ).
--NOTE: Under Cygwin, after I apply the patch, Visual Studio was unable to
--recognize the workspace. ???
--
--
--List of changes done to the ABYSS http server: ( ChangesLog )
------------------------------------------------
--
-- + changed _WIN32 to ABYSS_WIN32. THis solve the problem that the
--macro _WIN32 is defined under CygWin. CygWin has a unix like
--api ( _UNIX ), so the macro _UNIX should be defined then.
--Under CygWin we would have _UNIX and _WIN32 defined at the same
--time.
--
--
-- + Theead API -- Added two extra functions: ThreadExit() and
--ThreadClose(). These allows the resources of the threads to be
--released when the thread has complete its duty serving the
--request.
--
-- + Added extra flag to TConn structure to make possible the
--management of the worker threads by the server.
--
--
-- + Changed allocation of TConn array from stack to heap. This
--would cause problems on certain system ( specially embedded systems ),
--where the stack sizes arr not that large.
--
-- + Changed ServerRun to free thread resources when the connection
--for the thread is closed.
--
-- + Changed main.c to make the sginal registration conforming with
--the usage of the _FORK option.
--
-- + Change ThreadCreate to be able to specify the "stack size" of the
--worker's threads ( pthread ). Defined lable for it.
--
--
-- + Added flag _NO_USERS to disable check for users and groups.
--This is useful for embedded systems where no users are available.
--
-- + Updated VC++ workspace to version 6.0
--
--
-- + Changed the creation of the thread under WIN32 to use a RTL
--function ( _beginthreadex ), as recommend by MS, instead of using 
--the naked WIN32 API.
--
---- 
--Rosimildo da Silva            rdasilva@connectel.com 
--ConnectTel, Inc.              Austin, TX -- USA      
--Phone : 512-338-1111          Fax : 512-918-0449     
--Company Page:  http://www.connecttel.com             
--Home Page:     http://members.nbci.com/rosimildo/
-diff --git a/libs/xmlrpc-c/lib/abyss/readme.txt b/libs/xmlrpc-c/lib/abyss/readme.txt
-deleted file mode 100644
-index c42ca1f..0000000
---- a/libs/xmlrpc-c/lib/abyss/readme.txt
-+++ /dev/null
-@@ -1,160 +0,0 @@
--
--
--                              ABYSS Web Server
--                             ------------------
--
--
--About:
--------
--
--ABYSS aims to be a fully HTTP/1.1 compliant web server. Its main design
--goals are speed, low resource usage and portability. ABYSS works on most
--UNIX based systems and on Win32 systems (Win95/98/2000/NT).
--
--Copyright:
------------
--
--Copyright (C) 2000 Moez Mahfoudh. All rights reserved.
--
--Status:
---------
--
--ABYSS is still in development stage. Actual version is 0.3. Many features
--are not implemented yet but the server core works well and seems to be
--stable. It is fully reliable for serving static files on medium load sites.
--In fact, primary benchmarks show that ABYSS is 70% as fast as Apache when
--using the fork system. This rate jumps to 130% when using threads.
--On UNIX platforms, some problems occurred because of the use of the Pthreads
--library. This will be corrected in the future versions. That's why only the
--fork system is usable under UNIX. This lowers performances but guarantees
--stability.
--CGI/1.1 support is still absent from the current version but will be
--included in the near future.
--
--Change Log:
-------------
--
--   * Version 0.3 (March 23,2000):
--        o Handles conditional GET requests (by date)
--        o Conforms to all the MUSTs of the RFC2616 (newer version of the
--          HTTP/1.1 protocol draft)
--        o New configuration options (such as pidfile for UNIX systems...)
--        o Handles HEAD and OPTIONS methods
--        o Many bug fixes
--        o Tested on Sun-OS 5.7
--        o Second public release
--
--   * Version 0.2 beta (February 7,2000):
--        o Handles GET on static files
--        o Handles correctly range requests
--        o Conforms to 80% of the MUSTs of the RFC2068 (HTTP/1.1 protocol
--          draft)
--        o Improved code portability (Win32 and UNIX platforms)
--        o Tested on Linux 2.2 and Win95/98
--        o First public release
--
--   * Version 0.1 (January 2000):
--        o Completely rewritten in C
--        o Speed improvement
--        o New memory allocation scheme (using pools)
--        o Never released
--
--   * Version 0.0 (January 2000):
--        o Initial version
--        o Written in C++
--        o Never released
--
--Downloading:
--------------
--
--   * Version 0.3 (current version):
--        o UNIX package (source) abyss-0.3.tar.gz.
--        o Win32 package is not available but you can extract source files
--          from the UNIX package and compile them on Windows without any
--          modification. (Sorry for this inconvenience: I have no Windows
--          machine now to compile the program and to test it. If someone can
--          do that, please email me the zipped package and I'll add it here).
--
--   * Version 0.2 beta:
--        o UNIX package (source) abyss-0.2b.tar.gz.
--        o Win32 package (source+binary) abyss-0.2b.zip.
--
--Installation:
---------------
--
--   * For UNIX systems:
--        o Untar/Ungzip the distribution package with a command like tar xvfz
--          abyss-x.y.tar.gz
--        o Edit the Makefile src/Makefile to meet your system requirements.
--        o Go to directory src and execute make.
--        o The server binary is generated and stored in the bin directory.
--        o Edit the conf/abyss.conf to reflect your system configuration (At
--          least change the paths).
--        o Goto to the bin directory and start the server by typing ./abyss
--          -c ../conf/abyss.conf
--
--   * For Win32 systems:
--        o Unzip the distribution package.
--        o An executable file is already present in the bin directory.
--        o If you wish to recompile the server, open the src/abyss.dsw file
--          with Microsoft Visual C++ 5.0 or higher and rebuild the project.
--        o Edit the conf/abyss.conf to reflect your system configuration (At
--          least change the paths).
--        o Goto to the bin directory and start the server by typing ./abyss
--          -c ../conf/abyss.conf
--
--Configuration:
----------------
--
--Edit the conf/abyss.conf file and change the values of the available
--options.
--
--Bugs:
-------
--
--Please email bug reports to mmoez@bigfoot.com
--
--To do:
--------
--
--   * CGI/1.1 support
--   * Web based configuration/administration
--   * Speed improvement
--   * File caching system
--   * Throttling
--   * PUT method handling
--   * ...
--
--License:
----------
--
--ABYSS Web Server is licensed under a modified BSD type license:
--
--     Copyright (C) 2000 Moez Mahfoudh. 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 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.
--        * The name of the author may not be used to endorse or promote
--          products derived from this software without specific prior
--          written permission.
--
--     THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
-diff --git a/libs/xmlrpc-c/lib/abyss/src/.cvsignore b/libs/xmlrpc-c/lib/abyss/src/.cvsignore
-deleted file mode 100644
-index e69de29..0000000
-diff --git a/libs/xmlrpc-c/lib/abyss/src/Abyss.dsp b/libs/xmlrpc-c/lib/abyss/src/Abyss.dsp
-deleted file mode 100644
-index c989392..0000000
---- a/libs/xmlrpc-c/lib/abyss/src/Abyss.dsp
-+++ /dev/null
-@@ -1,136 +0,0 @@
--# Microsoft Developer Studio Project File - Name="Abyss" - Package Owner=<4>\r
--# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
--# ** DO NOT EDIT **\r
--\r
--# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
--\r
--CFG=Abyss - Win32 Debug\r
--!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
--!MESSAGE use the Export Makefile command and run\r
--!MESSAGE \r
--!MESSAGE NMAKE /f "Abyss.mak".\r
--!MESSAGE \r
--!MESSAGE You can specify a configuration when running NMAKE\r
--!MESSAGE by defining the macro CFG on the command line. For example:\r
--!MESSAGE \r
--!MESSAGE NMAKE /f "Abyss.mak" CFG="Abyss - Win32 Debug"\r
--!MESSAGE \r
--!MESSAGE Possible choices for configuration are:\r
--!MESSAGE \r
--!MESSAGE "Abyss - Win32 Release" (based on "Win32 (x86) Console Application")\r
--!MESSAGE "Abyss - Win32 Debug" (based on "Win32 (x86) Console Application")\r
--!MESSAGE \r
--\r
--# Begin Project\r
--# PROP AllowPerConfigDependencies 0\r
--CPP=cl.exe\r
--RSC=rc.exe\r
--\r
--!IF  "$(CFG)" == "Abyss - Win32 Release"\r
--\r
--# PROP BASE Use_MFC 0\r
--# PROP BASE Use_Debug_Libraries 0\r
--# PROP BASE Output_Dir "Release"\r
--# PROP BASE Intermediate_Dir "Release"\r
--# PROP BASE Target_Dir ""\r
--# PROP Use_MFC 0\r
--# PROP Use_Debug_Libraries 0\r
--# PROP Output_Dir "../bin"\r
--# PROP Intermediate_Dir "objs"\r
--# PROP Ignore_Export_Lib 0\r
--# PROP Target_Dir ""\r
--# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c\r
--# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "ABYSS_WIN32" /YX /FD /c\r
--# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
--# ADD RSC /l 0x40c /d "NDEBUG"\r
--BSC32=bscmake.exe\r
--# ADD BASE BSC32 /nologo\r
--# ADD BSC32 /nologo\r
--LINK32=link.exe\r
--# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
--# ADD LINK32 kernel32.lib user32.lib wsock32.lib /nologo /subsystem:console /machine:I386\r
--\r
--!ELSEIF  "$(CFG)" == "Abyss - Win32 Debug"\r
--\r
--# PROP BASE Use_MFC 0\r
--# PROP BASE Use_Debug_Libraries 1\r
--# PROP BASE Output_Dir "Debug"\r
--# PROP BASE Intermediate_Dir "Debug"\r
--# PROP BASE Target_Dir ""\r
--# PROP Use_MFC 0\r
--# PROP Use_Debug_Libraries 1\r
--# PROP Output_Dir "../bin"\r
--# PROP Intermediate_Dir "objs"\r
--# PROP Ignore_Export_Lib 0\r
--# PROP Target_Dir ""\r
--# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c\r
--# ADD CPP /nologo /MT /W3 /Gm /GX /ZI /Od /I "../../../" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "ABYSS_WIN32" /YX /FD /c\r
--# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
--# ADD RSC /l 0x40c /d "_DEBUG"\r
--BSC32=bscmake.exe\r
--# ADD BASE BSC32 /nologo\r
--# ADD BSC32 /nologo\r
--LINK32=link.exe\r
--# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
--# ADD LINK32 kernel32.lib user32.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
--\r
--!ENDIF \r
--\r
--# Begin Target\r
--\r
--# Name "Abyss - Win32 Release"\r
--# Name "Abyss - Win32 Debug"\r
--# Begin Group "Source Files"\r
--\r
--# PROP Default_Filter "c"\r
--# Begin Source File\r
--\r
--SOURCE=.\conf.c\r
--# End Source File\r
--# Begin Source File\r
--\r
--SOURCE=.\conn.c\r
--# End Source File\r
--# Begin Source File\r
--\r
--SOURCE=.\data.c\r
--# End Source File\r
--# Begin Source File\r
--\r
--SOURCE=.\file.c\r
--# End Source File\r
--# Begin Source File\r
--\r
--SOURCE=.\http.c\r
--# End Source File\r
--# Begin Source File\r
--\r
--SOURCE=.\main.c\r
--# End Source File\r
--# Begin Source File\r
--\r
--SOURCE=.\server.c\r
--# End Source File\r
--# Begin Source File\r
--\r
--SOURCE=.\socket.c\r
--# End Source File\r
--# Begin Source File\r
--\r
--SOURCE=.\thread.c\r
--# End Source File\r
--# Begin Source File\r
--\r
--SOURCE=.\trace.c\r
--# End Source File\r
--# End Group\r
--# Begin Group "Header Files"\r
--\r
--# PROP Default_Filter "h"\r
--# Begin Source File\r
--\r
--SOURCE=.\abyss.h\r
--# End Source File\r
--# End Group\r
--# End Target\r
--# End Project\r
-diff --git a/libs/xmlrpc-c/lib/abyss/src/Abyss.dsw b/libs/xmlrpc-c/lib/abyss/src/Abyss.dsw
-deleted file mode 100644
-index 4e27c99..0000000
---- a/libs/xmlrpc-c/lib/abyss/src/Abyss.dsw
-+++ /dev/null
-@@ -1,29 +0,0 @@
--Microsoft Developer Studio Workspace File, Format Version 6.00
--# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
--
--###############################################################################
--
--Project: "Abyss"=.\Abyss.dsp - Package Owner=<4>
--
--Package=<5>
--{{{
--}}}
--
--Package=<4>
--{{{
--}}}
--
--###############################################################################
--
--Global:
--
--Package=<5>
--{{{
--}}}
--
--Package=<3>
--{{{
--}}}
--
--###############################################################################
--
-diff --git a/libs/xmlrpc-c/lib/abyss/src/Makefile b/libs/xmlrpc-c/lib/abyss/src/Makefile
-index fc57122..b3f39ef 100644
---- a/libs/xmlrpc-c/lib/abyss/src/Makefile
-+++ b/libs/xmlrpc-c/lib/abyss/src/Makefile
-@@ -50,7 +50,7 @@ MAJ=3
- include $(SRCDIR)/common.mk
--CFLAGS = $(CFLAGS_COMMON) -D_UNIX $(CFLAGS_PERSONAL) $(CADD)
-+CFLAGS_LOCAL = -D_UNIX
- INCLUDES = -Iblddir -Isrcdir -Isrcdir/include -Isrcdir/lib/util/include
-@@ -59,27 +59,23 @@ ABYSS_SHLIB = $(call shlibfn,libxmlrpc_abyss)
- ABYSS_SHLIBLE = $(call shliblefn,libxmlrpc_abyss)
- #ABYSS_SHLIBLE is e.g. libxmlrpc_abyss.so
--# LIBDEP is the shared libraries on which libxmlrpc_abyss depends.
--# The runtime loader should load these libraries when it loads libxmlrpc_abyss.
--
--LIBDEP = $(LIBXMLRPC_UTIL)
--
--ifneq ($(SHARED_LIB_TYPE),NONE)
--  TARGET_SHARED_LIBS := $(ABYSS_SHLIB) $(ABYSS_SHLIBLE)
--  endif
--
- # This 'common.mk' dependency makes sure the symlinks get built before
- # this make file is used for anything.
- $(SRCDIR)/common.mk: srcdir blddir
- .PHONY: all
--all: libxmlrpc_abyss.a $(TARGET_SHARED_LIBS) $(TARGET_SHARED_LE_LIBS)
-+all: libxmlrpc_abyss.a $(TARGET_SHARED_LIBRARIES) $(TARGET_SHARED_LE_LIBS)
--# Rule for this is in common.mk, courtesy of TARGET_SHARED_LIBRARIES:
--$(ABYSS_SHLIB): $(TARGET_MODS:%=%.osh) $(LIBDEP)
--$(ABYSS_SHLIB): LIBOBJECTS = $(TARGET_MODS:%=%.osh) $(LIBDEP)
-+# Rule for this is in common.mk, courtesy of TARGET_LIBRARY_NAMES
-+$(ABYSS_SHLIB): $(TARGET_MODS:%=%.osh) \
-+      $(LIBXMLRPC_UTIL)
-+$(ABYSS_SHLIB): LIBOBJECTS = $(TARGET_MODS:%=%.osh)
-+$(ABYSS_SHLIB): LIBDEP = -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
-+ifeq ($(ENABLE_ABYSS_THREADS),yes)
-+  $(ABYSS_SHLIB):  LIBDEP += -lpthread
-+endif
- # Rule for this is in common.mk, courtesy of TARGET_STATIC_LIBRARIES:
-@@ -94,7 +90,7 @@ libxmlrpc_abyss.a: LIBOBJECTS = $(TARGET_MODS:%=%.o)
- # Abyss library are in common.mk, courtesy of TARGET_MODS.
--# Need this dependency for those who don't use Makefile.depend.
-+# Need this dependency for those who don't use depend.mk.
- # Without it, version.h doesn't get created.
- response.o response.osh handler.o handler.osh: version.h
-@@ -116,4 +112,4 @@ install: install-common
- .PHONY: dep
- dep: dep-common
--include Makefile.depend
-+include depend.mk
-diff --git a/libs/xmlrpc-c/lib/abyss/src/Makefile.depend b/libs/xmlrpc-c/lib/abyss/src/Makefile.depend
-deleted file mode 100644
-index e69de29..0000000
-diff --git a/libs/xmlrpc-c/lib/abyss/src/channel.c b/libs/xmlrpc-c/lib/abyss/src/channel.c
-index af81c62..5044e23 100644
---- a/libs/xmlrpc-c/lib/abyss/src/channel.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/channel.c
-@@ -13,6 +13,7 @@
- #include <stdlib.h>
- #include "bool.h"
-+#include "int.h"
- #include "mallocvar.h"
- #include "xmlrpc-c/util_int.h"
- #include "xmlrpc-c/abyss.h"
-@@ -83,7 +84,7 @@ ChannelTerm(void) {
-    functions that are particular to an implementation.
- */
--static uint const channelSignature = 0x06060B;
-+static unsigned int const channelSignature = 0x06060B;
- void
- ChannelCreate(const struct TChannelVtbl * const vtblP,
-diff --git a/libs/xmlrpc-c/lib/abyss/src/channel.h b/libs/xmlrpc-c/lib/abyss/src/channel.h
-index c5924bc..6e5ae7e 100644
---- a/libs/xmlrpc-c/lib/abyss/src/channel.h
-+++ b/libs/xmlrpc-c/lib/abyss/src/channel.h
-@@ -60,7 +60,7 @@ struct TChannelVtbl {
- };
- struct _TChannel {
--    uint                signature;
-+    unsigned int        signature;
-         /* With both background and foreground use of sockets, and
-            background being both fork and pthread, it is very easy to
-            screw up socket lifetime and try to destroy twice.  We use
-diff --git a/libs/xmlrpc-c/lib/abyss/src/chanswitch.c b/libs/xmlrpc-c/lib/abyss/src/chanswitch.c
-index b89e6de..c39e4c0 100644
---- a/libs/xmlrpc-c/lib/abyss/src/chanswitch.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/chanswitch.c
-@@ -11,6 +11,7 @@
- #include <stdlib.h>
- #include "bool.h"
-+#include "int.h"
- #include "mallocvar.h"
- #include "xmlrpc-c/util_int.h"
- #include "xmlrpc-c/abyss.h"
-@@ -81,7 +82,7 @@ ChanSwitchTerm(void) {
-    functions that are particular to an implementation.
- */
--static uint const switchSignature = 0x06060A;
-+static unsigned int const switchSignature = 0x06060A;
- void
- ChanSwitchCreate(const struct TChanSwitchVtbl * const vtblP,
-diff --git a/libs/xmlrpc-c/lib/abyss/src/chanswitch.h b/libs/xmlrpc-c/lib/abyss/src/chanswitch.h
-index 4ff7949..c216f95 100644
---- a/libs/xmlrpc-c/lib/abyss/src/chanswitch.h
-+++ b/libs/xmlrpc-c/lib/abyss/src/chanswitch.h
-@@ -36,7 +36,7 @@ struct TChanSwitchVtbl {
- };
- struct _TChanSwitch {
--    uint                   signature;
-+    unsigned int           signature;
-         /* With both background and foreground use of switches, and
-            background being both fork and pthread, it is very easy to
-            screw up switch lifetime and try to destroy twice.  We use
-diff --git a/libs/xmlrpc-c/lib/abyss/src/conf.c b/libs/xmlrpc-c/lib/abyss/src/conf.c
-index 982615f..e0feff9 100644
---- a/libs/xmlrpc-c/lib/abyss/src/conf.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/conf.c
-@@ -32,6 +32,9 @@
- **
- ******************************************************************************/
-+#define _XOPEN_SOURCE 600   /* For strdup() */
-+#define _BSD_SOURCE  /* For xmlrpc_strcaseeq */
-+
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
-@@ -96,10 +99,10 @@ ConfReadLine(TFile *  const fileP,
-             if (c == CR || c == LF)
-                 break;
--    *buffer = '\0';
-+    *z = '\0';
-     /* Discard comments */
--    p = strchr(z, '#');
-+    p = strchr(buffer, '#');
-     if (p)
-         *p = '\0';
-diff --git a/libs/xmlrpc-c/lib/abyss/src/conn.c b/libs/xmlrpc-c/lib/abyss/src/conn.c
-index f76cc22..e6cd0b3 100644
---- a/libs/xmlrpc-c/lib/abyss/src/conn.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/conn.c
-@@ -31,6 +31,8 @@ connJob(void * const userHandle) {
- /*----------------------------------------------------------------------------
-    This is the root function for a thread that processes a connection
-    (performs HTTP transactions).
-+
-+   We never return.  We ultimately exit the thread.
- -----------------------------------------------------------------------------*/
-     TConn * const connectionP = userHandle;
-@@ -44,11 +46,21 @@ connJob(void * const userHandle) {
-            after we exit.
-         */
--    //ThreadExit(0);
-+
-+    /* Note that ThreadExit() runs a cleanup function, which in our
-+       case is connDone().
-+    */
-+    ThreadExit(connectionP->threadP, 0);
- }
-+/* This is the maximum amount of stack that 'connJob' itself uses --
-+   does not count what user's connection job function uses.
-+*/
-+#define CONNJOB_STACK 1024
-+
-+
- static void
- connDone(TConn * const connectionP) {
-@@ -79,6 +91,7 @@ static void
- makeThread(TConn *             const connectionP,
-            enum abyss_foreback const foregroundBackground,
-            bool                const useSigchld,
-+           size_t              const jobStackSize,
-            const char **       const errorP) {
-            
-     switch (foregroundBackground) {
-@@ -91,6 +104,7 @@ makeThread(TConn *             const connectionP,
-         connectionP->hasOwnThread = TRUE;
-         ThreadCreate(&connectionP->threadP, connectionP,
-                      &connJob, &threadDone, useSigchld,
-+                     CONNJOB_STACK + jobStackSize,
-                      &error);
-         if (error) {
-             xmlrpc_asprintf(errorP, "Unable to create thread to "
-@@ -110,6 +124,7 @@ ConnCreate(TConn **            const connectionPP,
-            TChannel *          const channelP,
-            void *              const channelInfoP,
-            TThreadProc *       const job,
-+           size_t              const jobStackSize,
-            TThreadDoneFn *     const done,
-            enum abyss_foreback const foregroundBackground,
-            bool                const useSigchld,
-@@ -150,7 +165,7 @@ ConnCreate(TConn **            const connectionPP,
-         connectionP->server       = serverP;
-         connectionP->channelP     = channelP;
-         connectionP->channelInfoP = channelInfoP;
--        connectionP->buffer[0]    = '\0';
-+        connectionP->buffer.b[0]  = '\0';
-         connectionP->buffersize   = 0;
-         connectionP->bufferpos    = 0;
-         connectionP->finished     = FALSE;
-@@ -160,7 +175,8 @@ ConnCreate(TConn **            const connectionPP,
-         connectionP->outbytes     = 0;
-         connectionP->trace        = getenv("ABYSS_TRACE_CONN");
--        makeThread(connectionP, foregroundBackground, useSigchld, errorP);
-+        makeThread(connectionP, foregroundBackground, useSigchld,
-+                   jobStackSize, errorP);
-     }
-     *connectionPP = connectionP;
- }
-@@ -185,6 +201,7 @@ ConnProcess(TConn * const connectionP) {
-         /* There's a background thread to handle this connection.  Set
-            it running.
-         */
-+        assert(connectionP->threadP);
-         retval = ThreadRun(connectionP->threadP);
-     } else {
-         /* No background thread.  We just handle it here while Caller waits. */
-@@ -199,9 +216,11 @@ ConnProcess(TConn * const connectionP) {
- void
- ConnWaitAndRelease(TConn * const connectionP) {
--    if (connectionP->hasOwnThread)
-+
-+    if (connectionP->hasOwnThread) {
-+        assert(connectionP->threadP);
-         ThreadWaitAndRelease(connectionP->threadP);
--    
-+    }
-     free(connectionP);
- }
-@@ -220,20 +239,31 @@ ConnReadInit(TConn * const connectionP) {
-     if (connectionP->buffersize > connectionP->bufferpos) {
-         connectionP->buffersize -= connectionP->bufferpos;
--        memmove(connectionP->buffer,
--                connectionP->buffer + connectionP->bufferpos,
-+        memmove(connectionP->buffer.b,
-+                connectionP->buffer.b + connectionP->bufferpos,
-                 connectionP->buffersize);
-         connectionP->bufferpos = 0;
-     } else
-         connectionP->buffersize = connectionP->bufferpos = 0;
--    connectionP->buffer[connectionP->buffersize] = '\0';
-+    connectionP->buffer.b[connectionP->buffersize] = '\0';
-     connectionP->inbytes = connectionP->outbytes = 0;
- }
-+static void
-+traceReadTimeout(TConn *  const connectionP,
-+                 uint32_t const timeout) {
-+
-+    if (connectionP->trace)
-+        fprintf(stderr, "TIMED OUT waiting over %u seconds "
-+                "for data from client.\n", timeout);
-+}
-+
-+
-+
- static size_t
- nextLineSize(const char * const string,
-              size_t       const startPos,
-@@ -261,9 +291,11 @@ nextLineSize(const char * const string,
- static void
--traceBuffer(const char * const label,
--            const char * const buffer,
--            unsigned int const size) {
-+traceBuffer(const char *          const label,
-+            const unsigned char * const buffer,
-+            unsigned int          const size) {
-+
-+    const char * const buffer_t = (const char *)buffer;
-     size_t cursor;  /* Index into buffer[] */
-@@ -272,9 +304,9 @@ traceBuffer(const char * const label,
-     for (cursor = 0; cursor < size; ) {
-         /* Print one line of buffer */
--        size_t const lineSize = nextLineSize(buffer, cursor, size);
-+        size_t const lineSize = nextLineSize(buffer_t, cursor, size);
-         const char * const printableLine =
--            xmlrpc_makePrintable_lp(&buffer[cursor], lineSize);
-+            xmlrpc_makePrintable_lp(&buffer_t[cursor], lineSize);
-         
-         fprintf(stderr, "%s\n", printableLine);
-@@ -288,12 +320,22 @@ traceBuffer(const char * const label,
- static void
-+traceBufferText(const char * const label,
-+                const char * const buffer,
-+                unsigned int const size) {
-+
-+    traceBuffer(label, (const unsigned char *)buffer, size);
-+}
-+
-+
-+
-+static void
- traceChannelRead(TConn *      const connectionP,
-                  unsigned int const size) {
-     if (connectionP->trace)
-         traceBuffer("READ FROM CHANNEL",
--                    connectionP->buffer + connectionP->buffersize, size);
-+                    connectionP->buffer.b + connectionP->buffersize, size);
- }
-@@ -307,7 +349,7 @@ traceChannelWrite(TConn *      const connectionP,
-     if (connectionP->trace) {
-         const char * const label =
-             failed ? "FAILED TO WRITE TO CHANNEL" : "WROTE TO CHANNEL";
--        traceBuffer(label, buffer, size);
-+        traceBufferText(label, buffer, size);
-     }
- }
-@@ -321,71 +363,136 @@ bufferSpace(TConn * const connectionP) {
-                     
--bool
--ConnRead(TConn *  const connectionP,
--         uint32_t const timeout) {
-+static void
-+readFromChannel(TConn *       const connectionP,
-+                bool *        const eofP,
-+                const char ** const errorP) {
- /*----------------------------------------------------------------------------
--   Read some stuff on connection *connectionP from the channel.
--
--   Don't wait more than 'timeout' seconds for data to arrive.  Fail if
--   nothing arrives within that time.
-+   Read some data from the channel of Connection *connectionP.
--   'timeout' must be before the end of time.
-+   Iff there is none available to read, return *eofP == true.
- -----------------------------------------------------------------------------*/
--    time_t const deadline = time(NULL) + timeout;
-+    uint32_t bytesRead;
-+    bool readError;
--    bool cantGetData;
--    bool gotData;
-+    ChannelRead(connectionP->channelP,
-+                connectionP->buffer.b + connectionP->buffersize,
-+                bufferSpace(connectionP) - 1,
-+                &bytesRead, &readError);
--    cantGetData = FALSE;
--    gotData = FALSE;
--    
--    while (!gotData && !cantGetData) {
--        int const timeLeft = (int)(deadline - time(NULL));
-+    if (readError)
-+        xmlrpc_asprintf(errorP, "Error reading from channel");
-+    else {
-+        *errorP = NULL;
-+        if (bytesRead > 0) {
-+            *eofP = FALSE;
-+            traceChannelRead(connectionP, bytesRead);
-+            connectionP->inbytes += bytesRead;
-+            connectionP->buffersize += bytesRead;
-+            connectionP->buffer.t[connectionP->buffersize] = '\0';
-+        } else
-+            *eofP = TRUE;
-+    }
-+}
--        if (timeLeft <= 0)
--            cantGetData = TRUE;
--        else {
--            bool const waitForRead  = TRUE;
--            bool const waitForWrite = FALSE;
--            
--            bool readyForRead;
--            bool failed;
-+
-+
-+static void
-+dealWithReadTimeout(bool *        const timedOutP,
-+                    bool          const timedOut,
-+                    uint32_t      const timeout,
-+                    const char ** const errorP) {
-+
-+    if (timedOutP)
-+        *timedOutP = timedOut;
-+    else {
-+        if (timedOut)
-+            xmlrpc_asprintf(errorP, "Read from Abyss client "
-+                            "connection timed out after %u seconds "
-+                            "or was interrupted",
-+                            timeout);
-+    }
-+}
-+
-+
-+
-+static void
-+dealWithReadEof(bool *        const eofP,
-+                bool          const eof,
-+                const char ** const errorP) {
-+
-+    if (eofP)
-+        *eofP = eof;
-+    else {
-+        if (eof)
-+            xmlrpc_asprintf(errorP, "Read from Abyss client "
-+                            "connection failed because client closed the "
-+                            "connection");
-+    }
-+}
-+
-+
-+
-+void
-+ConnRead(TConn *       const connectionP,
-+         uint32_t      const timeout,
-+         bool *        const eofP,
-+         bool *        const timedOutP,
-+         const char ** const errorP) {
-+/*----------------------------------------------------------------------------
-+   Read some stuff on connection *connectionP from the channel.  Read it into
-+   the connection's buffer.
-+
-+   Don't wait more than 'timeout' seconds for data to arrive.  If no data has
-+   arrived by then and 'timedOutP' is null, fail.  If 'timedOut' is non-null,
-+   return as *timedOutP whether 'timeout' seconds passed without any data
-+   arriving.
-+
-+   Also, stop waiting upon any interruption and treat it the same as a
-+   timeout.  An interruption is either a signal received (and caught) at
-+   an appropriate time or a ChannelInterrupt() call before or during the
-+   wait.
-+
-+   If 'eofP' is non-null, return *eofP == true, without reading anything, iff
-+   there will no more data forthcoming on the connection because client has
-+   closed the connection.  If 'eofP' is null, fail in that case.
-+-----------------------------------------------------------------------------*/
-+    uint32_t const timeoutMs = timeout * 1000;
-+
-+    if (timeoutMs < timeout)
-+        /* Arithmetic overflow */
-+        xmlrpc_asprintf(errorP, "Timeout value is too large");
-+    else {
-+        bool const waitForRead  = TRUE;
-+        bool const waitForWrite = FALSE;
-+
-+        bool readyForRead;
-+        bool failed;
-             
--            ChannelWait(connectionP->channelP, waitForRead, waitForWrite,
--                        timeLeft * 1000, &readyForRead, NULL, &failed);
-+        ChannelWait(connectionP->channelP, waitForRead, waitForWrite,
-+                    timeoutMs, &readyForRead, NULL, &failed);
-             
--            if (failed)
--                cantGetData = TRUE;
--            else {
--                uint32_t bytesRead;
--                bool readFailed;
--
--                ChannelRead(connectionP->channelP,
--                            connectionP->buffer + connectionP->buffersize,
--                            bufferSpace(connectionP) - 1,
--                            &bytesRead, &readFailed);
--
--                if (readFailed)
--                    cantGetData = TRUE;
--                else {
--                    if (bytesRead > 0) {
--                        traceChannelRead(connectionP, bytesRead);
--                        connectionP->inbytes += bytesRead;
--                        connectionP->buffersize += bytesRead;
--                        connectionP->buffer[connectionP->buffersize] = '\0';
--                        gotData = TRUE;
--                    } else
--                        /* Other end has disconnected */
--                        cantGetData = TRUE;
--                }
-+        if (failed)
-+            xmlrpc_asprintf(errorP,
-+                            "Wait for stuff to arrive from client failed.");
-+        else {
-+            bool eof;
-+            if (readyForRead) {
-+                readFromChannel(connectionP, &eof, errorP);
-+            } else {
-+                /* Wait was interrupted, either by our requested timeout,
-+                   a (caught) signal, or a ChannelInterrupt().
-+                */
-+                traceReadTimeout(connectionP, timeout);
-+                *errorP = NULL;
-+                eof = FALSE;
-             }
-+            if (!*errorP)
-+                dealWithReadTimeout(timedOutP, !readyForRead, timeout, errorP);
-+            if (!*errorP)
-+                dealWithReadEof(eofP, eof, errorP);
-         }
-     }
--    if (gotData)
--        return TRUE;
--    else
--        return FALSE;
- }
-@@ -429,12 +536,13 @@ ConnWriteFromFile(TConn *       const connectionP,
-     uint32_t waittime;
-     bool success;
-     uint32_t readChunkSize;
-+      uint32_t ChunkSize = 4096 * 2; /* read buffer size */
-     if (rate > 0) {
-         readChunkSize = MIN(buffersize, rate);  /* One second's worth */
-         waittime = (1000 * buffersize) / rate;
-     } else {
--        readChunkSize = buffersize;
-+        readChunkSize = ChunkSize;
-         waittime = 0;
-     }
-@@ -443,30 +551,42 @@ ConnWriteFromFile(TConn *       const connectionP,
-         retval = FALSE;
-     else {
-         uint64_t const totalBytesToRead = last - start + 1;
--        uint64_t bytesread;
--
--        bytesread = 0;  /* initial value */
--
--        while (bytesread < totalBytesToRead) {
--            uint64_t const bytesLeft     = totalBytesToRead - bytesread;
--            uint64_t const bytesToRead64 = MIN(readChunkSize, bytesLeft);
--            uint32_t const bytesToRead   = (uint32_t)bytesToRead64;
--            
--            uint32_t bytesReadThisTime;
-+        uint64_t bytesread = 0;
-+
-+        int32_t bytesReadThisTime = 0;
-+        char * chunk = (char *) buffer; /* the beginning */
-+        do {
-+
-+                      if ((bytesReadThisTime = FileRead(fileP, chunk, readChunkSize)) <= 0 )
-+                              break;
-+                      
-+                      bytesread += bytesReadThisTime;
-+                      chunk += bytesReadThisTime;
-+
-+                      /* fix bug in ms ie as it doesn't render text/plain properly                    */
-+                      /* if CRLFs are split between reassembled tcp packets,                          */
-+                      /* ie "might" undeterministically render extra empty lines                      */
-+                      /* if it ends in CR or LF, read an extra chunk until the buffer is full         */
-+                      /* or end of file is reached. You may still have bad luck, complaints go to MS) */
-+
-+/*                    if (bytesReadThisTime == readChunkSize &&  chunk - (char *) buffer + readChunkSize < buffersize) { 
-+ *                            char * end = chunk - 1;
-+ *                            if (*end == CR || *end == LF) {
-+ *                                    continue;
-+ *                            }
-+ *                    }
-+ */                                     
-+            if (!bytesReadThisTime || !ConnWrite(connectionP, buffer, chunk - (char *) buffer)) {
-+                break;
-+                      }
--            assert(bytesToRead == bytesToRead64); /* readChunkSize is uint32 */
-+                      chunk = (char *) buffer; /* a new beginning */
--            bytesReadThisTime = FileRead(fileP, buffer, bytesToRead);
--            bytesread += bytesReadThisTime;
--            
--            if (bytesReadThisTime > 0)
--                ConnWrite(connectionP, buffer, bytesReadThisTime);
--            else
--                break;
--            
--            if (waittime > 0)
-+                      if (waittime > 0)
-                 xmlrpc_millisecond_sleep(waittime);
--        }
-+                      
-+        } while (bytesReadThisTime == readChunkSize);
-+
-         retval = (bytesread >= totalBytesToRead);
-     }
-     return retval;
-diff --git a/libs/xmlrpc-c/lib/abyss/src/conn.h b/libs/xmlrpc-c/lib/abyss/src/conn.h
-index 51eb169..d48103d 100644
---- a/libs/xmlrpc-c/lib/abyss/src/conn.h
-+++ b/libs/xmlrpc-c/lib/abyss/src/conn.h
-@@ -47,8 +47,15 @@ struct _TConn {
-         */
-     const char * trace;
-     TThreadProc * job;
-+        /* The function to run, in a connection thread, to conduct business
-+           on the connection.  It reads stuff and writes stuff and, when it
-+           is done with the connection, exits.
-+        */
-     TThreadDoneFn * done;
--    char buffer[BUFFER_SIZE];
-+    union {
-+        unsigned char b[BUFFER_SIZE];  /* Just bytes */
-+        char          t[BUFFER_SIZE];  /* Taken as text */
-+    } buffer;
- };
- typedef struct _TConn TConn;
-@@ -63,6 +70,7 @@ ConnCreate(TConn **            const connectionPP,
-            TChannel *          const channelP,
-            void *              const channelInfoP,
-            TThreadProc *       const job,
-+           size_t              const jobStackSize,
-            TThreadDoneFn *     const done,
-            enum abyss_foreback const foregroundBackground,
-            bool                const useSigchld,
-@@ -82,9 +90,12 @@ ConnWrite(TConn *      const connectionP,
-           const void * const buffer,
-           uint32_t     const size);
--bool
--ConnRead(TConn *  const c,
--         uint32_t const timems);
-+void
-+ConnRead(TConn *       const connectionP,
-+         uint32_t      const timeout,
-+         bool *        const eofP,
-+         bool *        const timedOutP,
-+         const char ** const errorP);
- void
- ConnReadInit(TConn * const connectionP);
-diff --git a/libs/xmlrpc-c/lib/abyss/src/data.c b/libs/xmlrpc-c/lib/abyss/src/data.c
-index c698505..f81f834 100644
---- a/libs/xmlrpc-c/lib/abyss/src/data.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/data.c
-@@ -32,6 +32,8 @@
- **
- *******************************************************************************/
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
-+
- #include <assert.h>
- #include <stdlib.h>
- #include <string.h>
-@@ -198,20 +200,20 @@ ListAddFromString(TList *      const list,
- bool
--ListFindString(TList *      const sl,
-+ListFindString(TList *      const listP,
-                const char * const str,
-                uint16_t *   const indexP)
- {
--    uint16_t i;
-+    if (listP->item && str) {
-+        unsigned int i;
--    if (sl->item && str)
--        for (i=0;i<sl->size;i++)
--            if (strcmp(str,(char *)(sl->item[i]))==0)
--            {
--                *indexP=i;
-+        for (i = 0; i < listP->size; ++i) {
-+            if (xmlrpc_streq(str, (char *)(listP->item[i]))) {
-+                *indexP = i;
-                 return TRUE;
--            };
--
-+            }
-+        }
-+    }
-     return FALSE;
- }
-@@ -435,7 +437,7 @@ TableFindIndex(TTable *     const t,
-     {
-         for (i=*index;i<t->size;i++)
-             if (hash==t->item[i].hash)
--                if (strcmp(t->item[i].name,name)==0)
-+                if (xmlrpc_streq(t->item[i].name,name))
-                 {
-                     *index=i;
-                     return TRUE;
-diff --git a/libs/xmlrpc-c/lib/abyss/src/file.c b/libs/xmlrpc-c/lib/abyss/src/file.c
-index b428c0c..4417f05 100644
---- a/libs/xmlrpc-c/lib/abyss/src/file.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/file.c
-@@ -111,6 +111,7 @@ createFileImage(TFile **     const filePP,
-         int rc;
-         if (createFile)
-+            /* Unix prefers S_IWUSR, but some Windows knows only S_IWRITE */
-             rc = open(name, attrib | O_CREAT, S_IWRITE | S_IREAD);
-         else
-             rc = open(name, attrib);
-diff --git a/libs/xmlrpc-c/lib/abyss/src/handler.c b/libs/xmlrpc-c/lib/abyss/src/handler.c
-index 9f5a7e6..01a2550 100644
---- a/libs/xmlrpc-c/lib/abyss/src/handler.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/handler.c
-@@ -5,6 +5,9 @@
-    Copyright information is at end of file
- =============================================================================*/
-+
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
-+
- #include <assert.h>
- #include <stdio.h>
- #include <stdlib.h>
-@@ -458,15 +461,15 @@ handleDirectory(TSession *   const sessionP,
-                 addLastModifiedHeader(sessionP, fileModTime);
-             
-                 ResponseChunked(sessionP);
--                ResponseWriteStart(sessionP);
--            
--                if (sessionP->requestInfo.method!=m_head)
--                    sendDirectoryDocument(&list, ascending, sort, text,
--                                          sessionP->requestInfo.uri, mimeTypeP,
--                                          sessionP);
--            
--                HTTPWriteEndChunk(sessionP);
-+                if (ResponseWriteStart(sessionP)) {
-+     
-+                                      if (sessionP->requestInfo.method!=m_head)
-+                                              sendDirectoryDocument(&list, ascending, sort, text,
-+                                                                                        sessionP->requestInfo.uri, mimeTypeP,
-+                                                                                        sessionP);
-             
-+                                      HTTPWriteEndChunk(sessionP);
-+                              }
-                 ListFree(&list);
-             }
-             PoolFree(&pool);
-@@ -504,20 +507,20 @@ sendBody(TSession *      const sessionP,
- /*----------------------------------------------------------------------------
-    'start0' and 'end0' are meaningful only if the session has ranges.
- -----------------------------------------------------------------------------*/
--    char buffer[4096];
-+    char buffer[4096*8];
-     if (sessionP->ranges.size == 0)
--        ConnWriteFromFile(sessionP->conn, fileP, 0, filesize - 1,
-+        ConnWriteFromFile(sessionP->connP, fileP, 0, filesize - 1,
-                           buffer, sizeof(buffer), 0);
-     else if (sessionP->ranges.size == 1)
--        ConnWriteFromFile(sessionP->conn, fileP, start0, end0,
-+        ConnWriteFromFile(sessionP->connP, fileP, start0, end0,
-                           buffer, sizeof(buffer), 0);
-     else {
-         uint64_t i;
-         for (i = 0; i <= sessionP->ranges.size; ++i) {
--            ConnWrite(sessionP->conn, "--", 2);
--            ConnWrite(sessionP->conn, BOUNDARY, strlen(BOUNDARY));
--            ConnWrite(sessionP->conn, CRLF, 2);
-+            ConnWrite(sessionP->connP, "--", 2);
-+            ConnWrite(sessionP->connP, BOUNDARY, strlen(BOUNDARY));
-+            ConnWrite(sessionP->connP, CRLF, 2);
-             if (i < sessionP->ranges.size) {
-                 uint64_t start;
-@@ -534,12 +537,12 @@ sendBody(TSession *      const sessionP,
-                     composeEntityHeader(&entityHeader, mediatype,
-                                         start, end, filesize);
--                    ConnWrite(sessionP->conn,
-+                    ConnWrite(sessionP->connP,
-                               entityHeader, strlen(entityHeader));
-                     xmlrpc_strfree(entityHeader);
-                     
--                    ConnWriteFromFile(sessionP->conn, fileP, start, end,
-+                    ConnWriteFromFile(sessionP->connP, fileP, start, end,
-                                       buffer, sizeof(buffer), 0);
-                 }
-             }
-@@ -559,8 +562,8 @@ sendFileAsResponse(TSession *   const sessionP,
-     uint64_t const filesize = FileSize(fileP);
-     const char * const mediatype = MIMETypeGuessFromFile2(mimeTypeP, fileName);
--    uint64_t start;  /* Defined only if session has one range */
--    uint64_t end;    /* Defined only if session has one range */
-+    uint64_t start = 0;  /* Defined only if session has one range */
-+    uint64_t end = 0;    /* Defined only if session has one range */
-     switch (sessionP->ranges.size) {
-     case 0:
-@@ -601,10 +604,9 @@ sendFileAsResponse(TSession *   const sessionP,
-     
-     addLastModifiedHeader(sessionP, fileModTime);
--    ResponseWriteStart(sessionP);
--
--    if (sessionP->requestInfo.method != m_head)
--        sendBody(sessionP, fileP, filesize, mediatype, start, end);
-+    if (ResponseWriteStart(sessionP))
-+          if (sessionP->requestInfo.method != m_head)
-+                      sendBody(sessionP, fileP, filesize, mediatype, start, end);
- }        
-@@ -749,6 +751,9 @@ HandlerDefaultBuiltin(TSession * const sessionP) {
-+size_t const HandlerDefaultBuiltinStack = 1024;
-+
-+
- /******************************************************************************
- **
- ** server.c
-diff --git a/libs/xmlrpc-c/lib/abyss/src/handler.h b/libs/xmlrpc-c/lib/abyss/src/handler.h
-index 4f9dc95..a8f2f3e 100644
---- a/libs/xmlrpc-c/lib/abyss/src/handler.h
-+++ b/libs/xmlrpc-c/lib/abyss/src/handler.h
-@@ -28,4 +28,6 @@ HandlerAddDefaultFN(BIHandler *  const handlerP,
- abyss_bool
- HandlerDefaultBuiltin(TSession * const sessionP);
-+extern size_t const HandlerDefaultBuiltinStack;
-+
- #endif
-diff --git a/libs/xmlrpc-c/lib/abyss/src/http.c b/libs/xmlrpc-c/lib/abyss/src/http.c
-index 1e55bc8..4f9ef10 100644
---- a/libs/xmlrpc-c/lib/abyss/src/http.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/http.c
-@@ -1,5 +1,8 @@
- /* Copyright information is at the end of the file */
-+#define _XOPEN_SOURCE 600   /* For strdup() */
-+#define _BSD_SOURCE   /* For xmlrpc_strcaseeq() */
-+
- #include <ctype.h>
- #include <assert.h>
- #include <stdlib.h>
-@@ -13,6 +16,7 @@
- #include "mallocvar.h"
- #include "xmlrpc-c/util.h"
- #include "xmlrpc-c/string_int.h"
-+#include "xmlrpc-c/base64_int.h"
- #include "xmlrpc-c/abyss.h"
- #include "server.h"
-@@ -43,8 +47,8 @@ initRequestInfo(TRequestInfo * const requestInfoP,
-                 const char *   const query) {
- /*----------------------------------------------------------------------------
-   Set up the request info structure.  For information that is
--  controlled by headers, use the defaults -- I.e. the value that
--  applies if the request contains no applicable header.
-+  controlled by the header, use the defaults -- I.e. the value that
-+  applies if the request contains no applicable header field.
- -----------------------------------------------------------------------------*/
-     XMLRPC_ASSERT_PTR_OK(requestLine);
-     XMLRPC_ASSERT_PTR_OK(path);
-@@ -79,6 +83,9 @@ freeRequestInfo(TRequestInfo * const requestInfoP) {
-     xmlrpc_strfree(requestInfoP->uri);
-     xmlrpc_strfree(requestInfoP->requestline);
-+      
-+    xmlrpc_strfree(requestInfoP->query);
-+
- }
-@@ -91,7 +98,7 @@ RequestInit(TSession * const sessionP,
-     time(&sessionP->date);
--    sessionP->conn = connectionP;
-+    sessionP->connP = connectionP;
-     sessionP->responseStarted = FALSE;
-@@ -102,8 +109,8 @@ RequestInit(TSession * const sessionP,
-     ListInit(&sessionP->cookies);
-     ListInit(&sessionP->ranges);
--    TableInit(&sessionP->request_headers);
--    TableInit(&sessionP->response_headers);
-+    TableInit(&sessionP->requestHeaderFields);
-+    TableInit(&sessionP->responseHeaderFields);
-     sessionP->status = 0;  /* No status from handler yet */
-@@ -120,8 +127,8 @@ RequestFree(TSession * const sessionP) {
-     ListFree(&sessionP->cookies);
-     ListFree(&sessionP->ranges);
--    TableFree(&sessionP->request_headers);
--    TableFree(&sessionP->response_headers);
-+    TableFree(&sessionP->requestHeaderFields);
-+    TableFree(&sessionP->responseHeaderFields);
-     StringFree(&(sessionP->header));
- }
-@@ -137,7 +144,7 @@ firstLfPos(TConn * const connectionP,
-    If there is no LF in the buffer at or after 'lineStart', return NULL.
- -----------------------------------------------------------------------------*/
-     const char * const bufferEnd =
--        connectionP->buffer + connectionP->buffersize;
-+        connectionP->buffer.t + connectionP->buffersize;
-     char * p;
-@@ -168,20 +175,25 @@ getLineInBuffer(TConn * const connectionP,
-     bool error;
-     char * lfPos;
--    assert(lineStart <= connectionP->buffer + connectionP->buffersize);
-+    assert(lineStart <= connectionP->buffer.t + connectionP->buffersize);
-     error = FALSE;  /* initial value */
-     lfPos = NULL;  /* initial value */
-     while (!error && !lfPos) {
-         int const timeLeft = (int)(deadline - time(NULL));
--
-         if (timeLeft <= 0)
-             error = TRUE;
-         else {
-             lfPos = firstLfPos(connectionP, lineStart);
--            if (!lfPos)
--                error = !ConnRead(connectionP, timeLeft);
-+            if (!lfPos) {
-+                const char * readError;
-+                ConnRead(connectionP, timeLeft, NULL, NULL, &readError);
-+                if (readError) {
-+                    error = TRUE;
-+                    xmlrpc_strfree(readError);
-+                }
-+            }
-         }
-     }    
-     *errorP = error;
-@@ -228,36 +240,36 @@ convertLineEnd(char * const lineStart,
- static void
--getRestOfHeader(TConn *       const connectionP,
--                char *        const lineEnd,
--                time_t        const deadline,
--                const char ** const headerEndP,
--                bool *        const errorP) {
-+getRestOfField(TConn *       const connectionP,
-+               char *        const lineEnd,
-+               time_t        const deadline,
-+               const char ** const fieldEndP,
-+               bool *        const errorP) {
- /*----------------------------------------------------------------------------
-    Given that the read buffer for connection *connectionP contains (at
--   its current read position) the first line of an HTTP header, which
-+   its current read position) the first line of an HTTP header field, which
-    ends at position 'lineEnd', find the rest of it.
--   Some or all of the rest of the header may be in the buffer already;
-+   Some or all of the rest of the field may be in the buffer already;
-    we read more from the connection as necessary, but not if it takes past
-    'deadline'.  In the latter case, we fail.
--   We return the location of the end of the whole header as *headerEndP.
--   We do not remove the header from the buffer, but we do modify the
--   buffer so as to join the multiple lines of the header into a single
--   line, and to NUL-terminate the header.
-+   We return the location of the end of the whole field as *headerEndP.
-+   We do not remove the field from the buffer, but we do modify the
-+   buffer so as to join the multiple lines of the field into a single
-+   line, and to NUL-terminate the field.
- -----------------------------------------------------------------------------*/
--    char * const headerStart = connectionP->buffer + connectionP->bufferpos;
-+    char * const fieldStart = connectionP->buffer.t + connectionP->bufferpos;
--    char * headerEnd;
--        /* End of the header lines we've seen at so far */
--    bool gotWholeHeader;
-+    char * fieldEnd;
-+        /* End of the field lines we've seen at so far */
-+    bool gotWholeField;
-     bool error;
--    headerEnd = lineEnd;  /* initial value - end of 1st line */
-+    fieldEnd = lineEnd;  /* initial value - end of 1st line */
-         
--    for (gotWholeHeader = FALSE, error = FALSE;
--         !gotWholeHeader && !error;) {
-+    for (gotWholeField = FALSE, error = FALSE;
-+         !gotWholeField && !error;) {
-         char * nextLineEnd;
-@@ -265,51 +277,51 @@ getRestOfHeader(TConn *       const connectionP,
-            valid, that there is at least one more line in it.  Worst
-            case, it's the empty line that marks the end of the headers.
-         */
--        getLineInBuffer(connectionP, headerEnd, deadline,
-+        getLineInBuffer(connectionP, fieldEnd, deadline,
-                         &nextLineEnd, &error);
-         if (!error) {
--            if (isContinuationLine(headerEnd)) {
-+            if (isContinuationLine(fieldEnd)) {
-                 /* Join previous line to this one */
--                convertLineEnd(headerEnd, headerStart, ' ');
-+                convertLineEnd(fieldEnd, fieldStart, ' ');
-                 /* Add this line to the header */
--                headerEnd = nextLineEnd;
-+                fieldEnd = nextLineEnd;
-             } else {
--                gotWholeHeader = TRUE;
--                *headerEndP = headerEnd;
-+                gotWholeField = TRUE;
--                /* NUL-terminate the whole header */
--                convertLineEnd(headerEnd, headerStart, '\0');
-+                /* NUL-terminate the whole field */
-+                convertLineEnd(fieldEnd, fieldStart, '\0');
-             }
-         }
-     }
--    *errorP = error;
-+    *fieldEndP = fieldEnd;
-+    *errorP    = error;
- }
- static void
--readHeader(TConn * const connectionP,
--           time_t  const deadline,
--           bool *  const endOfHeadersP,
--           char ** const headerP,
--           bool *  const errorP) {
-+readField(TConn * const connectionP,
-+          time_t  const deadline,
-+          bool *  const endOfHeaderP,
-+          char ** const fieldP,
-+          bool *  const errorP) {
- /*----------------------------------------------------------------------------
--   Read an HTTP header, or the end of headers empty line, on connection
-+   Read an HTTP header field, or the end of header empty line, on connection
-    *connectionP.
--   An HTTP header is basically a line, except that if a line starts
-+   An HTTP header field is basically a line, except that if a line starts
-    with white space, it's a continuation of the previous line.  A line
-    is delimited by either LF or CRLF.
--   The first line of an HTTP header is never empty; an empty line signals
--   the end of the HTTP headers and beginning of the HTTP body.  We call
--   that empty line the EOH mark.
-+   The first line of an HTTP header field is never empty; an empty line
-+   signals the end of the HTTP header and beginning of the HTTP body.  We
-+   call that empty line the EOH mark.
-    We assume the connection is positioned to a header or EOH mark.
-    
-    In the course of reading, we read at least one character past the
--   line delimiter at the end of the header or EOH mark; we may read
--   much more.  But we leave everything after the header or EOH (and
-+   line delimiter at the end of the field or EOH mark; we may read
-+   much more.  But we leave everything after the field or EOH (and
-    its line delimiter) in the internal buffer, with the buffer pointer
-    pointing to it.
-@@ -317,12 +329,12 @@ readHeader(TConn * const connectionP,
-    previous call to this subroutine) before reading any more from from
-    the channel.
--   We return as *headerP the next header as an ASCIIZ string, with no
-+   We return as *fieldP the next field as an ASCIIZ string, with no
-    line delimiter.  That string is stored in the "unused" portion of
--   the connection's internal buffer.  Iff there is no next header, we
--   return *endOfHeadersP == true and nothing meaningful as *headerP.
-+   the connection's internal buffer.  Iff there is no next field, we
-+   return *endOfHeaderP == true and nothing meaningful as *fieldP.
- -----------------------------------------------------------------------------*/
--    char * const bufferStart = connectionP->buffer + connectionP->bufferpos;
-+    char * const bufferStart = connectionP->buffer.t + connectionP->bufferpos;
-     bool error;
-     char * lineEnd;
-@@ -334,26 +346,26 @@ readHeader(TConn * const connectionP,
-             error = TRUE;
-         else if (isEmptyLine(bufferStart)) {
-             /* Consume the EOH mark from the buffer */
--            connectionP->bufferpos = lineEnd - connectionP->buffer;
--            *endOfHeadersP = TRUE;
-+            connectionP->bufferpos = lineEnd - connectionP->buffer.t;
-+            *endOfHeaderP = TRUE;
-         } else {
--            /* We have the first line of a header; there may be more. */
-+            /* We have the first line of a field; there may be more. */
--            const char * headerEnd;
-+            const char * fieldEnd;
--            *endOfHeadersP = FALSE;
-+            *endOfHeaderP = FALSE;
--            getRestOfHeader(connectionP, lineEnd, deadline,
--                            &headerEnd, &error);
-+            getRestOfField(connectionP, lineEnd, deadline,
-+                           &fieldEnd, &error);
-             if (!error) {
--                *headerP = bufferStart;
-+                *fieldP = bufferStart;
-                 /* Consume the header from the buffer (but be careful --
-                    you can't reuse that part of the buffer because the
-                    string we will return is in it!
-                 */
--                connectionP->bufferpos = headerEnd - connectionP->buffer;
-+                connectionP->bufferpos = fieldEnd - connectionP->buffer.t;
-             }
-         }
-     }
-@@ -367,7 +379,7 @@ skipToNonemptyLine(TConn * const connectionP,
-                    time_t  const deadline,
-                    bool *  const errorP) {
--    char * const bufferStart = connectionP->buffer + connectionP->bufferpos;
-+    char * const bufferStart = connectionP->buffer.t + connectionP->bufferpos;
-     bool gotNonEmptyLine;
-     bool error;
-@@ -393,7 +405,7 @@ skipToNonemptyLine(TConn * const connectionP,
-         /* Consume all the empty lines; advance buffer pointer to first
-            non-empty line.
-         */
--        connectionP->bufferpos = lineStart - connectionP->buffer;
-+        connectionP->bufferpos = lineStart - connectionP->buffer.t;
-     }
-     *errorP = error;
- }
-@@ -401,40 +413,45 @@ skipToNonemptyLine(TConn * const connectionP,
- static void
--readRequestHeader(TSession * const sessionP,
--                  time_t     const deadline,
--                  char **    const requestLineP,
--                  uint16_t * const httpErrorCodeP) {
-+readRequestField(TSession * const sessionP,
-+                 time_t     const deadline,
-+                 char **    const requestLineP,
-+                 uint16_t * const httpErrorCodeP) {
- /*----------------------------------------------------------------------------
--   Read the HTTP request header (aka request header field) from
--   session 'sessionP'.  We read through the session's internal buffer;
--   i.e.  we may get data that was previously read from the network, or
--   we may read more from the network.
-+   Read the HTTP request header field from session 'sessionP'.  We read
-+   through the session's internal buffer; i.e.  we may get data that was
-+   previously read from the network, or we may read more from the network.
-    We assume the connection is presently positioned to the beginning of
--   the HTTP document.  We leave it positioned after the request header.
-+   the HTTP document.  We leave it positioned after the request field.
-    
-    We ignore any empty lines at the beginning of the stream, per
-    RFC2616 Section 4.1.
--   Fail if we can't get the header before 'deadline'.
-+   Fail if we can't get the field before 'deadline'.
--   Return as *requestLineP the request header read.  This ASCIIZ string is
-+   Return as *requestLineP the request field read.  This ASCIIZ string is
-    in the session's internal buffer.
-    Return as *httpErrorCodeP the HTTP error code that describes how we
--   are not able to read the request header, or 0 if we can.
-+   are not able to read the request field, or 0 if we can.
-    If we can't, *requestLineP is meaningless.
- -----------------------------------------------------------------------------*/
--    char * line = NULL;
--    bool error = FALSE;
--    bool endOfHeaders = FALSE;
-+    char * line;
-+    bool error;
-+    bool endOfHeader;
--    skipToNonemptyLine(sessionP->conn, deadline, &error);
-+    skipToNonemptyLine(sessionP->connP, deadline, &error);
--    if (!error)
--        readHeader(sessionP->conn, deadline, &endOfHeaders, &line, &error);
-+    if (!error) {
-+        readField(sessionP->connP, deadline, &endOfHeader, &line, &error);
-+        /* End of header is delimited by an empty line, and we skipped all
-+           the empty lines above, so readField() could not have encountered
-+           EOH:
-+        */
-+        assert(!endOfHeader);
-+    }
-     if (error)
-         *httpErrorCodeP = 408;  /* Request Timeout */
-     else {
-@@ -484,6 +501,7 @@ unescapeUri(char * const uri,
-             }
-         } break;
-+
-         default:
-             *y++ = *x++;
-             break;
-@@ -498,6 +516,7 @@ static void
- parseHostPort(const char *     const hostport,
-               const char **    const hostP,
-               unsigned short * const portP,
-+              const char **    const errorP,
-               uint16_t *       const httpErrorCodeP) {
- /*----------------------------------------------------------------------------
-    Parse a 'hostport', a string in the form www.acme.com:8080 .
-@@ -512,28 +531,32 @@ parseHostPort(const char *     const hostport,
-     buffer = strdup(hostport);
--    colonPos = strchr(buffer, ':');
-+    colonPos = strrchr(buffer, ':');
-     if (colonPos) {
-         const char * p;
-         uint32_t port;
-         *colonPos = '\0';  /* Split hostport at the colon */
-+
-         for (p = colonPos + 1, port = 0;
-              isdigit(*p) && port < 65535;
-              (port = port * 10 + (*p - '0')), ++p);
-             
--        if (*p || port == 0)
-+        if (*p || port == 0) {
-+            xmlrpc_asprintf(errorP, "There is nothing, or something "
-+                            "non-numeric for the port number after the "
-+                            "colon in '%s'", hostport);
-             *httpErrorCodeP = 400;  /* Bad Request */
--        else {
-+        } else {
-             *hostP = strdup(buffer);
-             *portP = port;
--            *httpErrorCodeP = 0;
-+            *errorP = NULL;
-         }
-     } else {
-         *hostP          = strdup(buffer);
-         *portP          = 80;
--        *httpErrorCodeP = 0;
-+        *errorP = NULL;
-     }
-     free(buffer);
- }
-@@ -596,6 +619,7 @@ parseRequestUri(char *           const requestUri,
-             requestUriNoQuery = requestUri;
-         }
-+
-         if (requestUriNoQuery[0] == '/') {
-             *hostP = NULL;
-             *pathP = strdup(requestUriNoQuery);
-@@ -634,8 +658,15 @@ parseRequestUri(char *           const requestUri,
-                     hostport = hostportpath;
-                     *httpErrorCodeP = 0;
-                 }
--                if (!*httpErrorCodeP)
--                    parseHostPort(hostport, &host, &port, httpErrorCodeP);
-+                if (!*httpErrorCodeP) {
-+                    const char * error;
-+                    parseHostPort(hostport, &host, &port,
-+                                  &error, httpErrorCodeP);
-+                    if (error)
-+                        xmlrpc_strfree(error);
-+                    else
-+                        *httpErrorCodeP = 0;
-+                }
-                 if (*httpErrorCodeP)
-                     xmlrpc_strfree(path);
-@@ -764,9 +795,10 @@ strtolower(char * const s) {
- static void
--getFieldNameToken(char **    const pP,
--                  char **    const fieldNameP,
--                  uint16_t * const httpErrorCodeP) {
-+getFieldNameToken(char **       const pP,
-+                  char **       const fieldNameP,
-+                  const char ** const errorP,
-+                  uint16_t *    const httpErrorCodeP) {
- /*----------------------------------------------------------------------------
-    Assuming that *pP points to the place in an HTTP header where the field
-    name belongs, return the field name and advance *pP past that token.
-@@ -779,30 +811,34 @@ getFieldNameToken(char **    const pP,
-     NextToken((const char **)pP);
-     
-     fieldName = GetToken(pP);
--    if (!fieldName)
-+    if (!fieldName) {
-+        xmlrpc_asprintf(errorP, "The header has no field name token");
-         *httpErrorCodeP = 400;  /* Bad Request */
--    else {
--        if (fieldName[strlen(fieldName)-1] != ':')
-+    } else {
-+        if (fieldName[strlen(fieldName)-1] != ':') {
-             /* Not a valid field name */
-+            xmlrpc_asprintf(errorP, "The field name token '%s' "
-+                            "does not end with a colon (:)", fieldName);
-             *httpErrorCodeP = 400;  /* Bad Request */
--        else {
-+        } else {
-             fieldName[strlen(fieldName)-1] = '\0';  /* remove trailing colon */
-             strtolower(fieldName);
-             
--            *httpErrorCodeP = 0;  /* no error */
--            *fieldNameP = fieldName;
-+            *errorP = NULL;
-         }
-     }
-+    *fieldNameP = fieldName;
- }
- static void
--processHeader(const char * const fieldName,
--              char *       const fieldValue,
--              TSession *   const sessionP,
--              uint16_t *   const httpErrorCodeP) {
-+processField(const char *  const fieldName,
-+             char *        const fieldValue,
-+             TSession *    const sessionP,
-+             const char ** const errorP,
-+             uint16_t *    const httpErrorCodeP) {
- /*----------------------------------------------------------------------------
-    We may modify *fieldValue, and we put pointers to *fieldValue and
-    *fieldName into *sessionP.
-@@ -810,7 +846,7 @@ processHeader(const char * const fieldName,
-    We must fix this some day.  *sessionP should point to individual
-    malloc'ed strings.
- -----------------------------------------------------------------------------*/
--    *httpErrorCodeP = 0;  /* initial assumption */
-+    *errorP = NULL;  /* initial assumption */
-     if (xmlrpc_streq(fieldName, "connection")) {
-         if (xmlrpc_strcaseeq(fieldValue, "keep-alive"))
-@@ -823,7 +859,7 @@ processHeader(const char * const fieldName,
-             sessionP->requestInfo.host = NULL;
-         }
-         parseHostPort(fieldValue, &sessionP->requestInfo.host,
--                      &sessionP->requestInfo.port, httpErrorCodeP);
-+                      &sessionP->requestInfo.port, errorP, httpErrorCodeP);
-     } else if (xmlrpc_streq(fieldName, "from"))
-         sessionP->requestInfo.from = fieldValue;
-     else if (xmlrpc_streq(fieldName, "user-agent"))
-@@ -834,12 +870,21 @@ processHeader(const char * const fieldName,
-         if (xmlrpc_strneq(fieldValue, "bytes=", 6)) {
-             bool succeeded;
-             succeeded = ListAddFromString(&sessionP->ranges, &fieldValue[6]);
--            *httpErrorCodeP = succeeded ? 0 : 400;
-+            if (!succeeded) {
-+                xmlrpc_asprintf(errorP, "ListAddFromString() failed for "
-+                                "\"range: bytes=...\" header value '%s'",
-+                                &fieldValue[6]);
-+                *httpErrorCodeP = 400;
-+            }
-         }
-     } else if (xmlrpc_streq(fieldName, "cookies")) {
-         bool succeeded;
-         succeeded = ListAddFromString(&sessionP->cookies, fieldValue);
--        *httpErrorCodeP = succeeded ? 0 : 400;
-+        if (!succeeded) {
-+            xmlrpc_asprintf(errorP, "ListAddFromString() failed for "
-+                            "cookies: header value '%s'", fieldValue);
-+            *httpErrorCodeP = 400;
-+        }
-     } else if (xmlrpc_streq(fieldName, "expect")) {
-         if (xmlrpc_strcaseeq(fieldValue, "100-continue"))
-             sessionP->continueRequired = TRUE;
-@@ -849,53 +894,55 @@ processHeader(const char * const fieldName,
- static void
--readAndProcessHeaders(TSession * const sessionP,
--                      time_t     const deadline,
--                      uint16_t * const httpErrorCodeP) {
-+readAndProcessHeaderFields(TSession *    const sessionP,
-+                           time_t        const deadline,
-+                           const char ** const errorP,
-+                           uint16_t *    const httpErrorCodeP) {
- /*----------------------------------------------------------------------------
--   Read all the HTTP headers from the session *sessionP, which has at
--   least one header coming.  Update *sessionP to reflect the
--   information in the headers.
--
--   If we find an error in the headers or while trying to read them, we
--   return an appropriate HTTP error code as *httpErrorCodeP.  Otherwise,
--   we return *httpErrorCodeP = 0.
-+   Read all the HTTP header fields from the session *sessionP, which has at
-+   least one field coming.  Update *sessionP to reflect the information in the
-+   fields.
-+
-+   If we find an error in the fields or while trying to read them, we return
-+   a text explanation of the problem as *errorP and an appropriate HTTP error
-+   code as *httpErrorCodeP.  Otherwise, we return *errorP = NULL and nothing
-+   as *httpErrorCodeP.
- -----------------------------------------------------------------------------*/
--    bool endOfHeaders;
-+    bool endOfHeader;
--    /* Calling us doesn't make sense if there is already a valid request */
--    if (sessionP->validRequest) {
--       return;
--    }
--      
--    *httpErrorCodeP = 0;  /* initial assumption */
--    endOfHeaders = false;  /* Caller assures us there is at least one header */
-+    assert(!sessionP->validRequest);
-+        /* Calling us doesn't make sense if there is already a valid request */
-+
-+    *errorP = NULL;  /* initial assumption */
-+    endOfHeader = false;  /* Caller assures us there is at least one header */
--    while (!endOfHeaders && !*httpErrorCodeP) {
--        char * header;
-+    while (!endOfHeader && !*errorP) {
-+        char * field;
-         bool error;
--        readHeader(sessionP->conn, deadline, &endOfHeaders, &header, &error);
--        if (error)
-+        readField(sessionP->connP, deadline, &endOfHeader, &field, &error);
-+        if (error) {
-+            xmlrpc_asprintf(errorP, "Failed to read header from "
-+                            "client connection.");
-             *httpErrorCodeP = 408;  /* Request Timeout */
--        else {
--            if (!endOfHeaders) {
-+        } else {
-+            if (!endOfHeader) {
-                 char * p;
-                 char * fieldName;
--                p = &header[0];
--                getFieldNameToken(&p, &fieldName, httpErrorCodeP);
--                if (!*httpErrorCodeP) {
-+                p = &field[0];
-+                getFieldNameToken(&p, &fieldName, errorP, httpErrorCodeP);
-+                if (!*errorP) {
-                     char * fieldValue;
-                     
-                     NextToken((const char **)&p);
-                     
-                     fieldValue = p;
--                    TableAdd(&sessionP->request_headers,
-+                    TableAdd(&sessionP->requestHeaderFields,
-                              fieldName, fieldValue);
-                     
--                    processHeader(fieldName, fieldValue, sessionP,
--                                  httpErrorCodeP);
-+                    processField(fieldName, fieldValue, sessionP, errorP,
-+                                 httpErrorCodeP);
-                 }
-             }
-         }
-@@ -905,8 +952,10 @@ readAndProcessHeaders(TSession * const sessionP,
- void
--RequestRead(TSession * const sessionP,
--            uint32_t   const timeout) {
-+RequestRead(TSession *    const sessionP,
-+            uint32_t      const timeout,
-+            const char ** const errorP,
-+            uint16_t *    const httpErrorCodeP) {
- /*----------------------------------------------------------------------------
-    Read the headers of a new HTTP request (assuming nothing has yet been
-    read on the session).
-@@ -922,28 +971,38 @@ RequestRead(TSession * const sessionP,
-     uint16_t httpErrorCode;  /* zero for no error */
-     char * requestLine;  /* In connection;s internal buffer */
--    readRequestHeader(sessionP, deadline, &requestLine, &httpErrorCode);
--    if (!httpErrorCode) {
-+    readRequestField(sessionP, deadline, &requestLine, &httpErrorCode);
-+    if (httpErrorCode) {
-+        xmlrpc_asprintf(errorP, "Problem getting the request header");
-+        *httpErrorCodeP = httpErrorCode;
-+    } else {
-         TMethod httpMethod;
-         const char * host;
-         const char * path;
-         const char * query;
-         unsigned short port;
--        bool moreHeaders;
-+        bool moreFields;
-         parseRequestLine(requestLine, &httpMethod, &sessionP->version,
-                          &host, &port, &path, &query,
--                         &moreHeaders, &httpErrorCode);
-+                         &moreFields, &httpErrorCode);
--        if (!httpErrorCode) {
-+        if (httpErrorCode) {
-+            xmlrpc_asprintf(errorP, "Unable to parse the request header "
-+                            "'%s'", requestLine);
-+            *httpErrorCodeP = httpErrorCode;
-+        } else {
-             initRequestInfo(&sessionP->requestInfo, sessionP->version,
-                             requestLine,
-                             httpMethod, host, port, path, query);
--            if (moreHeaders)
--                readAndProcessHeaders(sessionP, deadline, &httpErrorCode);
-+            if (moreFields) {
-+                readAndProcessHeaderFields(sessionP, deadline,
-+                                           errorP, httpErrorCodeP);
-+            } else
-+                *errorP = NULL;
--            if (httpErrorCode == 0)
-+            if (!*errorP)
-                 sessionP->validRequest = true;
-             xmlrpc_strfreenull(host);
-@@ -951,8 +1010,6 @@ RequestRead(TSession * const sessionP,
-             xmlrpc_strfreenull(query);
-         }
-     }
--    if (httpErrorCode)
--        ResponseStatus(sessionP, httpErrorCode);
- }
-@@ -961,7 +1018,7 @@ char *
- RequestHeaderValue(TSession *   const sessionP,
-                    const char * const name) {
--    return (TableFind(&sessionP->request_headers, name));
-+    return (TableFind(&sessionP->requestHeaderFields, name));
- }
-@@ -999,10 +1056,10 @@ RequestValidURIPath(TSession * const sessionP) {
-             if (*(p++) == '/') {
-                 if (*p == '/')
-                     break;
--                else if ((strncmp(p,"./",2) == 0) || (strcmp(p, ".") == 0))
-+                else if ((xmlrpc_strneq(p,"./", 2)) || (xmlrpc_streq(p, ".")))
-                     ++p;
--                else if ((strncmp(p, "../", 2) == 0) ||
--                         (strcmp(p, "..") == 0)) {
-+                else if ((xmlrpc_strneq(p, "../", 2)) ||
-+                         (xmlrpc_streq(p, ".."))) {
-                     p += 2;
-                     --i;
-                     if (i == 0)
-@@ -1029,14 +1086,14 @@ RequestAuth(TSession *   const sessionP,
- /*----------------------------------------------------------------------------
-    Authenticate requester, in a very simplistic fashion.
--   If the request specifies basic authentication (via Authorization
--   header) with username 'user', password 'pass', then return TRUE.
--   Else, return FALSE and set up an authorization failure response
--   (HTTP response status 401) that says user must supply an identity
--   in the 'credential' domain.
-+   If the request executing on session *sessionP specifies basic
-+   authentication (via Authorization header) with username 'user', password
-+   'pass', then return TRUE.  Else, return FALSE and set up an authorization
-+   failure response (HTTP response status 401) that says user must supply an
-+   identity in the 'credential' domain.
--   When we return TRUE, we also set the username in the request info
--   to 'user' so that a future SessionGetRequestInfo can get it.
-+   When we return TRUE, we also set the username in the request info for the
-+   session to 'user' so that a future SessionGetRequestInfo can get it.
- -----------------------------------------------------------------------------*/
-     bool authorized;
-     char * authHdrPtr;
-@@ -1055,7 +1112,7 @@ RequestAuth(TSession *   const sessionP,
-                 NextToken((const char **)&authHdrPtr);
-                 xmlrpc_asprintf(&userPass, "%s:%s", user, pass);
--                Base64Encode(userPass, userPassEncoded);
-+                xmlrpc_base64Encode(userPass, userPassEncoded);
-                 xmlrpc_strfree(userPass);
-                 if (xmlrpc_streq(authHdrPtr, userPassEncoded)) {
-@@ -1208,24 +1265,19 @@ HTTPWriteBodyChunk(TSession *   const sessionP,
-                    const char * const buffer,
-                    uint32_t     const len) {
--    bool succeeded;
--
-     if (sessionP->chunkedwrite && sessionP->chunkedwritemode) {
-         char chunkHeader[16];
-         sprintf(chunkHeader, "%x\r\n", len);
--        succeeded =
--            ConnWrite(sessionP->conn, chunkHeader, strlen(chunkHeader));
--        if (succeeded) {
--            succeeded = ConnWrite(sessionP->conn, buffer, len);
--            if (succeeded)
--                succeeded = ConnWrite(sessionP->conn, "\r\n", 2);
--        }
-+        if (ConnWrite(sessionP->connP, chunkHeader, strlen(chunkHeader)))
-+                      if (ConnWrite(sessionP->connP, buffer, len))
-+                return ConnWrite(sessionP->connP, "\r\n", 2);
-+
-+              return FALSE;
-     } else
--        succeeded = ConnWrite(sessionP->conn, buffer, len);
-+        return ConnWrite(sessionP->connP, buffer, len);
--    return succeeded;
- }
-@@ -1233,14 +1285,13 @@ HTTPWriteBodyChunk(TSession *   const sessionP,
- bool
- HTTPWriteEndChunk(TSession * const sessionP) {
--    bool retval;
-+    bool retval = TRUE;
-     if (sessionP->chunkedwritemode && sessionP->chunkedwrite) {
-         /* May be one day trailer dumping will be added */
-         sessionP->chunkedwritemode = FALSE;
--        retval = ConnWrite(sessionP->conn, "0\r\n\r\n", 5);
--    } else
--        retval = TRUE;
-+        retval = ConnWrite(sessionP->connP, "0\r\n\r\n", 5);
-+    } 
-     return retval;
- }
-@@ -1266,7 +1317,7 @@ HTTPWriteContinue(TSession * const sessionP) {
-     char const continueStatus[] = "HTTP/1.1 100 continue\r\n\r\n";
-         /* This is a status line plus an end-of-headers empty line */
--    return ConnWrite(sessionP->conn, continueStatus, strlen(continueStatus));
-+    return ConnWrite(sessionP->connP, continueStatus, strlen(continueStatus));
- }
-diff --git a/libs/xmlrpc-c/lib/abyss/src/http.h b/libs/xmlrpc-c/lib/abyss/src/http.h
-index acf491e..14a3168 100644
---- a/libs/xmlrpc-c/lib/abyss/src/http.h
-+++ b/libs/xmlrpc-c/lib/abyss/src/http.h
-@@ -1,6 +1,8 @@
- #ifndef HTTP_H_INCLUDED
- #define HTTP_H_INCLUDED
-+#include <sys/types.h>
-+
- #include "bool.h"
- #include "conn.h"
-@@ -13,8 +15,10 @@ bool RequestValidURIPath(TSession * const r);
- bool RequestUnescapeURI(TSession *r);
- void
--RequestRead(TSession * const sessionP,
--            uint32_t   const timeout);
-+RequestRead(TSession *    const sessionP,
-+            uint32_t      const timeout,
-+            const char ** const errorP,
-+            uint16_t *    const httpErrorCodeP);
- void RequestInit(TSession * const r,TConn * const c);
- void RequestFree(TSession * const r);
-diff --git a/libs/xmlrpc-c/lib/abyss/src/main.c b/libs/xmlrpc-c/lib/abyss/src/main.c
-index e5741f3..875a260 100644
---- a/libs/xmlrpc-c/lib/abyss/src/main.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/main.c
-@@ -42,7 +42,7 @@
- #endif  /* WIN32 */
- #ifdef _UNIX
--#include <sys/signal.h>
-+#include <signal.h>
- #include <sys/wait.h>
- #endif
-@@ -75,7 +75,7 @@ abyss_bool HandleTime(TSession *r)
-     const char * dateString;
-     const char * answer;
--    if (strcmp(r->uri,"/time")!=0)
-+    if (!xmlrpc_streq(r->uri,"/time"))
-         return FALSE;
-     if (!RequestAuth(r,"Mot de passe","moez","hello"))
-@@ -100,7 +100,7 @@ abyss_bool HandleDump(TSession *r)
- {
-     char z[50];
--    if (strcmp(r->uri,"/name")!=0)
-+    if (!xmlrpc_streq(r->uri,"/name"))
-         return FALSE;
-     sprintf(z,"Server name is %s", (r->server)->name );
-@@ -125,7 +125,7 @@ abyss_bool HandleMIMEType(TSession *r)
- {
-     char *m;
--    if (strncmp(r->uri,"/mime/",6)!=0)
-+    if (!xmlrpc_strneq(r->uri, "/mime/", 6))
-         return FALSE;
-     m=MIMETypeFromExt(r->uri+6);
-diff --git a/libs/xmlrpc-c/lib/abyss/src/response.c b/libs/xmlrpc-c/lib/abyss/src/response.c
-index 75421d4..235d787 100644
---- a/libs/xmlrpc-c/lib/abyss/src/response.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/response.c
-@@ -6,6 +6,8 @@
-   Copyright information is at the end of the file
- =============================================================================*/
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
-+
- #include <ctype.h>
- #include <assert.h>
- #include <stdlib.h>
-@@ -16,11 +18,13 @@
- #include "xmlrpc_config.h"
- #include "bool.h"
-+#include "int.h"
- #include "version.h"
- #include "mallocvar.h"
- #include "xmlrpc-c/string_int.h"
- #include "xmlrpc-c/abyss.h"
-+#include "trace.h"
- #include "server.h"
- #include "session.h"
- #include "file.h"
-@@ -39,10 +43,6 @@ ResponseError2(TSession *   const sessionP,
-     const char * errorDocument;
--    ResponseAddField(sessionP, "Content-type", "text/html");
--
--    ResponseWriteStart(sessionP);
--    
-     xmlrpc_asprintf(&errorDocument,
-                     "<HTML><HEAD><TITLE>Error %d</TITLE></HEAD>"
-                     "<BODY>"
-@@ -51,8 +51,12 @@ ResponseError2(TSession *   const sessionP,
-                     "</BODY>"
-                     "</HTML>",
-                     sessionP->status, sessionP->status, explanation);
--    
--    ConnWrite(sessionP->conn, errorDocument, strlen(errorDocument)); 
-+
-+      ResponseAddField(sessionP, "Content-type", "text/html");
-+    ResponseContentLength(sessionP, strlen(errorDocument));
-+
-+      if (ResponseWriteStart(sessionP))
-+        ConnWrite(sessionP->connP, errorDocument, strlen(errorDocument)); 
-     xmlrpc_strfree(errorDocument);
- }
-@@ -123,20 +127,63 @@ ResponseStatusErrno(TSession * const sessionP) {
-+static bool
-+isValidHttpToken(const char * const token) {
-+
-+    char const separators[] = "()<>@,;:\\\"/[]?={} \t";
-+    const char * p;
-+    bool valid;
-+
-+    for (p = &token[0], valid = true; *p; ++p) {
-+        if (!isprint(*p) || strchr(separators, *p))
-+            valid = false;
-+    }
-+    return valid;
-+}
-+
-+
-+
-+
-+static bool
-+isValidHttpText(const char * const text) {
-+
-+    const char * p;
-+    bool valid;
-+
-+    for (p = &text[0], valid = true; *p; ++p) {
-+        if (!isprint(*p))
-+            valid = false;
-+    }
-+    return valid;
-+}
-+
-+
-+
- abyss_bool
- ResponseAddField(TSession *   const sessionP,
-                  const char * const name,
-                  const char * const value) {
--    return TableAdd(&sessionP->response_headers, name, value);
-+    abyss_bool succeeded;
-+    
-+    if (!isValidHttpToken(name)) {
-+        TraceMsg("Supplied HTTP header field name is not a valid HTTP token");
-+        succeeded = false;
-+    } else if (!isValidHttpText(value)) {
-+        TraceMsg("Supplied HTTP header field value is not valid HTTP text");
-+        succeeded = false;
-+    } else {
-+        succeeded = TableAdd(&sessionP->responseHeaderFields, name, value);
-+    }
-+    return succeeded;
- }
- static void
--addConnectionHeader(TSession * const sessionP) {
-+addConnectionHeaderFld(TSession * const sessionP) {
--    struct _TServer * const srvP = ConnServer(sessionP->conn)->srvP;
-+    struct _TServer * const srvP = ConnServer(sessionP->connP)->srvP;
-     if (HTTPKeepalive(sessionP)) {
-         const char * keepaliveValue;
-@@ -156,7 +203,7 @@ addConnectionHeader(TSession * const sessionP) {
- static void
--addDateHeader(TSession * const sessionP) {
-+addDateHeaderFld(TSession * const sessionP) {
-     if (sessionP->status >= 200) {
-         const char * dateValue;
-@@ -173,11 +220,11 @@ addDateHeader(TSession * const sessionP) {
- static void
--addServerHeader(TSession * const sessionP) {
-+addServerHeaderFld(TSession * const sessionP) {
-     const char * serverValue;
--    xmlrpc_asprintf(&serverValue, "XMLRPC_ABYSS/%s", XMLRPC_C_VERSION);
-+    xmlrpc_asprintf(&serverValue, "Freeswitch xmlrpc-c_abyss /%s", XMLRPC_C_VERSION);
-     ResponseAddField(sessionP, "Server", serverValue);
-@@ -186,17 +233,107 @@ addServerHeader(TSession * const sessionP) {
--void
--ResponseWriteStart(TSession * const sessionP) {
-+static unsigned int
-+leadingWsCt(const char * const arg) {
-+
-+    unsigned int i;
-+
-+    for (i = 0; arg[i] && isspace(arg[i]); ++i);
-+
-+    return i;
-+}
-+
--    struct _TServer * const srvP = ConnServer(sessionP->conn)->srvP;
-+
-+static unsigned int
-+trailingWsPos(const char * const arg) {
-     unsigned int i;
-+    for (i = strlen(arg); i > 0 && isspace(arg[i-1]); --i);
-+
-+    return i;
-+}
-+
-+
-+
-+static const char *
-+formatFieldValue(const char * const unformatted) {
-+/*----------------------------------------------------------------------------
-+   Return the string of characters that goes after the colon on the
-+   HTTP header field line, given that 'unformatted' is its basic value.
-+-----------------------------------------------------------------------------*/
-+    const char * retval;
-+
-+    /* An HTTP header field value may not have leading or trailing white
-+       space.
-+    */
-+    char * buffer;
-+
-+    buffer = malloc(strlen(unformatted) + 1);
-+
-+    if (buffer == NULL)
-+        retval = xmlrpc_strnomemval();
-+    else {
-+        unsigned int const lead  = leadingWsCt(unformatted);
-+        unsigned int const trail = trailingWsPos(unformatted);
-+        assert(trail >= lead);
-+        strncpy(buffer, &unformatted[lead], trail - lead);
-+        buffer[trail - lead] = '\0';
-+        retval = buffer;
-+    }
-+    return retval;
-+}
-+
-+
-+
-+static abyss_bool
-+sendHeader(TConn * const connP,
-+           TTable  const fields) {
-+/*----------------------------------------------------------------------------
-+   Send the HTTP response header whose fields are fields[].
-+
-+   Don't include the blank line that separates the header from the body.
-+
-+   fields[] contains syntactically valid HTTP header field names and values.
-+   But to the extent that int contains undefined field names or semantically
-+   invalid values, the header we send is invalid.
-+-----------------------------------------------------------------------------*/
-+    unsigned int i;
-+      abyss_bool ret = TRUE;
-+    for (i = 0; i < fields.size && ret; ++i) {
-+        TTableItem * const fieldP = &fields.item[i];
-+        const char * const fieldValue = formatFieldValue(fieldP->value);
-+
-+        const char * line;
-+
-+        xmlrpc_asprintf(&line, "%s: %s\r\n", fieldP->name, fieldValue);
-+        if (!ConnWrite(connP, line, strlen(line)))
-+                      ret = FALSE;
-+        xmlrpc_strfree(line);
-+        xmlrpc_strfree(fieldValue);
-+    }
-+      return ret;
-+}
-+
-+
-+abyss_bool
-+ResponseWriteStart(TSession * const sessionP) {
-+/*----------------------------------------------------------------------------
-+   Begin the process of sending the response for an HTTP transaction
-+   (i.e. Abyss session).
-+
-+   As part of this, send the entire HTTP header for the response.
-+-----------------------------------------------------------------------------*/
-+    struct _TServer * const srvP = ConnServer(sessionP->connP)->srvP;
-+
-     assert(!sessionP->responseStarted);
-     if (sessionP->status == 0) {
-         /* Handler hasn't set status.  That's an error */
-+        TraceMsg("Abyss client called ResponseWriteStart() on "
-+                 "a session for which he has not set the request status "
-+                 "('status' member of TSession).  Using status 500\n");
-         sessionP->status = 500;
-     }
-@@ -205,31 +342,33 @@ ResponseWriteStart(TSession * const sessionP) {
-     {
-         const char * const reason = HTTPReasonByStatus(sessionP->status);
-         const char * line;
-+              abyss_bool ret = TRUE;
-         xmlrpc_asprintf(&line,"HTTP/1.1 %u %s\r\n", sessionP->status, reason);
--        ConnWrite(sessionP->conn, line, strlen(line));
-+        ret = ConnWrite(sessionP->connP, line, strlen(line));
-         xmlrpc_strfree(line);
-+              if (!ret) return FALSE;
-     }
--    addConnectionHeader(sessionP);
-+
-+    addConnectionHeaderFld(sessionP);
-     if (sessionP->chunkedwrite && sessionP->chunkedwritemode)
-         ResponseAddField(sessionP, "Transfer-Encoding", "chunked");
--    addDateHeader(sessionP);
-+    addDateHeaderFld(sessionP);
-     if (srvP->advertise)
--        addServerHeader(sessionP);
-+        addServerHeaderFld(sessionP);
--    /* send all the fields */
--    for (i = 0; i < sessionP->response_headers.size; ++i) {
--        TTableItem * const ti = &sessionP->response_headers.item[i];
--        const char * line;
--        xmlrpc_asprintf(&line, "%s: %s\r\n", ti->name, ti->value);
--        ConnWrite(sessionP->conn, line, strlen(line));
--        xmlrpc_strfree(line);
--    }
-+    /* Note that sessionP->responseHeaderFields is defined to contain
-+       syntactically but not necessarily semantically valid header
-+       field names and values.
-+    */
-+    if (sendHeader(sessionP->connP, sessionP->responseHeaderFields))
-+              if (ConnWrite(sessionP->connP, "\r\n", 2))
-+                      return TRUE;
--    ConnWrite(sessionP->conn, "\r\n", 2);  
-+      return FALSE;
- }
-@@ -273,6 +412,26 @@ ResponseContentLength(TSession *      const sessionP,
- }
-+
-+void
-+ResponseAccessControl(TSession *        const abyssSessionP, 
-+                      ResponseAccessCtl const accessControl) {
-+
-+    if (accessControl.allowOrigin) {
-+        ResponseAddField(abyssSessionP, "Access-Control-Allow-Origin",
-+                         accessControl.allowOrigin);
-+        ResponseAddField(abyssSessionP, "Access-Control-Allow-Methods",
-+                         "POST");
-+        if (accessControl.expires) {
-+            char buffer[64];
-+            sprintf(buffer, "%u", accessControl.maxAge);
-+            ResponseAddField(abyssSessionP, "Access-Control-Max-Age", buffer);
-+        }
-+    }
-+}
-+
-+
-+
- /*********************************************************************
- ** MIMEType
- *********************************************************************/
-@@ -309,6 +468,8 @@ void
- MIMETypeDestroy(MIMEType * const MIMETypeP) {
-     PoolFree(&MIMETypeP->pool);
-+
-+    free(MIMETypeP);
- }
-@@ -330,6 +491,9 @@ MIMETypeTerm(void) {
-     if (globalMimeTypeP == NULL)
-         abort();
-+      ListFree(&globalMimeTypeP->extList);
-+      ListFree(&globalMimeTypeP->typeList);
-+
-     MIMETypeDestroy(globalMimeTypeP);
-     globalMimeTypeP = NULL;
-@@ -595,13 +759,17 @@ mimeTypeGuessFromFile(MIMEType *   const MIMETypeP,
-     if (ext && MIMETypeP)
-         retval = MIMETypeFromExt2(MIMETypeP, ext);
--    
-+
-+
-     if (!retval) {
-         if (fileContainsText(fileName))
-             retval = "text/plain";
-         else
-             retval = "application/octet-stream";  
-     }
-+
-+      if (!strcmp(retval, "text/plain"))
-+              retval = "text/plain; charset=utf-8";
-     return retval;
- }
-@@ -625,55 +793,6 @@ MIMETypeGuessFromFile(const char * const fileName) {
-                                   
--/*********************************************************************
--** Base64
--*********************************************************************/
--
--void
--Base64Encode(const char * const chars,
--             char *       const base64) {
--
--    /* Conversion table. */
--    static char tbl[64] = {
--        'A','B','C','D','E','F','G','H',
--        'I','J','K','L','M','N','O','P',
--        'Q','R','S','T','U','V','W','X',
--        'Y','Z','a','b','c','d','e','f',
--        'g','h','i','j','k','l','m','n',
--        'o','p','q','r','s','t','u','v',
--        'w','x','y','z','0','1','2','3',
--        '4','5','6','7','8','9','+','/'
--    };
--
--    uint i;
--    uint32_t length;
--    char * p;
--    const char * s;
--    
--    length = strlen(chars);  /* initial value */
--    s = &chars[0];  /* initial value */
--    p = &base64[0];  /* initial value */
--    /* Transform the 3x8 bits to 4x6 bits, as required by base64. */
--    for (i = 0; i < length; i += 3) {
--        *p++ = tbl[s[0] >> 2];
--        *p++ = tbl[((s[0] & 3) << 4) + (s[1] >> 4)];
--        *p++ = tbl[((s[1] & 0xf) << 2) + (s[2] >> 6)];
--        *p++ = tbl[s[2] & 0x3f];
--        s += 3;
--    }
--    
--    /* Pad the result if necessary... */
--    if (i == length + 1)
--        *(p - 1) = '=';
--    else if (i == length + 2)
--        *(p - 1) = *(p - 2) = '=';
--    
--    /* ...and zero-terminate it. */
--    *p = '\0';
--}
--
--
--
- /******************************************************************************
- **
- ** http.c
-diff --git a/libs/xmlrpc-c/lib/abyss/src/server.c b/libs/xmlrpc-c/lib/abyss/src/server.c
-index a52c823..392f368 100644
---- a/libs/xmlrpc-c/lib/abyss/src/server.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/server.c
-@@ -1,4 +1,8 @@
- /* Copyright information is at end of file */
-+
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
-+#define _BSD_SOURCE  /* Make sure setgroups()is in <grp.h> */
-+
- #include <assert.h>
- #include <stdio.h>
- #include <stdlib.h>
-@@ -35,6 +39,17 @@
- #include "server.h"
-+struct uriHandler {
-+    initHandlerFn init;
-+    termHandlerFn term;
-+    handleReq3Fn  handleReq3;
-+    handleReq2Fn  handleReq2;
-+    URIHandler    handleReq1;
-+    void *        userdata;
-+};
-+
-+
-+
- void
- ServerTerminate(TServer * const serverP) {
-@@ -44,10 +59,11 @@ ServerTerminate(TServer * const serverP) {
-     if (srvP->chanSwitchP) {
-         ChanSwitchInterrupt(srvP->chanSwitchP);
--        ChanSwitchDestroy(srvP->chanSwitchP);
-       }
- }
-+
-+
- void
- ServerResetTerminate(TServer * const serverP) {
-@@ -108,25 +124,29 @@ logClose(struct _TServer * const srvP) {
- static void
- initChanSwitchStuff(struct _TServer * const srvP,
-                     bool              const noAccept,
--                    TChanSwitch *     const userSwitchP,
-+                    TChanSwitch *     const chanSwitchP,
-+                    bool              const userChanSwitch,
-                     unsigned short    const port,
-                     const char **     const errorP) {
-     
--    if (userSwitchP) {
-+
-+    if (chanSwitchP) {
-         *errorP = NULL;
-         srvP->serverAcceptsConnections = TRUE;
--        srvP->chanSwitchP = userSwitchP;
-+        srvP->chanSwitchP = chanSwitchP;
-+        srvP->weCreatedChanSwitch = !userChanSwitch;
-     } else if (noAccept) {
-         *errorP = NULL;
-         srvP->serverAcceptsConnections = FALSE;
-         srvP->chanSwitchP = NULL;
-+        srvP->weCreatedChanSwitch = FALSE;
-     } else {
-         *errorP = NULL;
-         srvP->serverAcceptsConnections = TRUE;
-         srvP->chanSwitchP = NULL;
-+        srvP->weCreatedChanSwitch = FALSE;
-         srvP->port = port;
-     }
--    srvP->weCreatedChanSwitch = FALSE;
- }
-@@ -134,7 +154,8 @@ initChanSwitchStuff(struct _TServer * const srvP,
- static void
- createServer(struct _TServer ** const srvPP,
-              bool               const noAccept,
--             TChanSwitch *      const userChanSwitchP,
-+             TChanSwitch *      const chanSwitchP,
-+             bool               const userChanSwitch,
-              unsigned short     const portNumber,             
-              const char **      const errorP) {
-@@ -148,8 +169,8 @@ createServer(struct _TServer ** const srvPP,
-     } else {
-         srvP->terminationRequested = false;
--        initChanSwitchStuff(srvP, noAccept, userChanSwitchP, portNumber,
--                            errorP);
-+        initChanSwitchStuff(srvP, noAccept, chanSwitchP, userChanSwitch,
-+                            portNumber, errorP);
-         if (!*errorP) {
-             srvP->builtinHandlerP = HandlerCreate();
-@@ -167,6 +188,7 @@ createServer(struct _TServer ** const srvPP,
-                 srvP->timeout          = 15;
-                 srvP->advertise        = TRUE;
-                 srvP->useSigchld       = FALSE;
-+                srvP->uriHandlerStackSize = 0;
-             
-                 initUnixStuff(srvP);
-@@ -218,11 +240,14 @@ ServerCreate(TServer *       const serverP,
-              const char *    const logFileName) {
-     bool const noAcceptFalse = FALSE;
-+    bool const userChanSwitchFalse = FALSE;
-     bool success;
-     const char * error;
--    createServer(&serverP->srvP, noAcceptFalse, NULL, portNumber, &error);
-+    createServer(&serverP->srvP, noAcceptFalse,
-+                 NULL, userChanSwitchFalse,
-+                 portNumber, &error);
-     if (error) {
-         TraceMsg(error);
-@@ -291,10 +316,13 @@ ServerCreateSocket(TServer *    const serverP,
-         xmlrpc_strfree(error);
-     } else {
-         bool const noAcceptFalse = FALSE;
-+        bool const userChanSwitchFalse = FALSE;
-         const char * error;
--        createServer(&serverP->srvP, noAcceptFalse, chanSwitchP, 0, &error);
-+        createServer(&serverP->srvP, noAcceptFalse,
-+                     chanSwitchP, userChanSwitchFalse,
-+                     0, &error);
-         if (error) {
-             TraceMsg(error);
-@@ -305,6 +333,8 @@ ServerCreateSocket(TServer *    const serverP,
-             
-             setNamePathLog(serverP, name, filesPath, logFileName);
-         }
-+        if (!success)
-+            ChanSwitchDestroy(chanSwitchP);
-     }
-     return success;
-@@ -319,11 +349,14 @@ ServerCreateNoAccept(TServer *    const serverP,
-                      const char * const logFileName) {
-     bool const noAcceptTrue = TRUE;
-+    bool const userChanSwitchFalse = FALSE;
-     bool success;
-     const char * error;
--    createServer(&serverP->srvP, noAcceptTrue, NULL, 0, &error);
-+    createServer(&serverP->srvP, noAcceptTrue,
-+                 NULL, userChanSwitchFalse,
-+                 0, &error);
-     if (error) {
-         TraceMsg(error);
-@@ -345,11 +378,14 @@ ServerCreateSwitch(TServer *     const serverP,
-                    const char ** const errorP) {
-     
-     bool const noAcceptFalse = FALSE;
-+    bool const userChanSwitchTrue = TRUE;
-     assert(serverP);
-     assert(chanSwitchP);
--    createServer(&serverP->srvP, noAcceptFalse, chanSwitchP, 0, errorP);
-+    createServer(&serverP->srvP, noAcceptFalse,
-+                 chanSwitchP, userChanSwitchTrue,
-+                 0, errorP);
- }
-@@ -383,7 +419,7 @@ terminateHandlers(TList * const handlersP) {
-     if (handlersP->item) {
-         unsigned int i;
-         for (i = handlersP->size; i > 0; --i) {
--            URIHandler2 * const handlerP = handlersP->item[i-1];
-+            struct uriHandler * const handlerP = handlersP->item[i-1];
-             if (handlerP->term)
-                 handlerP->term(handlerP->userdata);
-         }
-@@ -397,7 +433,7 @@ ServerFree(TServer * const serverP) {
-     struct _TServer * const srvP = serverP->srvP;
--    if (srvP->weCreatedChanSwitch)
-+    if (srvP->weCreatedChanSwitch && srvP->chanSwitchP)
-         ChanSwitchDestroy(srvP->chanSwitchP);
-     xmlrpc_strfree(srvP->name);
-@@ -456,7 +492,7 @@ void
- ServerSetKeepaliveTimeout(TServer *       const serverP,
-                           xmlrpc_uint32_t const keepaliveTimeout) {
--    serverP->srvP->keepalivetimeout = keepaliveTimeout;
-+    serverP->srvP->keepalivetimeout = MAX(keepaliveTimeout, 1);
- }
-@@ -465,7 +501,7 @@ void
- ServerSetKeepaliveMaxConn(TServer *       const serverP,
-                           xmlrpc_uint32_t const keepaliveMaxConn) {
--    serverP->srvP->keepalivemaxconn = keepaliveMaxConn;
-+    serverP->srvP->keepalivemaxconn = MAX(keepaliveMaxConn, 1);
- }
-@@ -497,6 +533,22 @@ ServerSetMimeType(TServer *  const serverP,
-+static URIHandler2
-+makeUriHandler2(const struct uriHandler * const handlerP) {
-+
-+    URIHandler2 retval;
-+
-+    retval.init       = handlerP->init;
-+    retval.term       = handlerP->term;
-+    retval.handleReq2 = handlerP->handleReq2;
-+    retval.handleReq1 = handlerP->handleReq1;
-+    retval.userdata   = handlerP->userdata;
-+
-+    return retval;
-+}
-+
-+
-+
- static void
- runUserHandler(TSession *        const sessionP,
-                struct _TServer * const srvP) {
-@@ -507,11 +559,14 @@ runUserHandler(TSession *        const sessionP,
-     for (i = srvP->handlers.size-1, handled = FALSE;
-          i >= 0 && !handled;
-          --i) {
--        URIHandler2 * const handlerP = srvP->handlers.item[i];
-+        const struct uriHandler * const handlerP = srvP->handlers.item[i];
-         
--        if (handlerP->handleReq2)
--            handlerP->handleReq2(handlerP, sessionP, &handled);
--        else if (handlerP->handleReq1)
-+        if (handlerP->handleReq3)
-+            handlerP->handleReq3(handlerP->userdata, sessionP, &handled);
-+        if (handlerP->handleReq2) {
-+            URIHandler2 handler2 = makeUriHandler2(handlerP);
-+            handlerP->handleReq2(&handler2, sessionP, &handled);
-+        } else if (handlerP->handleReq1)
-             handled = handlerP->handleReq1(sessionP);
-     }
-@@ -524,24 +579,81 @@ runUserHandler(TSession *        const sessionP,
- static void
--processDataFromClient(TConn *  const connectionP,
--                      bool     const lastReqOnConn,
--                      uint32_t const timeout,
--                      bool *   const keepAliveP) {
-+handleReqTooNewHttpVersion(TSession * const sessionP) {
-+
-+    const char * msg;
-+
-+    ResponseStatus(sessionP, 505);
-+
-+    xmlrpc_asprintf(&msg, "Request is in HTTP Version %u"
-+                    "We understand only HTTP 1",
-+                    sessionP->version.major);
-+    
-+    ResponseError2(sessionP, msg);
-+    
-+    xmlrpc_strfree(msg);
-+}
--    TSession session = {0};  /* initilization, an afforadble alternative to random memory being misinterpreted! */
-+
-+
-+static void
-+handleReqInvalidURI(TSession * const sessionP) {
-+
-+    ResponseStatus(sessionP, 400);
-+
-+    ResponseError2(sessionP, "Invalid URI");
-+}
-+
-+
-+
-+static void
-+processRequestFromClient(TConn *  const connectionP,
-+                         bool     const lastReqOnConn,
-+                         uint32_t const timeout,
-+                         bool *   const keepAliveP) {
-+/*----------------------------------------------------------------------------
-+   Get and execute one HTTP request from client connection *connectionP,
-+   through the connection buffer.  I.e. Some of the request may already be in
-+   the connection buffer, and we may leave some of later requests in the
-+   connection buffer.
-+
-+   In fact, due to timing considerations, we assume the client has begun
-+   sending the request, which as a practical matter means Caller has already
-+   deposited some of it in the connection buffer.
-+
-+   If there isn't one full request in the buffer now, we wait for one full
-+   request to come through the buffer, up to 'timeout'.
-+
-+   We return as *keepAliveP whether Caller should keep the connection
-+   alive for a while for possible future requests from the client, based
-+   on 'lastReqOnConn' and the content of the HTTP request.
-+
-+   Executing the request consists primarily of calling the URI handlers that
-+   are associated with the connection (*connectionP), passing each the request
-+   information we read.  Each handler can respond according to the HTTP method
-+   (GET, POST, etc) and URL etc, and that response may be either to
-+   execute the request and send the response or refuse the request and let
-+   us call the next one in the list.
-+-----------------------------------------------------------------------------*/
-+    TSession session;
-+    const char * error;
-+    uint16_t httpErrorCode;
-     RequestInit(&session, connectionP);
-     session.serverDeniesKeepalive = lastReqOnConn;
-         
--    RequestRead(&session, timeout);
-+    RequestRead(&session, timeout, &error, &httpErrorCode);
--    if (session.status == 0) {
-+    if (error) {
-+        ResponseStatus(&session, httpErrorCode);
-+        ResponseError2(&session, error);
-+        xmlrpc_strfree(error);
-+    } else {
-         if (session.version.major >= 2)
--            ResponseStatus(&session, 505);
-+            handleReqTooNewHttpVersion(&session);
-         else if (!RequestValidURI(&session))
--            ResponseStatus(&session, 400);
-+            handleReqInvalidURI(&session);
-         else
-             runUserHandler(&session, connectionP->server->srvP);
-     }
-@@ -582,21 +694,35 @@ serverFunc(void * const userHandle) {
-     connectionDone = FALSE;
-     while (!connectionDone) {
--        bool success;
-+        bool timedOut, eof;
-+        const char * readError;
-         
--        /* Wait to read until timeout */
--        success = ConnRead(connectionP, srvP->keepalivetimeout);
--
--        if (!success)
-+        /* Wait for and get beginning (at least ) of next request.  We do
-+           this separately from getting the rest of the request because we
-+           treat dead time between requests differently from dead time in
-+           the middle of a request.
-+        */
-+        ConnRead(connectionP, srvP->keepalivetimeout,
-+                 &timedOut, &eof, &readError);
-+
-+        if (readError) {
-+            TraceMsg("Failed to read from Abyss connection.  %s", readError);
-+            xmlrpc_strfree(readError);
-             connectionDone = TRUE;
--        else {
-+        } else if (timedOut) {
-+            connectionDone = TRUE;
-+        } else if (eof) {
-+            connectionDone = TRUE;
-+        } else if (srvP->terminationRequested) {
-+            connectionDone = TRUE;
-+        } else {
-             bool const lastReqOnConn =
-                 requestCount + 1 >= srvP->keepalivemaxconn;
-             bool keepalive;
-             
--            processDataFromClient(connectionP, lastReqOnConn, srvP->timeout,
--                                  &keepalive);
-+            processRequestFromClient(connectionP, lastReqOnConn, srvP->timeout,
-+                                     &keepalive);
-             
-             ++requestCount;
-@@ -611,6 +737,14 @@ serverFunc(void * const userHandle) {
-+/* This is the maximum amount of stack space, in bytes, serverFunc()
-+   itself requires -- not counting what the user's request handler
-+   (which serverFunc() calls) requires.
-+*/
-+#define SERVER_FUNC_STACK 1024
-+
-+
-+
- static void
- createSwitchFromPortNum(unsigned short const portNumber,
-                         TChanSwitch ** const chanSwitchPP,
-@@ -700,8 +834,8 @@ ServerInit(TServer * const serverP) {
-     }
-     if (retError) {
-         TraceMsg("ServerInit() failed.  %s", retError);
--              return 0;
-         xmlrpc_strfree(retError);
-+              return 0;
-     }
-       return 1;
-@@ -920,7 +1054,9 @@ acceptAndProcessNextConnection(
-             waitForConnectionCapacity(outstandingConnListP);
-             
-             ConnCreate(&connectionP, serverP, channelP, channelInfoP,
--                       &serverFunc, &destroyChannel, ABYSS_BACKGROUND,
-+                       &serverFunc,
-+                       SERVER_FUNC_STACK + srvP->uriHandlerStackSize,
-+                       &destroyChannel, ABYSS_BACKGROUND,
-                        srvP->useSigchld,
-                        &error);
-             if (!error) {
-@@ -932,6 +1068,8 @@ acceptAndProcessNextConnection(
-                    destroy *channelP.
-                 */
-             } else {
-+                TraceMsg("Failed to create an Abyss connection "
-+                         "out of new channel %lx.  %s", channelP, error);
-                 xmlrpc_strfree(error);
-                 ChannelDestroy(channelP);
-                 free(channelInfoP);
-@@ -998,7 +1136,8 @@ serverRunChannel(TServer *     const serverP,
-     ConnCreate(&connectionP, 
-                serverP, channelP, channelInfoP,
--               &serverFunc, NULL, ABYSS_FOREGROUND, srvP->useSigchld,
-+               &serverFunc, SERVER_FUNC_STACK + srvP->uriHandlerStackSize,
-+               NULL, ABYSS_FOREGROUND, srvP->useSigchld,
-                &error);
-     if (error) {
-         xmlrpc_asprintf(errorP, "Couldn't create HTTP connection out of "
-@@ -1230,24 +1369,43 @@ ServerDaemonize(TServer * const serverP) {
--void
--ServerAddHandler2(TServer *     const serverP,
--                  URIHandler2 * const handlerArgP,
--                  abyss_bool *  const successP) {
-+static void
-+serverAddHandler(TServer *     const serverP,
-+                 initHandlerFn       init,
-+                 termHandlerFn       term,
-+                 URIHandler          handleReq1,
-+                 handleReq2Fn        handleReq2,
-+                 handleReq3Fn        handleReq3,
-+                 void *        const userdata,
-+                 size_t        const handleReqStackSizeReq,
-+                 abyss_bool *  const successP) {
--    URIHandler2 * handlerP;
-+    struct _TServer * const srvP = serverP->srvP;
-+    size_t handleReqStackSize =
-+        handleReqStackSizeReq ? handleReqStackSizeReq : 128*1024;
-+
-+    struct uriHandler * handlerP;
-     MALLOCVAR(handlerP);
-     if (handlerP == NULL)
-         *successP = FALSE;
-     else {
--        *handlerP = *handlerArgP;
--
-+        handlerP->init       = init;
-+        handlerP->term       = term;
-+        handlerP->handleReq1 = handleReq1;
-+        handlerP->handleReq2 = handleReq2;
-+        handlerP->handleReq3 = handleReq3;
-+        handlerP->userdata   = userdata;
-+
-+        srvP->uriHandlerStackSize =
-+            MAX(srvP->uriHandlerStackSize, handleReqStackSize);
-+        
-         if (handlerP->init == NULL)
-             *successP = TRUE;
--        else
--            handlerP->init(handlerP, successP);
--
-+        else {
-+            URIHandler2 handler2 = makeUriHandler2(handlerP);
-+            handlerP->init(&handler2, successP);
-+        }
-         if (*successP)
-             *successP = ListAdd(&serverP->srvP->handlers, handlerP);
-@@ -1258,20 +1416,42 @@ ServerAddHandler2(TServer *     const serverP,
--static URIHandler2 *
--createHandler(URIHandler const function) {
-+void
-+ServerAddHandler3(TServer *                        const serverP,
-+                  const struct ServerReqHandler3 * const handlerP,
-+                  abyss_bool *                     const successP) {
--    URIHandler2 * handlerP;
-+    serverAddHandler(serverP, NULL, handlerP->term, NULL, NULL,
-+                     handlerP->handleReq, handlerP->userdata,
-+                     handlerP->handleReqStackSize, successP);
-+}
--    MALLOCVAR(handlerP);
--    if (handlerP != NULL) {
--        handlerP->init       = NULL;
--        handlerP->term       = NULL;
--        handlerP->userdata   = NULL;
--        handlerP->handleReq2 = NULL;
--        handlerP->handleReq1 = function;
--    }
--    return handlerP;
-+
-+
-+void
-+ServerAddHandler2(TServer *     const serverP,
-+                  URIHandler2 * const handlerArgP,
-+                  abyss_bool *  const successP) {
-+
-+    /* This generation of the URI handler interface is strange because
-+       it went through an unfortunate evolution.  So it halfway looks like
-+       the use supplies a handler object and Abyss calls its methods, and
-+       halfway looks like the user simply describes his handler.
-+
-+       Abyss calls handleReq2 with a pointer to a URIHandler2 like the
-+       one which is our argument, but it isn't the same one.  User can
-+       discard *handlerArgP as soon as we return.
-+    */
-+    
-+    serverAddHandler(serverP,
-+                     handlerArgP->init,
-+                     handlerArgP->term,
-+                     handlerArgP->handleReq1,
-+                     handlerArgP->handleReq2,
-+                     NULL,
-+                     handlerArgP->userdata,
-+                     0,
-+                     successP);
- }
-@@ -1280,35 +1460,45 @@ abyss_bool
- ServerAddHandler(TServer *  const serverP,
-                  URIHandler const function) {
--    URIHandler2 * handlerP;
--    bool success;
-+    URIHandler2 handler;
-+    abyss_bool success;
--    handlerP = createHandler(function);
-+    handler.init       = NULL;
-+    handler.term       = NULL;
-+    handler.userdata   = NULL;
-+    handler.handleReq2 = NULL;
-+    handler.handleReq1 = function;
--    if (handlerP == NULL)
--        success = FALSE;
--    else {
--        success = ListAdd(&serverP->srvP->handlers, handlerP);
-+    ServerAddHandler2(serverP, &handler, &success);
--        if (!success)
--            free(handlerP);
--    }
-     return success;
- }
-+/* This is the maximum amount of stack we allow a user's default URI
-+   handler to use.  (If he exceeds this, results are undefined).
-+
-+   We really ought to provide user a way to set this, as he can for
-+   his non-default URI handlers.
-+*/
-+#define USER_DEFAULT_HANDLER_STACK 128*1024
-+
- void
- ServerDefaultHandler(TServer *  const serverP,
-                      URIHandler const handler) {
-     struct _TServer * const srvP = serverP->srvP;
--    if (handler)
-+    if (handler) {
-         srvP->defaultHandler = handler;
--    else {
-+        srvP->uriHandlerStackSize =
-+            MAX(srvP->uriHandlerStackSize, USER_DEFAULT_HANDLER_STACK);
-+    } else {
-         srvP->defaultHandler = HandlerDefaultBuiltin;
-         srvP->defaultHandlerContext = srvP->builtinHandlerP;
-+        srvP->uriHandlerStackSize =
-+            MAX(srvP->uriHandlerStackSize, HandlerDefaultBuiltinStack);
-     }
- }
-diff --git a/libs/xmlrpc-c/lib/abyss/src/server.h b/libs/xmlrpc-c/lib/abyss/src/server.h
-index 39aa63e..ed414b8 100644
---- a/libs/xmlrpc-c/lib/abyss/src/server.h
-+++ b/libs/xmlrpc-c/lib/abyss/src/server.h
-@@ -54,7 +54,7 @@ struct _TServer {
-            Server calls each one in order until one reports that it handled
-            it.
--           Each item in the list of of type 'URIHandler2'.
-+           Each item in the list of of type 'uriHandler'.
-         */
-     URIHandler defaultHandler;
-         /* The handler for HTTP requests that aren't claimed by any handler
-@@ -75,6 +75,12 @@ struct _TServer {
-            be aware of SIGCHLD and will instead poll for existence of PIDs
-            to determine if a child has died.
-         */
-+    size_t uriHandlerStackSize;
-+        /* The maximum amount of stack any URI handler request handler
-+           function will use.  Note that this is just the requirement
-+           of the function itself, not the stack size for the thread
-+           that runs it.
-+        */
- #ifndef WIN32
-     uid_t uid;
-     gid_t gid;
-diff --git a/libs/xmlrpc-c/lib/abyss/src/session.c b/libs/xmlrpc-c/lib/abyss/src/session.c
-index ae3a078..f0488e4 100644
---- a/libs/xmlrpc-c/lib/abyss/src/session.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/session.c
-@@ -23,28 +23,34 @@ SessionRefillBuffer(TSession * const sessionP) {
-    I.e. read data from the socket.
- -----------------------------------------------------------------------------*/
--    struct _TServer * const srvP = sessionP->conn->server->srvP;
-+    struct _TServer * const srvP = sessionP->connP->server->srvP;
-     bool failed;
-     failed = FALSE;  /* initial value */
-             
-     /* Reset our read buffer & flush data from previous reads. */
--    ConnReadInit(sessionP->conn);
-+    ConnReadInit(sessionP->connP);
-     if (sessionP->continueRequired)
-         failed = !HTTPWriteContinue(sessionP);
-     if (!failed) {
-+        const char * readError;
-+
-         sessionP->continueRequired = FALSE;
--        /* Read more network data into our buffer.  If we encounter a
--           timeout, exit immediately.  We're very forgiving about the
--           timeout here.  We allow a full timeout per network read, which
--           would allow somebody to keep a connection alive nearly
--           indefinitely.  But it's hard to do anything intelligent here
--           without very complicated code.
-+        /* Read more network data into our buffer.  Fail if we time out before
-+           client sends any data or client closes the connection or there's
-+           some network error.  We're very forgiving about the timeout here.
-+           We allow a full timeout per network read, which would allow
-+           somebody to keep a connection alive nearly indefinitely.  But it's
-+           hard to do anything intelligent here without very complicated code.
-         */
--        failed = !ConnRead(sessionP->conn, srvP->timeout);    
-+        ConnRead(sessionP->connP, srvP->timeout, NULL, NULL, &readError);     
-+        if (readError) {
-+            failed = TRUE;
-+            xmlrpc_strfree(readError);
-+        }
-     }
-     return !failed;
- }
-@@ -54,7 +60,7 @@ SessionRefillBuffer(TSession * const sessionP) {
- size_t
- SessionReadDataAvail(TSession * const sessionP) {
--    return sessionP->conn->buffersize - sessionP->conn->bufferpos;
-+    return sessionP->connP->buffersize - sessionP->connP->bufferpos;
- }
-@@ -73,18 +79,18 @@ SessionGetReadData(TSession *    const sessionP,
-    We return a pointer to the first byte as *outStartP, and the length in
-    bytes as *outLenP.  The memory pointed to belongs to the session.
- -----------------------------------------------------------------------------*/
--    uint32_t const bufferPos = sessionP->conn->bufferpos;
-+    uint32_t const bufferPos = sessionP->connP->bufferpos;
--    *outStartP = &sessionP->conn->buffer[bufferPos];
-+    *outStartP = &sessionP->connP->buffer.t[bufferPos];
--    assert(bufferPos <= sessionP->conn->buffersize);
-+    assert(bufferPos <= sessionP->connP->buffersize);
--    *outLenP = MIN(max, sessionP->conn->buffersize - bufferPos);
-+    *outLenP = MIN(max, sessionP->connP->buffersize - bufferPos);
-     /* move pointer past the bytes we are returning */
--    sessionP->conn->bufferpos += *outLenP;
-+    sessionP->connP->bufferpos += *outLenP;
--    assert(sessionP->conn->bufferpos <= sessionP->conn->buffersize);
-+    assert(sessionP->connP->bufferpos <= sessionP->connP->buffersize);
- }
-@@ -102,7 +108,7 @@ void
- SessionGetChannelInfo(TSession * const sessionP,
-                       void **    const channelInfoPP) {
-     
--    *channelInfoPP = sessionP->conn->channelInfoP;
-+    *channelInfoPP = sessionP->connP->channelInfoP;
- }
-@@ -125,25 +131,24 @@ SessionLog(TSession * const sessionP) {
-     
-     DateToLogString(sessionP->date, &date);
-     
--    ConnFormatClientAddr(sessionP->conn, &peerInfo);
-+    ConnFormatClientAddr(sessionP->connP, &peerInfo);
-     
--    xmlrpc_asprintf(&logline, "%s - %s - [%s] \"%s\" %d %d",
-+    xmlrpc_asprintf(&logline, "%s - %s - [%s] \"%s\" %d %u",
-                     peerInfo,
-                     user,
-                     date, 
-                     sessionP->validRequest ?
-                         sessionP->requestInfo.requestline : "???",
-                     sessionP->status,
--                    sessionP->conn->outbytes
-+                    sessionP->connP->outbytes
-         );
-     xmlrpc_strfree(peerInfo);
-     xmlrpc_strfree(date);
-     
--    if (logline) {
--        LogWrite(sessionP->conn->server, logline);
-+    LogWrite(sessionP->connP->server, logline);
-+
-+    xmlrpc_strfree(logline);
-         
--        xmlrpc_strfree(logline);
--    }
-     return true;
- }
-@@ -152,7 +157,7 @@ SessionLog(TSession * const sessionP) {
- void *
- SessionGetDefaultHandlerCtx(TSession * const sessionP) {
--    struct _TServer * const srvP = sessionP->conn->server->srvP;
-+    struct _TServer * const srvP = sessionP->connP->server->srvP;
-     return srvP->defaultHandlerContext;
- }
-diff --git a/libs/xmlrpc-c/lib/abyss/src/session.h b/libs/xmlrpc-c/lib/abyss/src/session.h
-index 058d543..07700e9 100644
---- a/libs/xmlrpc-c/lib/abyss/src/session.h
-+++ b/libs/xmlrpc-c/lib/abyss/src/session.h
-@@ -47,17 +47,29 @@ struct _TSession {
-            ResponseWriteStart())
-         */
--    struct _TConn * conn;
-+    struct _TConn * connP;
-     httpVersion version;
--    TTable request_headers;
--        /* All the headers in the HTTP request.  The key is the header
--           name in lower case.  The value is the verbatim value from
--           the header.
-+    TTable requestHeaderFields;
-+        /* All the fields of the header of the HTTP request.  The key is the
-+           field name in lower case.  The value is the verbatim value from
-+           the field.
-         */
--    TTable response_headers;
-+    TTable responseHeaderFields;
-+        /* All the fields of the header of the HTTP response.
-+           This gets successively computed; at any moment, it is the list of
-+           fields the user has requested so far.  It also includes fields
-+           Abyss itself has decided to include.  (Blechh.  This needs to be
-+           cleaned up).
-+
-+           Each table item is an HTTP header field.  The Name component of the
-+           table item is the header field name (it is syntactically valid but
-+           not necessarily a defined field name) and the Value comonent is the
-+           header field value (it is syntactically valid but not necessarily
-+           semantically valid).
-+        */
-     time_t date;
-diff --git a/libs/xmlrpc-c/lib/abyss/src/socket.c b/libs/xmlrpc-c/lib/abyss/src/socket.c
-index d76c611..4724e6d 100644
---- a/libs/xmlrpc-c/lib/abyss/src/socket.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/socket.c
-@@ -9,6 +9,7 @@
- #include <assert.h>
- #include <stdlib.h>
-+#include "int.h"
- #include "mallocvar.h"
- #include "xmlrpc-c/abyss.h"
- #include "channel.h"
-@@ -26,7 +27,7 @@
-    functions that are particular to an implementation.
- */
--static uint const socketSignature = 0x060609;
-+static unsigned int const socketSignature = 0x060609;
- static void
-diff --git a/libs/xmlrpc-c/lib/abyss/src/socket.h b/libs/xmlrpc-c/lib/abyss/src/socket.h
-index 20e8e09..50e67ba 100644
---- a/libs/xmlrpc-c/lib/abyss/src/socket.h
-+++ b/libs/xmlrpc-c/lib/abyss/src/socket.h
-@@ -17,10 +17,12 @@
-    so there may be few or no users of TSocket.
- ============================================================================*/
-+#include "int.h"
-+
- #include "xmlrpc-c/abyss.h"
- struct _TSocket {
--    uint               signature;
-+    unsigned int   signature;
-         /* With both background and foreground use of sockets, and
-            background being both fork and pthread, it is very easy to
-            screw up socket lifetime and try to destroy twice.  We use
-diff --git a/libs/xmlrpc-c/lib/abyss/src/socket_openssl.c b/libs/xmlrpc-c/lib/abyss/src/socket_openssl.c
-index e90be0d..3082851 100644
---- a/libs/xmlrpc-c/lib/abyss/src/socket_openssl.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/socket_openssl.c
-@@ -126,6 +126,8 @@ channelDestroy(TChannel * const channelP) {
-         SSL_shutdown(channelOpensslP->sslP);
-     free(channelOpensslP);
-+      channelP->implP = 0;
-+
- }
-diff --git a/libs/xmlrpc-c/lib/abyss/src/socket_unix.c b/libs/xmlrpc-c/lib/abyss/src/socket_unix.c
-index 6231852..9d5dc25 100644
---- a/libs/xmlrpc-c/lib/abyss/src/socket_unix.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/socket_unix.c
-@@ -42,6 +42,7 @@
- #define sane_close(_it) do {if (_it > -1) { close(_it) ; _it = -1; }} while (_it > -1)
-+
- typedef struct {
-     int interruptorFd;
-     int interrupteeFd;
-@@ -164,6 +165,7 @@ channelDestroy(TChannel * const channelP) {
-         sane_close(socketUnixP->fd);
-     free(socketUnixP);
-+      channelP->implP = 0;
- }
-@@ -180,37 +182,44 @@ channelWrite(TChannel *            const channelP,
-     size_t bytesLeft;
-     bool error;
-+    int to_count = 0;
-     assert(sizeof(size_t) >= sizeof(len));
--    for (bytesLeft = len, error = FALSE;
--         bytesLeft > 0 && !error;
--        ) {
--        size_t const maxSend = (size_t)(-1) >> 1;
-+    for (bytesLeft = len, error = FALSE; bytesLeft > 0 && !error; ) {
-+        size_t const maxSend =        4096 * 2; /* with respect to resource allocation this might be a better value than 2^31 */ 
-+        ssize_t rc = 0;
-+
-+        rc = send(socketUnixP->fd, buffer + len - bytesLeft, MIN(maxSend, bytesLeft), 0);
-+              if (rc > 0) {          /* 0 means connection closed; < 0 means severe error ; > 0 means bytes transferred */
-+                      to_count = 0;
-+                  bytesLeft -= rc;
-+                      if (ChannelTraceIsActive)
-+                fprintf(stderr, "Abyss: sent %d bytes: '%.*s'\n", rc, MIN(rc, 4096), buffer + len - bytesLeft);
-+              } 
-+              else if (!rc) {
-+                      error = TRUE;
-+                      if (ChannelTraceIsActive)
-+                              fprintf(stderr, "\nAbyss: send() failed: socket closed");
-+              }
-+              else {
-+                      error = TRUE;
-+            if (errno == EWOULDBLOCK) {
-+                              usleep(20 * 1000); /* give socket another chance after xx millisec) */
-+                              if (++to_count < 300) {
-+                                      error = FALSE;
-+                              }
-+                              if (ChannelTraceIsActive)
-+                                      fprintf(stderr, "\nAbyss: send() failed with errno %d (%s) cnt %d, will retry\n", errno, strerror(errno), to_count);
-+                      }
-+                      if (ChannelTraceIsActive)
-+                  fprintf(stderr, "Abyss: send() failed with errno=%d (%s)", errno, strerror(errno));
-+              }
-+    }
-+
-+      *failedP = error;
--        ssize_t rc;
--        
--        rc = send(socketUnixP->fd, &buffer[len-bytesLeft],
--                  MIN(maxSend, bytesLeft), 0);
--        if (ChannelTraceIsActive) {
--            if (rc < 0)
--                fprintf(stderr, "Abyss channel: send() failed.  errno=%d (%s)",
--                        errno, strerror(errno));
--            else if (rc == 0)
--                fprintf(stderr, "Abyss channel: send() failed.  "
--                        "Socket closed.\n");
--            else
--                fprintf(stderr, "Abyss channel: sent %u bytes: '%.*s'\n",
--                        rc, rc, &buffer[len-bytesLeft]);
--        }
--        if (rc <= 0)
--            /* 0 means connection closed; < 0 means severe error */
--            error = TRUE;
--        else
--            bytesLeft -= rc;
--    }
--    *failedP = error;
- }
-@@ -225,25 +234,29 @@ channelRead(TChannel *      const channelP,
-             bool *          const failedP) {
-     struct socketUnix * const socketUnixP = channelP->implP;
--
--    int rc;
--    rc = recv(socketUnixP->fd, buffer, bufferSize, 0);
--
--    if (rc < 0) {
--        *failedP = TRUE;
--        if (ChannelTraceIsActive)
--            fprintf(stderr, "Abyss channel: "
--                    "Failed to receive data from socket.  "
--                    "recv() failed with errno %d (%s)\n",
--                    errno, strerror(errno));
--    } else {
--        *failedP = FALSE;
--        *bytesReceivedP = rc;
--
--        if (ChannelTraceIsActive)
--            fprintf(stderr, "Abyss channel: read %u bytes: '%.*s'\n",
--                    *bytesReceivedP, (int)(*bytesReceivedP), buffer);
--    }
-+    int retries = 300; 
-+      
-+      for (*failedP = TRUE; *failedP && retries; retries--) {
-+              int rc = recv(socketUnixP->fd, buffer, bufferSize, 0);
-+              if (rc < 0) {
-+                      if (errno == EWOULDBLOCK) {
-+                              if (ChannelTraceIsActive)
-+                                      fprintf(stderr, "\nAbyss: recv() failed with errno %d (%s) cnt %d, will retry\n", errno, strerror(errno), retries);
-+                              usleep(20 * 1000); /* give socket another chance after xx millisec)*/
-+                              *failedP = FALSE;
-+                      } else {
-+                              if (ChannelTraceIsActive)
-+                                      fprintf(stderr, "\nAbyss: recv() failed with errno %d (%s)\n", errno, strerror(errno));
-+                              break;
-+                      }
-+              } else {
-+                      *failedP = FALSE;
-+                      *bytesReceivedP = rc;
-+
-+                      if (ChannelTraceIsActive)
-+                              fprintf(stderr, "Abyss channel: read %u bytes: '%.*s'\n", bytesReceivedP, (int)(*bytesReceivedP), buffer);
-+              }
-+      }
- }
-@@ -270,7 +283,7 @@ channelWait(TChannel * const channelP,
-    one.
-    We return before the requested condition holds if 'timeoutMs'
--   milliseconds pass.  timoutMs == TIME_INFINITE means infinity.
-+   milliseconds pass.  timeoutMs == TIME_INFINITE means infinity.
-    We return before the requested condition holds if the process receives
-    (and catches) a signal, but only if it receives that signal a certain
-@@ -312,8 +325,7 @@ channelWait(TChannel * const channelP,
-     pollfds[1].events = POLLIN;
-     
-     rc = poll(pollfds, ARRAY_SIZE(pollfds),
--              timeoutMs == TIME_INFINITE ? -1 : timeoutMs);
--
-+              timeoutMs == TIME_INFINITE ? -1 : (int)timeoutMs);
-     if (rc < 0) {
-         if (errno == EINTR) {
-@@ -477,10 +489,9 @@ makeChannelInfo(struct abyss_unix_chaninfo ** const channelInfoPP,
-         channelInfoP->peerAddrLen = peerAddrLen;
-         channelInfoP->peerAddr    = peerAddr;
-         
--        *channelInfoPP = channelInfoP;
--
-         *errorP = NULL;
-     }
-+    *channelInfoPP = channelInfoP;
- }
-@@ -493,13 +504,13 @@ makeChannelFromFd(int           const fd,
-     struct socketUnix * socketUnixP;
-     MALLOCVAR(socketUnixP);
--
-+    
-     if (socketUnixP == NULL)
-         xmlrpc_asprintf(errorP, "Unable to allocate memory for Unix "
-                         "channel descriptor");
-     else {
-         TChannel * channelP;
--
-+        
-         socketUnixP->fd = fd;
-         socketUnixP->userSuppliedFd = TRUE;
-@@ -507,6 +518,7 @@ makeChannelFromFd(int           const fd,
-         if (!*errorP) {
-             ChannelCreate(&channelVtbl, socketUnixP, &channelP);
-+        
-             if (channelP == NULL)
-                 xmlrpc_asprintf(errorP, "Unable to allocate memory for "
-                                 "channel descriptor.");
-@@ -617,9 +629,13 @@ waitForConnection(struct socketUnix * const listenSocketP,
-    We return before the requested condition holds if the process receives
-    (and catches) a signal, but only if it receives that signal a certain
--   time after we start running.  (That means this function isn't useful
-+   time after we start running.  (That means this behavior isn't useful
-    for most purposes).
-+   We furthermore return before the requested condition holds if someone sends
-+   a byte through the listening socket's interrupt pipe (or has sent one
-+   previously since the most recent time the pipe was drained).
-+
-    Return *interruptedP == true if we return before there is a connection
-    ready to accept.
- -----------------------------------------------------------------------------*/
-@@ -665,35 +681,42 @@ createChannelForAccept(int             const acceptedFd,
-    'peerAddr' is the address of the client, from accept().
- -----------------------------------------------------------------------------*/
--    struct socketUnix * acceptedSocketP;
-+    struct abyss_unix_chaninfo * channelInfoP;
--    MALLOCVAR(acceptedSocketP);
--      
--    if (!acceptedSocketP)
--        xmlrpc_asprintf(errorP, "Unable to allocate memory");
--    else {
--        struct abyss_unix_chaninfo * channelInfoP;
--        acceptedSocketP->fd = acceptedFd;
--        acceptedSocketP->userSuppliedFd = FALSE;
--                
--        makeChannelInfo(&channelInfoP, peerAddr, sizeof(peerAddr), errorP);
--        if (!*errorP) {
--            TChannel * channelP;
-+    makeChannelInfo(&channelInfoP, peerAddr, sizeof(peerAddr), errorP);
-+    if (!*errorP) {
-+        struct socketUnix * acceptedSocketP;
--            ChannelCreate(&channelVtbl, acceptedSocketP, &channelP);
--            if (!channelP)
--                xmlrpc_asprintf(errorP,
--                                "Failed to create TChannel object.");
--            else {
--                *errorP        = NULL;
--                *channelPP     = channelP;
--                *channelInfoPP = channelInfoP;
-+        MALLOCVAR(acceptedSocketP);
-+
-+        if (!acceptedSocketP)
-+            xmlrpc_asprintf(errorP, "Unable to allocate memory");
-+        else {
-+            acceptedSocketP->fd = acceptedFd;
-+            acceptedSocketP->userSuppliedFd = FALSE;
-+
-+            initInterruptPipe(&acceptedSocketP->interruptPipe, errorP);
-+
-+            if (!*errorP) {
-+                TChannel * channelP;
-+
-+                ChannelCreate(&channelVtbl, acceptedSocketP, &channelP);
-+                if (!channelP)
-+                    xmlrpc_asprintf(errorP,
-+                                    "Failed to create TChannel object.");
-+                else {
-+                    *errorP        = NULL;
-+                    *channelPP     = channelP;
-+                    *channelInfoPP = channelInfoP;
-+                }
-+                if (*errorP)
-+                    termInterruptPipe(&acceptedSocketP->interruptPipe);
-             }
-             if (*errorP)
--                free(channelInfoP);
-+                free(acceptedSocketP);
-         }
-         if (*errorP)
--            free(acceptedSocketP);
-+            free(channelInfoP);
-     }
- }
-diff --git a/libs/xmlrpc-c/lib/abyss/src/socket_win.c b/libs/xmlrpc-c/lib/abyss/src/socket_win.c
-index d3f683a..a1a07df 100644
---- a/libs/xmlrpc-c/lib/abyss/src/socket_win.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/socket_win.c
-@@ -1,997 +1,892 @@
--/*=============================================================================
--                                 socket_win.c
--===============================================================================
--  This is the implementation of TChanSwitch and TChannel
--  for a Winsock socket.
--=============================================================================*/
--
--#include <stdlib.h>
--#include <stdio.h>
--#include <string.h>
--#include <assert.h>
--#include <winsock2.h>
--
--#include "xmlrpc_config.h"
--#include "xmlrpc-c/util_int.h"
--#include "xmlrpc-c/string_int.h"
--#include "mallocvar.h"
--#include "trace.h"
--#include "chanswitch.h"
--#include "channel.h"
--#include "socket.h"
--#include "xmlrpc-c/abyss.h"
--
--#include "socket_win.h"
--
--#ifndef socklen_t
--typedef int socklen_t;
--#endif
--
--/* =============================================================
--   Provided nice error strings, NOT available in system errors.
--   ============================================================= */
--
--typedef struct tagSOCKERRS {
--   int err;       // WSAGetLastError() value
--   char * desc;   // description of error
--} SOCKERR;
--
--/* could/should perhaps be by the actual call,
--   but for now, just one big list, with some repeats
--*/
--
--SOCKERR sSockErr[] = {
--   { WSANOTINITIALISED,
--     "WSANOTINITIALISED - "
--     "WSAStartup must be called before using this function." },
--   { WSAENETDOWN,
--     "WSAENETDOWN - "
--     "The network subsystem has failed." },
--   { WSAEACCES,
--     "WSAEACCES - "
--     "Attempt to connect datagram socket to broadcast address failed "
--     "because setsockopt option SO_BROADCAST is not enabled." },
--   { WSAEADDRINUSE,
--     "WSAEADDRINUSE - "
--     "A process on the computer is already bound to the same fully-qualified "
--     "address and the socket has not been marked to allow address reuse with "
--     "SO_REUSEADDR. For example, the IP address and port are bound in the "
--     "af_inet case). (See the SO_REUSEADDR socket option under setsockopt.)" },
--   { WSAEADDRNOTAVAIL,
--     "WSAEADDRNOTAVAIL - "
--     "The specified address is not a valid address for this computer." },
--   { WSAEFAULT,
--     "WSAEFAULT - "
--     "The name or namelen parameter is not a valid part of the user "
--     "address space, the namelen parameter is too small, the name parameter "
--     "contains an incorrect address format for the associated "
--     "address family, or the first two bytes of the memory block "
--     "specified by name does not match the address family associated with "
--     "the socket descriptor s." },
--   { WSAEINPROGRESS,
--     "WSAEINPROGRESS - "
--     "A blocking Windows Sockets 1.1 call is in progress, or the "
--     "service provider is still processing a callback function." },
--   { WSAEINVAL,
--     "WSAEINVAL - "
--     "The socket is already bound to an address." },
--   { WSAENOBUFS,
--     "WSAENOBUFS - "
--     "Not enough buffers available, too many connections." },
--   { WSAENOTSOCK,
--     "WSAENOTSOCK - "
--     "The descriptor is not a socket." },
--
--   // setsocketopt
--   { WSAENETRESET,
--     "WSAENETRESET - "
--     "Connection has timed out when SO_KEEPALIVE is set." },
--   { WSAENOPROTOOPT,
--     "WSAENOPROTOOPT - "
--     "The option is unknown or the specified provider "
--     "or socket is not capable of implementing it "
--     "(see SO_GROUP_PRIORITY limitations)." },
--   { WSAENOTCONN,
--     "WSAENOTCONN - "
--     "Connection has been reset when SO_KEEPALIVE is set." },
--
--   // WSAStartup
--   { WSASYSNOTREADY,
--     "WSASYSNOTREADY - "
--     "The underlying network subsystem is not ready for "
--     "network communication." },
--   { WSAVERNOTSUPPORTED,
--     "WSAVERNOTSUPPORTED - "
--     "The version of Windows Sockets function requested is not provided "
--     "by this particular Windows Sockets implementation." },
--   { WSAEINPROGRESS,
--     "WSAEINPROGRESS - "
--     "A blocking Windows Sockets 1.1 operation is in progress." },
--   { WSAEPROCLIM,
--     "WSAEPROCLIM - "
--     "Limit on the number of tasks allowed by the Windows Sockets "
--     "implementation has been reached." },
--   { WSAEFAULT,
--     "WSAEFAULT - "
--     "The lpWSAData is not a valid pointer." },
--   // listen
--   { WSANOTINITIALISED,
--     "WSANOTINITIALISED - "
--     "A successful WSAStartup call must occur before using this function." },
--   { WSAENETDOWN,
--     "WSAENETDOWN - "
--     "The network subsystem has failed." },
--   { WSAEADDRINUSE,
--     "WSAEADDRINUSE - "
--     "The socket's local address is already in use and the socket "
--     "was not marked to allow address reuse with SO_REUSEADDR.  "
--     "This error usually occurs during execution of the bind function, "
--     "but could be delayed until this function if the bind was to "
--     "a partially wildcard address (involving ADDR_ANY) "
--     "and if a specific address needs to be committed at the time "
--     "of this function call." },
--   { WSAEINPROGRESS,
--     "WSAEINPROGRESS - "
--     "A blocking Windows Sockets 1.1 call is in progress, "
--     "or the service provider is still processing a callback function." },
--   { WSAEINVAL,
--     "WSAEINVAL - "
--     "The socket has not been bound with bind." },
--   { WSAEISCONN,
--     "WSAEISCONN - "
--     "The socket is already connected." },
--   { WSAEMFILE,
--     "WSAEMFILE - "
--     "No more socket descriptors are available." },
--   { WSAENOBUFS,
--     "WSAENOBUFS - "
--     "No buffer space is available." },
--   { WSAENOTSOCK,
--     "WSAENOTSOCK - "
--     "The descriptor is not a socket." },
--   { WSAEOPNOTSUPP,
--     "WSAEOPNOTSUPP - "
--     "The referenced socket is not of a type that has a listen operation." },
--
--   // getpeername
--   { WSANOTINITIALISED,
--     "WSANOTINITIALISED - "
--     "A successful WSAStartup call must occur before using this function." },
--   { WSAENETDOWN,
--     "WSAENETDOWN - "
--     "The network subsystem has failed." },
--   { WSAEFAULT,
--     "WSAEFAULT - "
--     "The name or the namelen parameter is not a valid part of the "
--     "user address space, or the namelen parameter is too small." },
--   { WSAEINPROGRESS,
--     "WSAEINPROGRESS - "
--     "A blocking Windows Sockets 1.1 call is in progress, "
--     "or the service provider is still processing a callback function." },
--   { WSAENOTCONN,
--     "WSAENOTCONN - "
--     "The socket is not connected." },
--   { WSAENOTSOCK,
--     "WSAENOTSOCK - "
--     "The descriptor is not a socket." },
--
--   // accept
--   { WSANOTINITIALISED,
--     "WSANOTINITIALISED - "
--     "A successful WSAStartup call must occur before using this function." },
--   { WSAENETDOWN,
--     "WSAENETDOWN - "
--     "The network subsystem has failed." },
--   { WSAEFAULT,
--     "WSAEFAULT - "
--     "The addrlen parameter is too small or addr is not a valid part "
--     "of the user address space." },
--   { WSAEINTR,
--     "WSAEINTR - "
--     "A blocking Windows Sockets 1.1 call was canceled through "
--     "WSACancelBlockingCall." },
--   { WSAEINPROGRESS,
--     "WSAEINPROGRESS - "
--     "A blocking Windows Sockets 1.1 call is in progress, "
--     "or the service provider is still processing a callback function." },
--   { WSAEINVAL,
--     "WSAEINVAL - "
--     "The listen function was not invoked prior to accept." },
--   { WSAEMFILE,
--     "WSAEMFILE - "
--     "The queue is nonempty upon entry to accept and "
--     "there are no descriptors available." },
--   { WSAENOBUFS,
--     "WSAENOBUFS - "
--     "No buffer space is available." },
--   { WSAENOTSOCK,
--     "WSAENOTSOCK - "
--     "The descriptor is not a socket." },
--   { WSAEOPNOTSUPP,
--     "WSAEOPNOTSUPP - "
--     "The referenced socket is not a type that offers connection-oriented "
--     "service." },
--   { WSAEWOULDBLOCK,
--     "WSAEWOULDBLOCK - "
--     "The socket is marked as nonblocking and no connections are present "
--     "to be accepted." },
--
--   /* must be last entry */
--   { 0,            0 }
--};
--
--
--
--static const char *
--getWSAError(int const wsaErrno) {
--
--    SOCKERR * pseP;
--  
--    pseP = &sSockErr[0];  // initial value
--   
--    while (pseP->desc) {
--        if (pseP->err == wsaErrno)
--            return pseP->desc;
--        
--        ++pseP;
--    }
--
--    return "(no description available)";
--}
--
--
--
--struct socketWin {
--/*----------------------------------------------------------------------------
--   The properties/state of a TSocket unique to a Unix TSocket.
-------------------------------------------------------------------------------*/
--    SOCKET winsock;
--    bool userSuppliedWinsock;
--        /* 'socket' was supplied by the user; it belongs to him */
--    HANDLE interruptEvent;
--};
--
--static
--bool
--connected(SOCKET const fd) {
--/*----------------------------------------------------------------------------
--   Return TRUE iff the socket on file descriptor 'fd' is in the connected
--   state.
--   If 'fd' does not identify a stream socket or we are unable to determine
--   the state of the stream socket, the answer is "false".
-------------------------------------------------------------------------------*/
--    bool connected;
--    struct sockaddr sockaddr;
--    socklen_t nameLen;
--    int rc;
--
--    nameLen = sizeof(sockaddr);
--
--    rc = getpeername(fd, &sockaddr, &nameLen);
--
--    if (rc == 0)
--        connected = TRUE;
--    else
--        connected = FALSE;
--
--    return connected;
--}
--
--
--
--void
--SocketWinInit(const char ** const errorP) {
--
--    WORD wVersionRequested;
--    WSADATA wsaData;
--    int err;
-- 
--    wVersionRequested = MAKEWORD(1, 0);
-- 
--    err = WSAStartup(wVersionRequested, &wsaData);
--
--    if (err != 0) {
--        int const lastError = WSAGetLastError();
--        xmlrpc_asprintf(errorP, "WSAStartup() faild with error %d (%s)",
--                        lastError, getWSAError(lastError));
--    } else
--        *errorP = NULL;
--}
--
--
--
--void
--SocketWinTerm(void) {
--    
--    WSACleanup();
--}
--
--
--
--/*=============================================================================
--      TChannel
--=============================================================================*/
--
--static ChannelDestroyImpl channelDestroy;
--
--static void
--channelDestroy(TChannel * const channelP) {
--
--    struct socketWin * const socketWinP = channelP->implP;
--
--    if (!socketWinP->userSuppliedWinsock)
--        closesocket(socketWinP->winsock);
--
--    CloseHandle(socketWinP->interruptEvent);
--
--    free(socketWinP);
--}
--
--
--
--static ChannelWriteImpl channelWrite;
--
--static void
--channelWrite(TChannel *            const channelP,
--             const unsigned char * const buffer,
--             uint32_t              const len,
--             bool *          const failedP) {
--
--    struct socketWin * const socketWinP = channelP->implP;
--
--    size_t bytesLeft;
--    bool error;
--
--    assert(sizeof(size_t) >= sizeof(len));
--
--    for (bytesLeft = len, error = FALSE;
--         bytesLeft > 0 && !error;
--        ) {
--        size_t const maxSend = (size_t)(-1) >> 1;
--
--        int rc;
--        
--        rc = send(socketWinP->winsock, &buffer[len-bytesLeft],
--                  MIN(maxSend, bytesLeft), 0);
--
--        if (rc <= 0)
--            /* 0 means connection closed; < 0 means severe error */
--            error = TRUE;
--        else
--            bytesLeft -= rc;
--    }
--    *failedP = error;
--}
--
--
--
--static ChannelReadImpl channelRead;
--
--static void
--channelRead(TChannel *   const channelP, 
--            unsigned char * const buffer, 
--            uint32_t     const bufferSize,
--            uint32_t *   const bytesReceivedP,
--            bool * const failedP) {
--
--    struct socketWin * const socketWinP = channelP->implP;
--
--    int rc;
--    rc = recv(socketWinP->winsock, buffer, bufferSize, 0);
--
--    if (rc < 0) {
--        *failedP = TRUE;
--    } else {
--        *failedP = FALSE;
--        *bytesReceivedP = rc;
--    }
--}
--
--
--
--static ChannelWaitImpl channelWait;
--
--static void
--channelWait(TChannel * const channelP,
--            bool       const waitForRead,
--            bool       const waitForWrite,
--            uint32_t   const timems,
--            bool *     const readyToReadP,
--            bool *     const readyToWriteP,
--            bool *     const failedP) {
--
--    struct socketWin * const socketWinP = channelP->implP;
--
--    fd_set rfds, wfds;
--    TIMEVAL tv;
--    bool failed, readRdy, writeRdy, timedOut;
--
--    FD_ZERO(&rfds);
--    FD_ZERO(&wfds);
--
--    if (waitForRead)
--        FD_SET(socketWinP->winsock, &rfds);
--
--    if (waitForWrite)
--        FD_SET(socketWinP->winsock, &wfds);
--
--    tv.tv_sec  = timems / 1000;
--    tv.tv_usec = timems % 1000;
-- 
--    for (failed = FALSE, readRdy = FALSE, writeRdy = FALSE, timedOut = FALSE;
--         !failed && !readRdy && !writeRdy && !timedOut;
--        ) {
--
--        int rc;
--
--        rc = select(socketWinP->winsock + 1, &rfds, &wfds, NULL,
--                    (timems == TIME_INFINITE ? NULL : &tv));
--
--        switch(rc) {   
--        case 0:
--            timedOut = TRUE;
--            break;
--        case -1:  /* socket error */
--            if (WSAGetLastError() != WSAEINTR)
--                failed = TRUE;
--        break;
--        default:
--            if (FD_ISSET(socketWinP->winsock, &rfds))
--                readRdy = TRUE;
--            if (FD_ISSET(socketWinP->winsock, &wfds))
--                writeRdy = TRUE;
--        }
--    }
--
--    if (failedP)
--        *failedP       = failed;
--    if (readyToReadP)
--        *readyToReadP  = readRdy;
--    if (readyToWriteP)
--        *readyToWriteP = writeRdy;
--}
--
--
--
--static ChannelInterruptImpl channelInterrupt;
--
--static void
--channelInterrupt(TChannel * const channelP) {
--/*----------------------------------------------------------------------------
--  Interrupt any waiting that a thread might be doing in channelWait()
--  now or in the future.
--
--  Actually, this is just a no-op because we don't yet know how to
--  accomplish that.  (But we could probably do it the same way
--  chanSwitchInterrupt() works -- no one has needed it enough yet to do that
--  work).
-------------------------------------------------------------------------------*/
--
--}
--
--
--
--void
--ChannelWinGetPeerName(TChannel *           const channelP,
--                      struct sockaddr_in * const inAddrP,
--                      const char **        const errorP) {
--
--    struct socketWin * const socketWinP = channelP->implP;
--
--    socklen_t addrlen;
--    int rc;
--    struct sockaddr sockAddr;
--
--    addrlen = sizeof(sockAddr);
--    
--    rc = getpeername(socketWinP->winsock, &sockAddr, &addrlen);
--
--    if (rc != 0) {
--        int const lastError = WSAGetLastError();
--        xmlrpc_asprintf(errorP, "getpeername() failed.  WSA error = %d (%s)",
--                        lastError, getWSAError(lastError));
--    } else {
--        if (addrlen != sizeof(sockAddr))
--            xmlrpc_asprintf(errorP, "getpeername() returned a socket address "
--                            "of the wrong size: %u.  Expected %u",
--                            addrlen, sizeof(sockAddr));
--        else {
--            if (sockAddr.sa_family != AF_INET)
--                xmlrpc_asprintf(errorP,
--                                "Socket does not use the Inet (IP) address "
--                                "family.  Instead it uses family %d",
--                                sockAddr.sa_family);
--            else {
--                *inAddrP = *(struct sockaddr_in *)&sockAddr;
--
--                *errorP = NULL;
--            }
--        }
--    }
--}
--
--
--
--static ChannelFormatPeerInfoImpl channelFormatPeerInfo;
--
--static void
--channelFormatPeerInfo(TChannel *    const channelP,
--                      const char ** const peerStringP) {
--
--    struct socketWin * const socketWinP = channelP->implP;
--
--    struct sockaddr sockaddr;
--    socklen_t sockaddrLen;
--    int rc;
--
--    sockaddrLen = sizeof(sockaddr);
--    
--    rc = getpeername(socketWinP->winsock, &sockaddr, &sockaddrLen);
--    
--    if (rc != 0) {
--        int const lastError = WSAGetLastError();
--        xmlrpc_asprintf(peerStringP, "?? getpeername() failed.  "
--                        "WSAERROR %d (%s)",
--                        lastError, getWSAError(lastError));
--    } else {
--        switch (sockaddr.sa_family) {
--        case AF_INET: {
--            struct sockaddr_in * const sockaddrInP =
--                (struct sockaddr_in *) &sockaddr;
--            if (sockaddrLen < sizeof(*sockaddrInP))
--                xmlrpc_asprintf(peerStringP, "??? getpeername() returned "
--                                "the wrong size");
--            else {
--                unsigned char * const ipaddr = (unsigned char *)
--                    &sockaddrInP->sin_addr.s_addr;
--                xmlrpc_asprintf(peerStringP, "%u.%u.%u.%u:%hu",
--                                ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3],
--                                sockaddrInP->sin_port);
--            }
--        } break;
--        default:
--            xmlrpc_asprintf(peerStringP, "??? AF=%u", sockaddr.sa_family);
--        }
--    }
--}
--
--
--
--static struct TChannelVtbl const channelVtbl = {
--    &channelDestroy,
--    &channelWrite,
--    &channelRead,
--    &channelWait,
--    &channelInterrupt,
--    &channelFormatPeerInfo,
--};
--
--
--
--static void
--makeChannelFromWinsock(SOCKET        const winsock,
--                       TChannel **   const channelPP,
--                       const char ** const errorP) {
--
--    struct socketWin * socketWinP;
--
--    MALLOCVAR(socketWinP);
--    
--    if (socketWinP == NULL)
--        xmlrpc_asprintf(errorP, "Unable to allocate memory for Windows "
--                        "socket descriptor");
--    else {
--        TChannel * channelP;
--        
--        socketWinP->winsock = winsock;
--        socketWinP->userSuppliedWinsock = TRUE;
--        socketWinP->interruptEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
--
--        ChannelCreate(&channelVtbl, socketWinP, &channelP);
--        
--        if (channelP == NULL)
--            xmlrpc_asprintf(errorP, "Unable to allocate memory for "
--                            "channel descriptor.");
--        else {
--            *channelPP = channelP;
--            *errorP = NULL;
--        }
--        if (*errorP) {
--            CloseHandle(socketWinP->interruptEvent);
--            free(socketWinP);
--        }
--    }
--}
--
--
--
--static void
--makeChannelInfo(struct abyss_win_chaninfo ** const channelInfoPP,
--                struct sockaddr              const peerAddr,
--                socklen_t                    const peerAddrLen,
--                const char **                const errorP) {
--
--    struct abyss_win_chaninfo * channelInfoP;
--
--    MALLOCVAR(channelInfoP);
--    
--    if (channelInfoP == NULL)
--        xmlrpc_asprintf(errorP, "Unable to allocate memory");
--    else {
--        channelInfoP->peerAddrLen = peerAddrLen;
--        channelInfoP->peerAddr    = peerAddr;
--        
--        *channelInfoPP = channelInfoP;
--
--        *errorP = NULL;
--    }
--}
--
--
--
--void
--ChannelWinCreateWinsock(SOCKET                       const fd,
--                        TChannel **                  const channelPP,
--                        struct abyss_win_chaninfo ** const channelInfoPP,
--                        const char **                const errorP) {
--
--    struct sockaddr peerAddr;
--    socklen_t peerAddrLen;
--    int rc;
--
--    peerAddrLen = sizeof(peerAddr);
--
--    rc = getpeername(fd, &peerAddr, &peerAddrLen);
--
--    if (rc != 0) {
--        int const lastError = WSAGetLastError();
--        if (lastError == WSAENOTCONN) {
--            /* NOTE: This specific string 'not in connected' is
--               required by one of the rpctest suite items, in abyss.c
--               (line 186), hence the separation of the error messages
--               in this case ...
--            */
--            xmlrpc_asprintf(errorP, "Socket on file descriptor %d "
--                            "is not in connected state. WSAERROR = %d (%s)",
--                            fd, lastError, getWSAError(lastError));
--        } else
--            xmlrpc_asprintf(errorP, "getpeername() failed. WSAERROR = %d (%s)",
--                        lastError, getWSAError(lastError));
--    } else {
--        makeChannelInfo(channelInfoPP, peerAddr, peerAddrLen, errorP);
--        if (!*errorP) {
--            makeChannelFromWinsock(fd, channelPP, errorP);
--
--            if (*errorP)
--                free(*channelInfoPP);
--        }
--    }
--}
--
--
--/*=============================================================================
--      TChanSwitch
--=============================================================================*/
--
--static SwitchDestroyImpl chanSwitchDestroy;
--
--void
--chanSwitchDestroy(TChanSwitch * const chanSwitchP) {
--
--    struct socketWin * const socketWinP = chanSwitchP->implP;
--
--    if (!socketWinP->userSuppliedWinsock)
--        closesocket(socketWinP->winsock);
--
--    CloseHandle(socketWinP->interruptEvent);
--
--    free(socketWinP);
--}
--
--
--
--static SwitchListenImpl chanSwitchListen;
--
--static void
--chanSwitchListen(TChanSwitch * const chanSwitchP,
--                 uint32_t      const backlog,
--                 const char ** const errorP) {
--
--    struct socketWin * const socketWinP = chanSwitchP->implP;
--
--    int32_t const minus1 = -1;
--
--    int rc;
--
--    /* Disable the Nagle algorithm to make persistant connections faster */
--
--    setsockopt(socketWinP->winsock, IPPROTO_TCP, TCP_NODELAY,
--               (const char *)&minus1, sizeof(minus1));
--
--    rc = listen(socketWinP->winsock, backlog);
--
--    if (rc != 0) {
--        int const lastError = WSAGetLastError();
--        xmlrpc_asprintf(errorP, "setsockopt() failed with WSAERROR %d (%s)",
--                        lastError, getWSAError(lastError));
--    } else
--        *errorP = NULL;
--}
--
--
--
--static void
--createChannelForAccept(int             const acceptedWinsock,
--                       struct sockaddr const peerAddr,
--                       TChannel **     const channelPP,
--                       void **         const channelInfoPP,
--                       const char **   const errorP) {
--
--    struct abyss_win_chaninfo * channelInfoP;
--    makeChannelInfo(&channelInfoP, peerAddr, sizeof(peerAddr), errorP);
--    if (!*errorP) {
--        struct socketWin * acceptedSocketP;
--
--        MALLOCVAR(acceptedSocketP);
--
--        if (!acceptedSocketP)
--            xmlrpc_asprintf(errorP, "Unable to allocate memory");
--        else {
--            TChannel * channelP;
--
--            acceptedSocketP->winsock             = acceptedWinsock;
--            acceptedSocketP->userSuppliedWinsock = FALSE;
--            acceptedSocketP->interruptEvent      =
--                CreateEvent(NULL, FALSE, FALSE, NULL);
--
--            ChannelCreate(&channelVtbl, acceptedSocketP, &channelP);
--            if (!channelP)
--                xmlrpc_asprintf(errorP,
--                                "Failed to create TChannel object.");
--            else {
--                *errorP        = NULL;
--                *channelPP     = channelP;
--                *channelInfoPP = channelInfoP;
--            }
--            if (*errorP) {
--                CloseHandle(acceptedSocketP->interruptEvent);
--                free(acceptedSocketP);
--            }
--        }
--    }
--}
--
--
--
--static SwitchAcceptImpl  chanSwitchAccept;
--
--static void
--chanSwitchAccept(TChanSwitch * const chanSwitchP,
--                 TChannel **   const channelPP,
--                 void **       const channelInfoPP,
--                 const char ** const errorP) {
--/*----------------------------------------------------------------------------
--   Accept a connection via the channel switch *chanSwitchP.  Return as
--   *channelPP the channel for the accepted connection.
--
--   If no connection is waiting at *chanSwitchP, wait until one is.
--
--   If we receive a signal while waiting, return immediately with
--   *channelPP == NULL.
-------------------------------------------------------------------------------*/
--    struct socketWin * const listenSocketP = chanSwitchP->implP;
--    HANDLE acceptEvent = WSACreateEvent();
--    bool interrupted;
--    TChannel * channelP;
--
--    interrupted = FALSE; /* Haven't been interrupted yet */
--    channelP    = NULL;  /* No connection yet */
--    *errorP     = NULL;  /* No error yet */
--
--    WSAEventSelect(listenSocketP->winsock, acceptEvent,
--                   FD_ACCEPT | FD_CLOSE | FD_READ);
--
--    while (!channelP && !*errorP && !interrupted) {
--        HANDLE interrupts[2] = {acceptEvent, listenSocketP->interruptEvent};
--        int rc;
--        struct sockaddr peerAddr;
--        socklen_t size = sizeof(peerAddr);
--
--        rc = WaitForMultipleObjects(2, interrupts, FALSE, INFINITE);
--        if (WAIT_OBJECT_0 + 1 == rc) {
--            interrupted = TRUE;
--            continue;
--        };
--
--        rc = accept(listenSocketP->winsock, &peerAddr, &size);
--
--        if (rc >= 0) {
--            int const acceptedWinsock = rc;
--
--            createChannelForAccept(acceptedWinsock, peerAddr,
--                                   &channelP, channelInfoPP, errorP);
--
--            if (*errorP)
--                closesocket(acceptedWinsock);
--        } else {
--            int const lastError = WSAGetLastError();
--
--            if (lastError == WSAEINTR)
--                interrupted = TRUE;
--            else
--                xmlrpc_asprintf(errorP,
--                                "accept() failed, WSA error = %d (%s)",
--                                lastError, getWSAError(lastError));
--        }
--    }
--    *channelPP = channelP;
--    CloseHandle(acceptEvent);
--}
--
--
--
--static SwitchInterruptImpl chanSwitchInterrupt;
--
--static void
--chanSwitchInterrupt(TChanSwitch * const chanSwitchP) {
--/*----------------------------------------------------------------------------
--  Interrupt any waiting that a thread might be doing in chanSwitchAccept()
--  now or in the future.
-------------------------------------------------------------------------------*/
--    struct socketWin * const listenSocketP = chanSwitchP->implP;
--
--    SetEvent(listenSocketP->interruptEvent);
--}
--
--
--
--static struct TChanSwitchVtbl const chanSwitchVtbl = {
--    &chanSwitchDestroy,
--    &chanSwitchListen,
--    &chanSwitchAccept,
--    &chanSwitchInterrupt,
--};
--
--
--
--static void
--setSocketOptions(SOCKET        const fd,
--                 const char ** const errorP) {
--
--    int32_t const n = 1;
--
--    int rc;
--
--    rc = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char*)&n, sizeof(n));
--
--    if (rc != 0) {
--        int const lastError = WSAGetLastError();
--        xmlrpc_asprintf(errorP, "Failed to set socket options.  "
--                        "setsockopt() failed with WSAERROR %d (%s)",
--                        lastError, getWSAError(lastError));
--    } else
--        *errorP = NULL;
--}
--
--
--
--void
--bindSocketToPort(SOCKET           const winsock,
--                 struct in_addr * const addrP,
--                 uint16_t         const portNumber,
--                 const char **    const errorP) {
--    
--    struct sockaddr_in name;
--    int rc;
--      int one = 1;
--
--    ZeroMemory(&name, sizeof(name));
--    name.sin_family = AF_INET;
--    name.sin_port   = htons(portNumber);
--    if (addrP)
--        name.sin_addr = *addrP;
--
--      setsockopt(winsock, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(int));
--    rc = bind(winsock, (struct sockaddr *)&name, sizeof(name));
--
--    if (rc != 0) {
--        int const lastError = WSAGetLastError();
--        xmlrpc_asprintf(errorP, "Unable to bind socket to port number %u.  "
--                        "bind() failed with WSAERROR %i (%s)",
--                        portNumber, lastError, getWSAError(lastError));
--    } else
--        *errorP = NULL;
--}
--
--
--
--void
--ChanSwitchWinCreate(uint16_t       const portNumber,
--                    TChanSwitch ** const chanSwitchPP,
--                    const char **  const errorP) {
--/*----------------------------------------------------------------------------
--   Create a Winsock-based channel switch.
--
--   Set the socket's local address so that a subsequent "listen" will listen
--   on all IP addresses, port number 'portNumber'.
-------------------------------------------------------------------------------*/
--    struct socketWin * socketWinP;
--
--    MALLOCVAR(socketWinP);
--
--    if (!socketWinP)
--        xmlrpc_asprintf(errorP, "Unable to allocate memory for Windows socket "
--                        "descriptor structure.");
--    else {
--        SOCKET winsock;
--
--        winsock = socket(AF_INET, SOCK_STREAM, 0);
--
--        if (winsock == 0 || winsock == INVALID_SOCKET) {
--            int const lastError = WSAGetLastError();
--            xmlrpc_asprintf(errorP, "socket() failed with WSAERROR %d (%s)",
--                            lastError, getWSAError(lastError));
--        } else {
--            socketWinP->winsock = winsock;
--            socketWinP->userSuppliedWinsock = FALSE;
--            socketWinP->interruptEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
--            
--            setSocketOptions(socketWinP->winsock, errorP);
--            if (!*errorP) {
--                bindSocketToPort(socketWinP->winsock, NULL, portNumber,
--                                 errorP);
--                if (!*errorP)
--                    ChanSwitchCreate(&chanSwitchVtbl, socketWinP,
--                                     chanSwitchPP);
--            }
--
--            if (*errorP) {
--                CloseHandle(socketWinP->interruptEvent);
--                closesocket(winsock);
--            }
--        }
--        if (*errorP)
--            free(socketWinP);
--    }
--}
--
--
--
--void
--ChanSwitchWinCreateWinsock(SOCKET         const winsock,
--                           TChanSwitch ** const chanSwitchPP,
--                           const char **  const errorP) {
--
--    struct socketWin * socketWinP;
--
--    if (connected(winsock))
--        xmlrpc_asprintf(errorP, "Socket is in connected state.");
--    else {
--        MALLOCVAR(socketWinP);
--
--        if (socketWinP == NULL)
--            xmlrpc_asprintf(errorP, "unable to allocate memory for Windows "
--                            "socket descriptor.");
--        else {
--            TChanSwitch * chanSwitchP;
--
--            socketWinP->winsock = winsock;
--            socketWinP->userSuppliedWinsock = TRUE;
--            socketWinP->interruptEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
--
--            ChanSwitchCreate(&chanSwitchVtbl, socketWinP, &chanSwitchP);
--
--            if (chanSwitchP == NULL)
--                xmlrpc_asprintf(errorP, "Unable to allocate memory for "
--                                "channel switch descriptor");
--            else {
--                *chanSwitchPP = chanSwitchP;
--                *errorP = NULL;
--            }
--            if (*errorP) {
--                CloseHandle(socketWinP->interruptEvent);
--                free(socketWinP);
--            }
--        }
--    }
--}
-+/*=============================================================================\r
-+                                 socket_win.c\r
-+===============================================================================\r
-+  This is the implementation of TChanSwitch and TChannel\r
-+  for a Winsock socket.\r
-+=============================================================================*/\r
-+\r
-+#include <stdlib.h>\r
-+#include <stdio.h>\r
-+#include <string.h>\r
-+#include <assert.h>\r
-+#include <winsock2.h>\r
-+\r
-+#include "xmlrpc_config.h"\r
-+#include "xmlrpc-c/util_int.h"\r
-+#include "xmlrpc-c/string_int.h"\r
-+#include "mallocvar.h"\r
-+#include "trace.h"\r
-+#include "chanswitch.h"\r
-+#include "channel.h"\r
-+#include "socket.h"\r
-+#include "xmlrpc-c/abyss.h"\r
-+\r
-+#include "socket_win.h"\r
-+\r
-+#ifndef socklen_t\r
-+typedef int socklen_t;\r
-+#endif\r
-+\r
-+/* =============================================================\r
-+   Provided nice error strings, NOT available in system errors.\r
-+   ============================================================= */\r
-+\r
-+typedef struct tagSOCKERRS {\r
-+   int err;       // WSAGetLastError() value\r
-+   char * desc;   // description of error\r
-+} SOCKERR;\r
-+\r
-+/* list shamelessly copied from apache apr errorcodes.c - Grmt 2011-06-16 */\r
-+\r
-+SOCKERR sSockErr[] = {\r
-+    WSAEINTR,           "Interrupted system call",\r
-+    WSAEBADF,           "Bad file number",\r
-+    WSAEACCES,          "Permission denied",\r
-+    WSAEFAULT,          "Bad address",\r
-+    WSAEINVAL,          "Invalid argument",\r
-+    WSAEMFILE,          "Too many open sockets",\r
-+    WSAEWOULDBLOCK,     "Operation would block",\r
-+    WSAEINPROGRESS,     "Operation now in progress",\r
-+    WSAEALREADY,        "Operation already in progress",\r
-+    WSAENOTSOCK,        "Socket operation on non-socket",\r
-+    WSAEDESTADDRREQ,    "Destination address required",\r
-+    WSAEMSGSIZE,        "Message too long",\r
-+    WSAEPROTOTYPE,      "Protocol wrong type for socket",\r
-+    WSAENOPROTOOPT,     "Bad protocol option",\r
-+    WSAEPROTONOSUPPORT, "Protocol not supported",\r
-+    WSAESOCKTNOSUPPORT, "Socket type not supported",\r
-+    WSAEOPNOTSUPP,      "Operation not supported on socket",\r
-+    WSAEPFNOSUPPORT,    "Protocol family not supported",\r
-+    WSAEAFNOSUPPORT,    "Address family not supported",\r
-+    WSAEADDRINUSE,      "Address already in use",\r
-+    WSAEADDRNOTAVAIL,   "Can't assign requested address",\r
-+    WSAENETDOWN,        "Network is down",\r
-+    WSAENETUNREACH,     "Network is unreachable",\r
-+    WSAENETRESET,       "Net connection reset",\r
-+    WSAECONNABORTED,    "Software caused connection abort",\r
-+    WSAECONNRESET,      "Connection reset by peer",\r
-+    WSAENOBUFS,         "No buffer space available",\r
-+    WSAEISCONN,         "Socket is already connected",\r
-+    WSAENOTCONN,        "Socket is not connected",\r
-+    WSAESHUTDOWN,       "Can't send after socket shutdown",\r
-+    WSAETOOMANYREFS,    "Too many references, can't splice",\r
-+    WSAETIMEDOUT,       "Connection timed out",\r
-+    WSAECONNREFUSED,    "Connection refused",\r
-+    WSAELOOP,           "Too many levels of symbolic links",\r
-+    WSAENAMETOOLONG,    "File name too long",\r
-+    WSAEHOSTDOWN,       "Host is down",\r
-+    WSAEHOSTUNREACH,    "No route to host",\r
-+    WSAENOTEMPTY,       "Directory not empty",\r
-+    WSAEPROCLIM,        "Too many processes",\r
-+    WSAEUSERS,          "Too many users",\r
-+    WSAEDQUOT,          "Disc quota exceeded",\r
-+    WSAESTALE,          "Stale NFS file handle",\r
-+    WSAEREMOTE,         "Too many levels of remote in path",\r
-+    WSASYSNOTREADY,     "Network system is unavailable",\r
-+    WSAVERNOTSUPPORTED, "Winsock version out of range",\r
-+    WSANOTINITIALISED,  "WSAStartup not yet called",\r
-+    WSAEDISCON,         "Graceful shutdown in progress",\r
-+    WSAHOST_NOT_FOUND,  "Host not found",\r
-+    WSANO_DATA,         "No host data of that type was found",\r
-+    0,                  NULL\r
-+};\r
-+\r
-+\r
-+static const char *\r
-+getWSAError(int const wsaErrno) {\r
-+\r
-+    SOCKERR * pseP;\r
-+  \r
-+    pseP = &sSockErr[0];  // initial value\r
-+   \r
-+    while (pseP->desc) {\r
-+        if (pseP->err == wsaErrno)\r
-+            return pseP->desc;\r
-+        \r
-+        ++pseP;\r
-+    }\r
-+\r
-+    return "No description available";\r
-+}\r
-+\r
-+\r
-+\r
-+struct socketWin {\r
-+/*----------------------------------------------------------------------------\r
-+   The properties/state of a TSocket unique to a Unix TSocket.\r
-+-----------------------------------------------------------------------------*/\r
-+    SOCKET winsock;\r
-+    bool userSuppliedWinsock;\r
-+        /* 'socket' was supplied by the user; it belongs to him */\r
-+    HANDLE interruptEvent;\r
-+};\r
-+\r
-+static\r
-+bool\r
-+connected(SOCKET const fd) {\r
-+/*----------------------------------------------------------------------------\r
-+   Return TRUE iff the socket on file descriptor 'fd' is in the connected\r
-+   state.\r
-+   If 'fd' does not identify a stream socket or we are unable to determine\r
-+   the state of the stream socket, the answer is "false".\r
-+-----------------------------------------------------------------------------*/\r
-+    bool connected;\r
-+    struct sockaddr sockaddr;\r
-+    socklen_t nameLen;\r
-+    int rc;\r
-+\r
-+    nameLen = sizeof(sockaddr);\r
-+\r
-+    rc = getpeername(fd, &sockaddr, &nameLen);\r
-+\r
-+    if (rc == 0)\r
-+        connected = TRUE;\r
-+    else\r
-+        connected = FALSE;\r
-+\r
-+    return connected;\r
-+}\r
-+\r
-+\r
-+\r
-+void\r
-+SocketWinInit(const char ** const errorP) {\r
-+\r
-+    WORD wVersionRequested;\r
-+    WSADATA wsaData;\r
-+    int err;\r
-+ \r
-+    wVersionRequested = MAKEWORD(1, 0);\r
-+ \r
-+    err = WSAStartup(wVersionRequested, &wsaData);\r
-+\r
-+    if (err != 0) {\r
-+        int const lastError = WSAGetLastError();\r
-+        xmlrpc_asprintf(errorP, "WSAStartup() faild with error %d (%s)",\r
-+                        lastError, getWSAError(lastError));\r
-+    } else\r
-+        *errorP = NULL;\r
-+}\r
-+\r
-+\r
-+\r
-+void\r
-+SocketWinTerm(void) {\r
-+    \r
-+    WSACleanup();\r
-+}\r
-+\r
-+\r
-+\r
-+/*=============================================================================\r
-+      TChannel\r
-+=============================================================================*/\r
-+\r
-+static ChannelDestroyImpl channelDestroy;\r
-+\r
-+static void\r
-+channelDestroy(TChannel * const channelP) {\r
-+\r
-+    struct socketWin * const socketWinP = channelP->implP;\r
-+\r
-+    if (!socketWinP->userSuppliedWinsock)\r
-+        closesocket(socketWinP->winsock);\r
-+\r
-+    CloseHandle(socketWinP->interruptEvent);\r
-+\r
-+    free(socketWinP);\r
-+    channelP->implP = 0;\r
-+\r
-+}\r
-+\r
-+\r
-+\r
-+static ChannelWriteImpl channelWrite;\r
-+\r
-+static void\r
-+channelWrite(TChannel *            const channelP,\r
-+             const unsigned char * const buffer,\r
-+             uint32_t              const len,\r
-+             bool *                const failedP) {\r
-+\r
-+    struct socketWin * const socketWinP = channelP->implP;\r
-+\r
-+    size_t bytesLeft;\r
-+    bool error;\r
-+      int to_count = 0;\r
-+      int lastError = 0;\r
-+\r
-+      for (bytesLeft = len, error = FALSE; bytesLeft > 0 && !error;) {\r
-+        size_t const maxSend =        4096 * 2; /* with respect to resource allocation this might be a better value than 2^31 */ \r
-+\r
-+        int rc = send(socketWinP->winsock, buffer + len - bytesLeft, MIN(maxSend, bytesLeft), 0);\r
-+              if (rc > 0) {          /* 0 means connection closed; < 0 means severe error */\r
-+                      to_count = 0;\r
-+                  bytesLeft -= rc;\r
-+              } \r
-+              else if (!rc) {\r
-+                      error = TRUE;\r
-+                      fprintf(stderr, "Abyss: send() failed: connection closed");\r
-+              }\r
-+              else {\r
-+                      error = TRUE;\r
-+                      lastError = WSAGetLastError();\r
-+            if (lastError == WSAEWOULDBLOCK || lastError == ERROR_IO_PENDING) {\r
-+                              SleepEx(20, TRUE);  /* give socket another chance after xx millisec) */\r
-+                              if (++to_count < 300) {\r
-+                                      error = FALSE;\r
-+                              }\r
-+                          //  fprintf(stderr, "Abyss: send() failed with errno %d (%s) cnt %d, will retry\n", lastError, getWSAError(lastError), to_count);\r
-+                      }\r
-+                      if (error) fprintf(stderr, "Abyss: send() failed with errno %d (%s)\n", lastError, getWSAError(lastError));\r
-+              }\r
-+    }\r
-+\r
-+      *failedP = error;\r
-+}\r
-+\r
-+\r
-+\r
-+static ChannelReadImpl channelRead;\r
-+\r
-+static void\r
-+channelRead(TChannel *   const channelP, \r
-+            unsigned char * const buffer, \r
-+            uint32_t     const bufferSize,\r
-+            uint32_t *   const bytesReceivedP,\r
-+            bool * const failedP) {\r
-+\r
-+    struct socketWin * const socketWinP = channelP->implP;\r
-+    int retries = 300; \r
-+      \r
-+      for (*failedP = TRUE; *failedP && retries; retries--) {\r
-+              int rc = recv(socketWinP->winsock, buffer, bufferSize, 0);\r
-+              int lastError = WSAGetLastError();\r
-+\r
-+              if (rc < 0) {\r
-+                      if (lastError == WSAEWOULDBLOCK || lastError == ERROR_IO_PENDING) {\r
-+                              fprintf(stderr, "Abyss: recv() failed with errno %d (%s) cnt %d, will retry\n", lastError, getWSAError(lastError), retries);\r
-+                              SleepEx(30, TRUE);  /* give socket another chance after xx millisec)*/\r
-+                              *failedP = FALSE;\r
-+                      } else {\r
-+                              fprintf(stderr, "Abyss: recv() failed with errno %d (%s)\n", lastError, getWSAError(lastError));\r
-+                              break;\r
-+                      }\r
-+              } else {\r
-+                      *failedP = FALSE;\r
-+                      *bytesReceivedP = rc;\r
-+\r
-+                      if (ChannelTraceIsActive)\r
-+                              fprintf(stderr, "Abyss channel: read %u bytes: '%.*s'\n", bytesReceivedP, (int)(*bytesReceivedP), buffer);\r
-+              }\r
-+      }\r
-+}\r
-+\r
-+\r
-+\r
-+static ChannelWaitImpl channelWait;\r
-+\r
-+static void\r
-+channelWait(TChannel * const channelP,\r
-+            bool       const waitForRead,\r
-+            bool       const waitForWrite,\r
-+            uint32_t   const timems,\r
-+            bool *     const readyToReadP,\r
-+            bool *     const readyToWriteP,\r
-+            bool *     const failedP) {\r
-+\r
-+    struct socketWin * const socketWinP = channelP->implP;\r
-+\r
-+    fd_set rfds, wfds;\r
-+    TIMEVAL tv;\r
-+    bool failed, readRdy, writeRdy, timedOut;\r
-+\r
-+    FD_ZERO(&rfds);\r
-+    FD_ZERO(&wfds);\r
-+\r
-+    if (waitForRead)\r
-+        FD_SET(socketWinP->winsock, &rfds);\r
-+\r
-+    if (waitForWrite)\r
-+        FD_SET(socketWinP->winsock, &wfds);\r
-+\r
-+    tv.tv_sec  = timems / 1000;\r
-+    tv.tv_usec = timems % 1000;\r
-+ \r
-+    for (failed = FALSE, readRdy = FALSE, writeRdy = FALSE, timedOut = FALSE;\r
-+         !failed && !readRdy && !writeRdy && !timedOut;\r
-+        ) {\r
-+\r
-+        int rc;\r
-+\r
-+        rc = select(socketWinP->winsock + 1, &rfds, &wfds, NULL,\r
-+                    (timems == TIME_INFINITE ? NULL : &tv));\r
-+\r
-+        switch(rc) {   \r
-+        case 0:\r
-+            timedOut = TRUE;\r
-+            break;\r
-+        case -1:  /* socket error */\r
-+            if (WSAGetLastError() != WSAEINTR)\r
-+                failed = TRUE;\r
-+        break;\r
-+        default:\r
-+            if (FD_ISSET(socketWinP->winsock, &rfds))\r
-+                readRdy = TRUE;\r
-+            if (FD_ISSET(socketWinP->winsock, &wfds))\r
-+                writeRdy = TRUE;\r
-+        }\r
-+    }\r
-+\r
-+    if (failedP)\r
-+        *failedP       = failed;\r
-+    if (readyToReadP)\r
-+        *readyToReadP  = readRdy;\r
-+    if (readyToWriteP)\r
-+        *readyToWriteP = writeRdy;\r
-+}\r
-+\r
-+\r
-+\r
-+static ChannelInterruptImpl channelInterrupt;\r
-+\r
-+static void\r
-+channelInterrupt(TChannel * const channelP) {\r
-+/*----------------------------------------------------------------------------\r
-+  Interrupt any waiting that a thread might be doing in channelWait()\r
-+  now or in the future.\r
-+\r
-+  Actually, this is just a no-op because we don't yet know how to\r
-+  accomplish that.  (But we could probably do it the same way\r
-+  chanSwitchInterrupt() works -- no one has needed it enough yet to do that\r
-+  work).\r
-+-----------------------------------------------------------------------------*/\r
-+\r
-+}\r
-+\r
-+\r
-+\r
-+void\r
-+ChannelWinGetPeerName(TChannel *           const channelP,\r
-+                      struct sockaddr_in * const inAddrP,\r
-+                      const char **        const errorP) {\r
-+\r
-+    struct socketWin * const socketWinP = channelP->implP;\r
-+\r
-+    socklen_t addrlen;\r
-+    int rc;\r
-+    struct sockaddr sockAddr;\r
-+\r
-+    addrlen = sizeof(sockAddr);\r
-+    \r
-+    rc = getpeername(socketWinP->winsock, &sockAddr, &addrlen);\r
-+\r
-+    if (rc != 0) {\r
-+        int const lastError = WSAGetLastError();\r
-+        xmlrpc_asprintf(errorP, "getpeername() failed.  WSA error = %d (%s)",\r
-+                        lastError, getWSAError(lastError));\r
-+    } else {\r
-+        if (addrlen != sizeof(sockAddr))\r
-+            xmlrpc_asprintf(errorP, "getpeername() returned a socket address "\r
-+                            "of the wrong size: %u.  Expected %u",\r
-+                            addrlen, sizeof(sockAddr));\r
-+        else {\r
-+            if (sockAddr.sa_family != AF_INET)\r
-+                xmlrpc_asprintf(errorP,\r
-+                                "Socket does not use the Inet (IP) address "\r
-+                                "family.  Instead it uses family %d",\r
-+                                sockAddr.sa_family);\r
-+            else {\r
-+                *inAddrP = *(struct sockaddr_in *)&sockAddr;\r
-+\r
-+                *errorP = NULL;\r
-+            }\r
-+        }\r
-+    }\r
-+}\r
-+\r
-+\r
-+\r
-+static ChannelFormatPeerInfoImpl channelFormatPeerInfo;\r
-+\r
-+static void\r
-+channelFormatPeerInfo(TChannel *    const channelP,\r
-+                      const char ** const peerStringP) {\r
-+\r
-+    struct socketWin * const socketWinP = channelP->implP;\r
-+\r
-+    struct sockaddr sockaddr;\r
-+    socklen_t sockaddrLen;\r
-+    int rc;\r
-+\r
-+    sockaddrLen = sizeof(sockaddr);\r
-+    \r
-+    rc = getpeername(socketWinP->winsock, &sockaddr, &sockaddrLen);\r
-+    \r
-+    if (rc != 0) {\r
-+        int const lastError = WSAGetLastError();\r
-+        xmlrpc_asprintf(peerStringP, "?? getpeername() failed.  "\r
-+                        "WSAERROR %d (%s)",\r
-+                        lastError, getWSAError(lastError));\r
-+    } else {\r
-+        switch (sockaddr.sa_family) {\r
-+        case AF_INET: {\r
-+            struct sockaddr_in * const sockaddrInP =\r
-+                (struct sockaddr_in *) &sockaddr;\r
-+            if (sockaddrLen < sizeof(*sockaddrInP))\r
-+                xmlrpc_asprintf(peerStringP, "??? getpeername() returned "\r
-+                                "the wrong size");\r
-+            else {\r
-+                unsigned char * const ipaddr = (unsigned char *)\r
-+                    &sockaddrInP->sin_addr.s_addr;\r
-+                xmlrpc_asprintf(peerStringP, "%u.%u.%u.%u:%hu",\r
-+                                ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3],\r
-+                                sockaddrInP->sin_port);\r
-+            }\r
-+        } break;\r
-+        default:\r
-+            xmlrpc_asprintf(peerStringP, "??? AF=%u", sockaddr.sa_family);\r
-+        }\r
-+    }\r
-+}\r
-+\r
-+\r
-+\r
-+static struct TChannelVtbl const channelVtbl = {\r
-+    &channelDestroy,\r
-+    &channelWrite,\r
-+    &channelRead,\r
-+    &channelWait,\r
-+    &channelInterrupt,\r
-+    &channelFormatPeerInfo,\r
-+};\r
-+\r
-+\r
-+\r
-+static void\r
-+makeChannelFromWinsock(SOCKET        const winsock,\r
-+                       TChannel **   const channelPP,\r
-+                       const char ** const errorP) {\r
-+\r
-+    struct socketWin * socketWinP;\r
-+\r
-+    MALLOCVAR(socketWinP);\r
-+    \r
-+    if (socketWinP == NULL)\r
-+        xmlrpc_asprintf(errorP, "Unable to allocate memory for Windows "\r
-+                        "socket descriptor");\r
-+    else {\r
-+        TChannel * channelP;\r
-+        \r
-+        socketWinP->winsock = winsock;\r
-+        socketWinP->userSuppliedWinsock = TRUE;\r
-+        socketWinP->interruptEvent = CreateEvent(NULL, FALSE, FALSE, NULL);\r
-+\r
-+        ChannelCreate(&channelVtbl, socketWinP, &channelP);\r
-+        \r
-+        if (channelP == NULL)\r
-+            xmlrpc_asprintf(errorP, "Unable to allocate memory for "\r
-+                            "channel descriptor.");\r
-+        else {\r
-+            *channelPP = channelP;\r
-+            *errorP = NULL;\r
-+        }\r
-+        if (*errorP) {\r
-+            CloseHandle(socketWinP->interruptEvent);\r
-+            free(socketWinP);\r
-+        }\r
-+    }\r
-+}\r
-+\r
-+\r
-+\r
-+static void\r
-+makeChannelInfo(struct abyss_win_chaninfo ** const channelInfoPP,\r
-+                struct sockaddr              const peerAddr,\r
-+                socklen_t                    const peerAddrLen,\r
-+                const char **                const errorP) {\r
-+\r
-+    struct abyss_win_chaninfo * channelInfoP;\r
-+\r
-+    MALLOCVAR(channelInfoP);\r
-+    \r
-+    if (channelInfoP == NULL)\r
-+        xmlrpc_asprintf(errorP, "Unable to allocate memory");\r
-+    else {\r
-+        channelInfoP->peerAddrLen = peerAddrLen;\r
-+        channelInfoP->peerAddr    = peerAddr;\r
-+        \r
-+        *channelInfoPP = channelInfoP;\r
-+\r
-+        *errorP = NULL;\r
-+    }\r
-+}\r
-+\r
-+\r
-+\r
-+void\r
-+ChannelWinCreateWinsock(SOCKET                       const fd,\r
-+                        TChannel **                  const channelPP,\r
-+                        struct abyss_win_chaninfo ** const channelInfoPP,\r
-+                        const char **                const errorP) {\r
-+\r
-+    struct sockaddr peerAddr;\r
-+    socklen_t peerAddrLen;\r
-+    int rc;\r
-+\r
-+    peerAddrLen = sizeof(peerAddr);\r
-+\r
-+    rc = getpeername(fd, &peerAddr, &peerAddrLen);\r
-+\r
-+    if (rc != 0) {\r
-+        int const lastError = WSAGetLastError();\r
-+        if (lastError == WSAENOTCONN) {\r
-+            /* NOTE: This specific string 'not in connected' is\r
-+               required by one of the rpctest suite items, in abyss.c\r
-+               (line 186), hence the separation of the error messages\r
-+               in this case ...\r
-+            */\r
-+            xmlrpc_asprintf(errorP, "Socket on file descriptor %d "\r
-+                            "is not in connected state. WSAERROR = %d (%s)",\r
-+                            fd, lastError, getWSAError(lastError));\r
-+        } else\r
-+            xmlrpc_asprintf(errorP, "getpeername() failed. WSAERROR = %d (%s)",\r
-+                        lastError, getWSAError(lastError));\r
-+    } else {\r
-+        makeChannelInfo(channelInfoPP, peerAddr, peerAddrLen, errorP);\r
-+        if (!*errorP) {\r
-+            makeChannelFromWinsock(fd, channelPP, errorP);\r
-+\r
-+            if (*errorP)\r
-+                free(*channelInfoPP);\r
-+        }\r
-+    }\r
-+}\r
-+\r
-+\r
-+/*=============================================================================\r
-+      TChanSwitch\r
-+=============================================================================*/\r
-+\r
-+static SwitchDestroyImpl chanSwitchDestroy;\r
-+\r
-+void\r
-+chanSwitchDestroy(TChanSwitch * const chanSwitchP) {\r
-+\r
-+    struct socketWin * const socketWinP = chanSwitchP->implP;\r
-+\r
-+    if (!socketWinP->userSuppliedWinsock)\r
-+        closesocket(socketWinP->winsock);\r
-+\r
-+    CloseHandle(socketWinP->interruptEvent);\r
-+\r
-+    free(socketWinP);\r
-+}\r
-+\r
-+\r
-+\r
-+static SwitchListenImpl chanSwitchListen;\r
-+\r
-+static void\r
-+chanSwitchListen(TChanSwitch * const chanSwitchP,\r
-+                 uint32_t      const backlog,\r
-+                 const char ** const errorP) {\r
-+\r
-+    struct socketWin * const socketWinP = chanSwitchP->implP;\r
-+\r
-+    int32_t const minus1 = -1;\r
-+\r
-+    int rc;\r
-+\r
-+    /* Disable the Nagle algorithm to make persistant connections faster */\r
-+\r
-+    setsockopt(socketWinP->winsock, IPPROTO_TCP, TCP_NODELAY,\r
-+               (const char *)&minus1, sizeof(minus1));\r
-+\r
-+    rc = listen(socketWinP->winsock, backlog);\r
-+\r
-+    if (rc != 0) {\r
-+        int const lastError = WSAGetLastError();\r
-+        xmlrpc_asprintf(errorP, "setsockopt() failed with WSAERROR %d (%s)",\r
-+                        lastError, getWSAError(lastError));\r
-+    } else\r
-+        *errorP = NULL;\r
-+}\r
-+\r
-+\r
-+\r
-+static void\r
-+createChannelForAccept(int             const acceptedWinsock,\r
-+                       struct sockaddr const peerAddr,\r
-+                       TChannel **     const channelPP,\r
-+                       void **         const channelInfoPP,\r
-+                       const char **   const errorP) {\r
-+\r
-+    struct abyss_win_chaninfo * channelInfoP;\r
-+    makeChannelInfo(&channelInfoP, peerAddr, sizeof(peerAddr), errorP);\r
-+    if (!*errorP) {\r
-+        struct socketWin * acceptedSocketP;\r
-+\r
-+        MALLOCVAR(acceptedSocketP);\r
-+\r
-+        if (!acceptedSocketP)\r
-+            xmlrpc_asprintf(errorP, "Unable to allocate memory");\r
-+        else {\r
-+            TChannel * channelP;\r
-+\r
-+            acceptedSocketP->winsock             = acceptedWinsock;\r
-+            acceptedSocketP->userSuppliedWinsock = FALSE;\r
-+            acceptedSocketP->interruptEvent      =\r
-+                CreateEvent(NULL, FALSE, FALSE, NULL);\r
-+\r
-+            ChannelCreate(&channelVtbl, acceptedSocketP, &channelP);\r
-+            if (!channelP)\r
-+                xmlrpc_asprintf(errorP,\r
-+                                "Failed to create TChannel object.");\r
-+            else {\r
-+                *errorP        = NULL;\r
-+                *channelPP     = channelP;\r
-+                *channelInfoPP = channelInfoP;\r
-+            }\r
-+            if (*errorP) {\r
-+                CloseHandle(acceptedSocketP->interruptEvent);\r
-+                free(acceptedSocketP);\r
-+            }\r
-+        }\r
-+    }\r
-+}\r
-+\r
-+\r
-+\r
-+static SwitchAcceptImpl  chanSwitchAccept;\r
-+\r
-+static void\r
-+chanSwitchAccept(TChanSwitch * const chanSwitchP,\r
-+                 TChannel **   const channelPP,\r
-+                 void **       const channelInfoPP,\r
-+                 const char ** const errorP) {\r
-+/*----------------------------------------------------------------------------\r
-+   Accept a connection via the channel switch *chanSwitchP.  Return as\r
-+   *channelPP the channel for the accepted connection.\r
-+\r
-+   If no connection is waiting at *chanSwitchP, wait until one is.\r
-+\r
-+   If we receive a signal while waiting, return immediately with\r
-+   *channelPP == NULL.\r
-+-----------------------------------------------------------------------------*/\r
-+    struct socketWin * const listenSocketP = chanSwitchP->implP;\r
-+    HANDLE acceptEvent = WSACreateEvent();\r
-+    bool interrupted;\r
-+    TChannel * channelP;\r
-+\r
-+    interrupted = FALSE; /* Haven't been interrupted yet */\r
-+    channelP    = NULL;  /* No connection yet */\r
-+    *errorP     = NULL;  /* No error yet */\r
-+\r
-+    WSAEventSelect(listenSocketP->winsock, acceptEvent,\r
-+                   FD_ACCEPT | FD_CLOSE | FD_READ);\r
-+\r
-+    while (!channelP && !*errorP && !interrupted) {\r
-+        HANDLE interrupts[2] = {acceptEvent, listenSocketP->interruptEvent};\r
-+        int rc;\r
-+        struct sockaddr peerAddr;\r
-+        socklen_t size = sizeof(peerAddr);\r
-+\r
-+        rc = WaitForMultipleObjects(2, interrupts, FALSE, INFINITE);\r
-+        if (WAIT_OBJECT_0 + 1 == rc) {\r
-+            interrupted = TRUE;\r
-+            continue;\r
-+        };\r
-+\r
-+        rc = accept(listenSocketP->winsock, &peerAddr, &size);\r
-+\r
-+        if (rc >= 0) {\r
-+            int const acceptedWinsock = rc;\r
-+\r
-+            createChannelForAccept(acceptedWinsock, peerAddr,\r
-+                                   &channelP, channelInfoPP, errorP);\r
-+\r
-+            if (*errorP)\r
-+                closesocket(acceptedWinsock);\r
-+        } else {\r
-+            int const lastError = WSAGetLastError();\r
-+\r
-+            if (lastError == WSAEINTR)\r
-+                interrupted = TRUE;\r
-+            else\r
-+                xmlrpc_asprintf(errorP,\r
-+                                "accept() failed, WSA error = %d (%s)",\r
-+                                lastError, getWSAError(lastError));\r
-+        }\r
-+    }\r
-+    *channelPP = channelP;\r
-+    CloseHandle(acceptEvent);\r
-+}\r
-+\r
-+\r
-+\r
-+static SwitchInterruptImpl chanSwitchInterrupt;\r
-+\r
-+static void\r
-+chanSwitchInterrupt(TChanSwitch * const chanSwitchP) {\r
-+/*----------------------------------------------------------------------------\r
-+  Interrupt any waiting that a thread might be doing in chanSwitchAccept()\r
-+  now or in the future.\r
-+-----------------------------------------------------------------------------*/\r
-+    struct socketWin * const listenSocketP = chanSwitchP->implP;\r
-+\r
-+    SetEvent(listenSocketP->interruptEvent);\r
-+}\r
-+\r
-+\r
-+\r
-+static struct TChanSwitchVtbl const chanSwitchVtbl = {\r
-+    &chanSwitchDestroy,\r
-+    &chanSwitchListen,\r
-+    &chanSwitchAccept,\r
-+    &chanSwitchInterrupt,\r
-+};\r
-+\r
-+\r
-+\r
-+static void\r
-+setSocketOptions(SOCKET        const fd,\r
-+                 const char ** const errorP) {\r
-+\r
-+    int32_t const n = 1;\r
-+\r
-+    int rc;\r
-+\r
-+    rc = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char*)&n, sizeof(n));\r
-+\r
-+    if (rc != 0) {\r
-+        int const lastError = WSAGetLastError();\r
-+        xmlrpc_asprintf(errorP, "Failed to set socket options.  "\r
-+                        "setsockopt() failed with WSAERROR %d (%s)",\r
-+                        lastError, getWSAError(lastError));\r
-+    } else\r
-+        *errorP = NULL;\r
-+}\r
-+\r
-+\r
-+\r
-+void\r
-+bindSocketToPort(SOCKET           const winsock,\r
-+                 struct in_addr * const addrP,\r
-+                 uint16_t         const portNumber,\r
-+                 const char **    const errorP) {\r
-+    \r
-+    struct sockaddr_in name;\r
-+    int rc;\r
-+      int one = 1;\r
-+\r
-+    ZeroMemory(&name, sizeof(name));\r
-+    name.sin_family = AF_INET;\r
-+    name.sin_port   = htons(portNumber);\r
-+    if (addrP)\r
-+        name.sin_addr = *addrP;\r
-+\r
-+      setsockopt(winsock, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(int));\r
-+    rc = bind(winsock, (struct sockaddr *)&name, sizeof(name));\r
-+\r
-+    if (rc != 0) {\r
-+        int const lastError = WSAGetLastError();\r
-+        xmlrpc_asprintf(errorP, "Unable to bind socket to port number %u.  "\r
-+                        "bind() failed with WSAERROR %i (%s)",\r
-+                        portNumber, lastError, getWSAError(lastError));\r
-+    } else\r
-+        *errorP = NULL;\r
-+}\r
-+\r
-+\r
-+\r
-+void\r
-+ChanSwitchWinCreate(uint16_t       const portNumber,\r
-+                    TChanSwitch ** const chanSwitchPP,\r
-+                    const char **  const errorP) {\r
-+/*----------------------------------------------------------------------------\r
-+   Create a Winsock-based channel switch.\r
-+\r
-+   Set the socket's local address so that a subsequent "listen" will listen\r
-+   on all IP addresses, port number 'portNumber'.\r
-+-----------------------------------------------------------------------------*/\r
-+    struct socketWin * socketWinP;\r
-+\r
-+    MALLOCVAR(socketWinP);\r
-+\r
-+    if (!socketWinP)\r
-+        xmlrpc_asprintf(errorP, "Unable to allocate memory for Windows socket "\r
-+                        "descriptor structure.");\r
-+    else {\r
-+        SOCKET winsock;\r
-+\r
-+        winsock = socket(AF_INET, SOCK_STREAM, 0);\r
-+\r
-+        if (winsock == 0 || winsock == INVALID_SOCKET) {\r
-+            int const lastError = WSAGetLastError();\r
-+            xmlrpc_asprintf(errorP, "socket() failed with WSAERROR %d (%s)",\r
-+                            lastError, getWSAError(lastError));\r
-+        } else {\r
-+            socketWinP->winsock = winsock;\r
-+            socketWinP->userSuppliedWinsock = FALSE;\r
-+            socketWinP->interruptEvent = CreateEvent(NULL, FALSE, FALSE, NULL);\r
-+            \r
-+            setSocketOptions(socketWinP->winsock, errorP);\r
-+            if (!*errorP) {\r
-+                bindSocketToPort(socketWinP->winsock, NULL, portNumber,\r
-+                                 errorP);\r
-+                if (!*errorP)\r
-+                    ChanSwitchCreate(&chanSwitchVtbl, socketWinP,\r
-+                                     chanSwitchPP);\r
-+            }\r
-+\r
-+            if (*errorP) {\r
-+                CloseHandle(socketWinP->interruptEvent);\r
-+                closesocket(winsock);\r
-+            }\r
-+        }\r
-+        if (*errorP)\r
-+            free(socketWinP);\r
-+    }\r
-+}\r
-+\r
-+\r
-+\r
-+void\r
-+ChanSwitchWinCreateWinsock(SOCKET         const winsock,\r
-+                           TChanSwitch ** const chanSwitchPP,\r
-+                           const char **  const errorP) {\r
-+\r
-+    struct socketWin * socketWinP;\r
-+\r
-+    if (connected(winsock))\r
-+        xmlrpc_asprintf(errorP, "Socket is in connected state.");\r
-+    else {\r
-+        MALLOCVAR(socketWinP);\r
-+\r
-+        if (socketWinP == NULL)\r
-+            xmlrpc_asprintf(errorP, "unable to allocate memory for Windows "\r
-+                            "socket descriptor.");\r
-+        else {\r
-+            TChanSwitch * chanSwitchP;\r
-+\r
-+            socketWinP->winsock = winsock;\r
-+            socketWinP->userSuppliedWinsock = TRUE;\r
-+            socketWinP->interruptEvent = CreateEvent(NULL, FALSE, FALSE, NULL);\r
-+\r
-+            ChanSwitchCreate(&chanSwitchVtbl, socketWinP, &chanSwitchP);\r
-+\r
-+            if (chanSwitchP == NULL)\r
-+                xmlrpc_asprintf(errorP, "Unable to allocate memory for "\r
-+                                "channel switch descriptor");\r
-+            else {\r
-+                *chanSwitchPP = chanSwitchP;\r
-+                *errorP = NULL;\r
-+            }\r
-+            if (*errorP) {\r
-+                CloseHandle(socketWinP->interruptEvent);\r
-+                free(socketWinP);\r
-+            }\r
-+        }\r
-+    }\r
-+}\r
-diff --git a/libs/xmlrpc-c/lib/abyss/src/thread.c b/libs/xmlrpc-c/lib/abyss/src/thread.c
-deleted file mode 100644
-index b3d49c7..0000000
---- a/libs/xmlrpc-c/lib/abyss/src/thread.c
-+++ /dev/null
-@@ -1,228 +0,0 @@
--/*******************************************************************************
--**
--** thread.c
--**
--** This file is part of the ABYSS Web server project.
--**
--** Copyright (C) 2000 by Moez Mahfoudh <mmoez@bigfoot.com>.
--** 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. The name of the author may not be used to endorse or promote products
--**    derived from this software without specific prior written permission.
--** 
--** THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
--**
--*******************************************************************************/
--
--#ifdef ABYSS_WIN32
--#include <process.h>
--#endif
--
--#include "xmlrpc-c/abyss.h"
--
--#include "xmlrpc_config.h"
--
--/* 16K is the minimum size of stack on Win32 */
--#define  THREAD_STACK_SIZE    (240*1024)
--
--/*********************************************************************
--** Thread
--*********************************************************************/
--
--abyss_bool ThreadCreate(TThread *   const t ATTR_UNUSED,
--                        TThreadProc const func,
--                        void *      const arg )
--{
--#ifdef ABYSS_WIN32
--    DWORD z;
--    *t =(TThread)_beginthreadex( NULL, THREAD_STACK_SIZE, func, 
--                                 arg, CREATE_SUSPENDED, &z );
--    return (*t!=NULL);
--#else
--#   ifdef _UNIX
--#       ifdef _THREAD
--    {
--        pthread_attr_t attr;
--        pthread_attr_init( &attr );
--        pthread_attr_setstacksize( &attr, THREAD_STACK_SIZE );
--        if( pthread_create( t,&attr,(PTHREAD_START_ROUTINE)func,arg)==0)
--        {
--            pthread_attr_destroy( &attr );
--            return (pthread_detach(*t)==0);
--        }
--        pthread_attr_destroy( &attr );
--        return FALSE;
--    }
--#       else
--    switch (fork())
--    {
--    case 0:
--        (*func)(arg);
--        exit(0);
--    case (-1):
--        return FALSE;
--    };
--    
--    return TRUE;
--#       endif   /* _THREAD */
--#   else
--    (*func)(arg);
--    return TRUE;
--#   endif   /*_UNIX */
--#endif  /* ABYSS_WIN32 */
--}
--
--abyss_bool
--ThreadRun(TThread * const t ATTR_UNUSED) {
--#ifdef ABYSS_WIN32
--    return (ResumeThread(*t)!=0xFFFFFFFF);
--#else
--    return TRUE;    
--#endif  /* ABYSS_WIN32 */
--}
--
--
--
--abyss_bool
--ThreadStop(TThread * const t ATTR_UNUSED) {
--#ifdef ABYSS_WIN32
--    return (SuspendThread(*t)!=0xFFFFFFFF);
--#else
--    return TRUE;
--#endif  /* ABYSS_WIN32 */
--}
--
--
--
--abyss_bool
--ThreadKill(TThread * const t ATTR_UNUSED) {
--#ifdef ABYSS_WIN32
--    return (TerminateThread(*t,0)!=0);
--#else
--    /*return (pthread_kill(*t)==0);*/
--    return TRUE;
--#endif  /* ABYSS_WIN32 */
--}
--
--
--
--void ThreadWait(uint32_t ms)
--{
--#ifdef ABYSS_WIN32
--    Sleep(ms);
--#else
--    usleep(ms*1000);
--#endif  /* ABYSS_WIN32 */
--}
--
--
--
--void
--ThreadExit(TThread * const t ATTR_UNUSED,
--           int       const ret_value ATTR_UNUSED) {
--#ifdef ABYSS_WIN32
--    _endthreadex(ret_value);
--#elif defined(_THREAD)
--    pthread_exit(&ret_value);
--#else
--    ;
--#endif  /* ABYSS_WIN32 */
--}
--
--
--
--void
--ThreadClose(TThread * const t ATTR_UNUSED) {
--#ifdef ABYSS_WIN32
--    CloseHandle(*t);
--#endif  /* ABYSS_WIN32 */
--}
--
--
--
--/*********************************************************************
--** Mutex
--*********************************************************************/
--
--
--
--abyss_bool
--MutexCreate(TMutex * const m ATTR_UNUSED) {
--#if defined(ABYSS_WIN32)
--    return ((*m=CreateMutex(NULL,FALSE,NULL))!=NULL);
--#elif defined(_THREAD)
--    return (pthread_mutex_init(m, NULL)==0);
--#else
--    return TRUE;
--#endif  
--}
--
--
--
--abyss_bool
--MutexLock(TMutex * const m ATTR_UNUSED) {
--#if defined(ABYSS_WIN32)
--    return (WaitForSingleObject(*m,INFINITE)!=WAIT_TIMEOUT);
--#elif defined(_THREAD)
--    return (pthread_mutex_lock(m)==0);
--#else
--    return TRUE;
--#endif
--}
--
--
--
--abyss_bool
--MutexUnlock(TMutex * const m ATTR_UNUSED) {
--#if defined(ABYSS_WIN32)
--    return ReleaseMutex(*m);
--#elif defined(_THREAD)
--    return (pthread_mutex_unlock(m)==0);
--#else
--    return TRUE;
--#endif
--}
--
--
--
--abyss_bool
--MutexTryLock(TMutex * const m ATTR_UNUSED) {
--#if defined(ABYSS_WIN32)
--    return (WaitForSingleObject(*m,0)!=WAIT_TIMEOUT);
--#elif defined(_THREAD)
--    return (pthread_mutex_trylock(m)==0);
--#else
--    return TRUE;
--#endif
--}
--
--
--
--void
--MutexFree(TMutex * const m ATTR_UNUSED) {
--#if defined(ABYSS_WIN32)
--    CloseHandle(*m);
--#elif defined(_THREAD)
--    pthread_mutex_destroy(m);
--#else
--    ;
--#endif
--}
-diff --git a/libs/xmlrpc-c/lib/abyss/src/thread.h b/libs/xmlrpc-c/lib/abyss/src/thread.h
-index c214f4b..c9f2b9e 100644
---- a/libs/xmlrpc-c/lib/abyss/src/thread.h
-+++ b/libs/xmlrpc-c/lib/abyss/src/thread.h
-@@ -21,6 +21,7 @@ ThreadCreate(TThread **      const threadPP,
-              TThreadProc   * const func,
-              TThreadDoneFn * const threadDone,
-              bool            const useSigchld,
-+             size_t          const stackSize,
-              const char **   const errorP);
- bool
-@@ -36,7 +37,8 @@ void
- ThreadWaitAndRelease(TThread * const threadP);
- void
--ThreadExit(int const retValue);
-+ThreadExit(TThread * const threadP,
-+           int       const retValue);
- void
- ThreadRelease(TThread * const threadP);
-diff --git a/libs/xmlrpc-c/lib/abyss/src/thread_fork.c b/libs/xmlrpc-c/lib/abyss/src/thread_fork.c
-index 973e153..d96bf59 100644
---- a/libs/xmlrpc-c/lib/abyss/src/thread_fork.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/thread_fork.c
-@@ -157,6 +157,7 @@ ThreadCreate(TThread **      const threadPP,
-              TThreadProc   * const func,
-              TThreadDoneFn * const threadDone,
-              bool            const useSigchld,
-+             size_t          const stackSize,
-              const char **   const errorP) {
-     
-     TThread * threadP;
-@@ -189,6 +190,9 @@ ThreadCreate(TThread **      const threadPP,
-         else if (rc == 0) {
-             /* This is the child */
-             (*func)(userHandle);
-+            /* Note that thread cleanup (threadDone) is done by the _parent_,
-+               upon seeing our exit.
-+            */
-             exit(0);
-         } else {
-             /* This is the parent */
-@@ -249,7 +253,8 @@ ThreadWaitAndRelease(TThread * const threadP) {
- void
--ThreadExit(int const retValue) {
-+ThreadExit(TThread * const threadP ATTR_UNUSED,
-+           int       const retValue) {
-     /* Note that the OS will automatically send a SIGCHLD signal to
-        the parent process after we exit.  The handler for that signal
-@@ -259,6 +264,10 @@ ThreadExit(int const retValue) {
-        sees we've gone.
-     */
-+    /* Note that thread cleanup (threadDone) is done by the _parent_,
-+       upon seeing our exit.
-+    */
-+
-     exit(retValue);
- }
-diff --git a/libs/xmlrpc-c/lib/abyss/src/thread_pthread.c b/libs/xmlrpc-c/lib/abyss/src/thread_pthread.c
-index 5cca825..7c6b2a7 100644
---- a/libs/xmlrpc-c/lib/abyss/src/thread_pthread.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/thread_pthread.c
-@@ -7,6 +7,7 @@
- #include "bool.h"
- #include "mallocvar.h"
-+#include "xmlrpc-c/util_int.h"
- #include "xmlrpc-c/string_int.h"
- #include "pthreadx.h"
-@@ -23,12 +24,12 @@ struct abyss_thread {
-     TThreadDoneFn * threadDone;
- };
--/* We used to have THREAD_STACK_SIZE = 16K, which was said to be the
-+/* We used to have MIN_STACK_SIZE = 16K, which was said to be the
-    minimum stack size on Win32.  Scott Kolodzeski found in November
-    2005 that this was insufficient for 64 bit Solaris -- we fail
-    when creating the first thread.  So we changed to 128K.
- */
--#define  THREAD_STACK_SIZE (128*1024L)
-+#define  MIN_STACK_SIZE (128*1024L)
- typedef void * (pthreadStartRoutine)(void *);
-@@ -49,51 +50,63 @@ pthreadStart(void * const arg) {
-     pthread_cleanup_pop(executeTrue);
-+    /* Note that func() may not return; it may just exit the thread,
-+       by calling ThreadExit(), in which case code here doesn't run.
-+    */
-+    threadP->threadDone(threadP->userHandle);
-+
-     return NULL;
- }
-+
- void
- ThreadCreate(TThread **      const threadPP,
-              void *          const userHandle,
-              TThreadProc   * const func,
-              TThreadDoneFn * const threadDone,
-              bool            const useSigchld ATTR_UNUSED,
-+             size_t          const stackSize,
-              const char **   const errorP) {
--    TThread * threadP;
--
--    MALLOCVAR(threadP);
--    if (threadP == NULL)
--        xmlrpc_asprintf(errorP,
--                        "Can't allocate memory for thread descriptor.");
-+    if ((size_t)(int)stackSize != stackSize)
-+        xmlrpc_asprintf(errorP, "Stack size %lu is too big",
-+                        (unsigned long)stackSize);
-     else {
--        pthread_attr_t attr;
--        int rc;
-+        TThread * threadP;
-+
-+        MALLOCVAR(threadP);
-+        if (threadP == NULL)
-+            xmlrpc_asprintf(errorP,
-+                            "Can't allocate memory for thread descriptor.");
-+        else {
-+            pthread_attr_t attr;
-+            int rc;
--        pthread_attr_init(&attr);
-+            pthread_attr_init(&attr);
--        pthread_attr_setstacksize(&attr, THREAD_STACK_SIZE);
-+            pthread_attr_setstacksize(&attr, MAX(MIN_STACK_SIZE, stackSize));
-         
--        threadP->userHandle = userHandle;
--        threadP->func       = func;
--        threadP->threadDone = threadDone;
--
--        rc = pthread_create(&threadP->thread, &attr,
--                            pthreadStart, threadP);
--        if (rc == 0) {
--            *errorP = NULL;
--            *threadPP = threadP;
--        } else
--            xmlrpc_asprintf(
--                errorP, "pthread_create() failed, errno = %d (%s)",
--                errno, strerror(errno));
-+            threadP->userHandle = userHandle;
-+            threadP->func       = func;
-+            threadP->threadDone = threadDone;
-+
-+            rc = pthread_create(&threadP->thread, &attr,
-+                                pthreadStart, threadP);
-+            if (rc == 0) {
-+                *errorP = NULL;
-+                *threadPP = threadP;
-+            } else
-+                xmlrpc_asprintf(
-+                    errorP, "pthread_create() failed, errno = %d (%s)",
-+                    errno, strerror(errno));
-         
--        pthread_attr_destroy(&attr);
-+            pthread_attr_destroy(&attr);
--        if (*errorP)
--            free(threadP);
-+            if (*errorP)
-+                free(threadP);
-+        }
-     }
- }
-@@ -134,7 +147,8 @@ ThreadWaitAndRelease(TThread * const threadP) {
- void
--ThreadExit(int const retValue) {
-+ThreadExit(TThread * const threadP ATTR_UNUSED,
-+           int       const retValue) {
-     pthread_exit((void*)&retValue);
-diff --git a/libs/xmlrpc-c/lib/abyss/src/thread_windows.c b/libs/xmlrpc-c/lib/abyss/src/thread_windows.c
-index dae5bb5..f173f1b 100644
---- a/libs/xmlrpc-c/lib/abyss/src/thread_windows.c
-+++ b/libs/xmlrpc-c/lib/abyss/src/thread_windows.c
-@@ -15,6 +15,7 @@
- #include "bool.h"
- #include "int.h"
-+#include "xmlrpc-c/util_int.h"
- #include "mallocvar.h"
- #include "xmlrpc-c/string_int.h"
-@@ -24,7 +25,6 @@
- #include "thread.h"
--
- struct abyss_thread {
-     HANDLE handle;
-     void * userHandle;
-@@ -32,7 +32,7 @@ struct abyss_thread {
-     TThreadDoneFn * threadDone;
- };
--#define  THREAD_STACK_SIZE (16*1024L)
-+#define  MIN_THREAD_STACK_SIZE (16*1024L)
- typedef uint32_t (WINAPI WinThreadProc)(void *);
-@@ -60,6 +60,7 @@ ThreadCreate(TThread **      const threadPP,
-              TThreadProc   * const func,
-              TThreadDoneFn * const threadDone,
-              bool            const useSigchld,
-+             size_t          const stackSize,
-              const char **   const errorP) {
-     TThread * threadP;
-@@ -76,12 +77,13 @@ ThreadCreate(TThread **      const threadPP,
-         threadP->func       = func;
-         threadP->threadDone = threadDone;
--        threadP->handle = (HANDLE)_beginthreadex(NULL,
--                                                 THREAD_STACK_SIZE,
--                                                 threadRun,
--                                                 threadP,
--                                                 CREATE_SUSPENDED,
--                                                 &z);
-+        threadP->handle = (HANDLE)
-+            _beginthreadex(NULL,
-+                           MAX(stackSize, MIN_THREAD_STACK_SIZE),
-+                           threadRun,
-+                           threadP,
-+                           CREATE_SUSPENDED,
-+                           &z);
-         if (threadP->handle == NULL)
-             xmlrpc_asprintf(errorP, "_beginthreadex() failed.");
-@@ -121,13 +123,17 @@ ThreadKill(TThread * const threadP) {
- void
- ThreadWaitAndRelease(TThread * const threadP) {
-+    WaitForSingleObject(threadP->handle, INFINITE);
-     ThreadRelease(threadP);
- }
- void
--ThreadExit(int const retValue) {
-+ThreadExit(TThread * const threadP,
-+           int       const retValue) {
-+
-+    threadP->threadDone(threadP->userHandle);
-     _endthreadex(retValue);
- }
-@@ -138,6 +144,7 @@ void
- ThreadRelease(TThread * const threadP) {
-     CloseHandle(threadP->handle);
-+    free(threadP); 
- }
-@@ -190,8 +197,6 @@ MutexCreate(TMutex ** const mutexPP) {
-     *mutexPP = mutexP;
--    TraceMsg( "Created Mutex %s\n", (succeeded ? "ok" : "FAILED") );
--
-     return succeeded;
- }
-  
-diff --git a/libs/xmlrpc-c/lib/abyss/version.txt b/libs/xmlrpc-c/lib/abyss/version.txt
-deleted file mode 100644
-index 13874ba..0000000
---- a/libs/xmlrpc-c/lib/abyss/version.txt
-+++ /dev/null
-@@ -1 +0,0 @@
--0.3 (03/23/2000)
-\ No newline at end of file
-diff --git a/libs/xmlrpc-c/lib/curl_transport/Makefile b/libs/xmlrpc-c/lib/curl_transport/Makefile
-index c9e144f..a257749 100644
---- a/libs/xmlrpc-c/lib/curl_transport/Makefile
-+++ b/libs/xmlrpc-c/lib/curl_transport/Makefile
-@@ -10,30 +10,34 @@ include $(BLDDIR)/config.mk
- default: all
-+MODS := xmlrpc_curl_transport curltransaction curlmulti lock_pthread
-+
- .PHONY: all
--all: xmlrpc_curl_transport.o xmlrpc_curl_transport.osh
-+all: $(MODS:%=%.o) $(MODS:%=%.osh)
- # Rules for the above dependencies are in common.mk,
- # courtesy of TARGET_MODS.
--TARGET_MODS = xmlrpc_curl_transport
-+TARGET_MODS = $(MODS)
- OMIT_CURL_TRANSPORT_RULE=Y
- include $(SRCDIR)/common.mk
-+# This 'common.mk' dependency makes sure the symlinks get built before
-+# this make file is used for anything.
-+
-+$(SRCDIR)/common.mk: srcdir blddir
- CURL_INCLUDES := $(shell curl-config --cflags)
- # We expect that curl-config --cflags just gives us -I options, because
- # we need just the -I options for 'make dep'.  Plus, it's scary to think
- # of what any other compiler flag would do to our compile.
--CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
--
- INCLUDES = \
-   -I$(BLDDIR) \
-   -I$(BLDDIR)/include \
--  -I$(SRCDIR)/include \
--  -I$(SRCDIR)/lib/util/include \
-+  -Isrcdir/include \
-+  -Isrcdir/lib/util/include \
-   $(CURL_INCLUDES)
- .PHONY: clean
-@@ -54,8 +58,8 @@ install:
- .PHONY: dep
- dep: dep-common
--include Makefile.depend
-+include depend.mk
--# Need this dependency for those who don't use Makefile.depend.
-+# Need this dependency for those who don't use depend.mk.
- # Without it, version.h doesn't get created.
- xmlrpc_curl_transport.o xmlrpc_curl_transport.osh: version.h
-diff --git a/libs/xmlrpc-c/lib/curl_transport/Makefile.depend b/libs/xmlrpc-c/lib/curl_transport/Makefile.depend
-deleted file mode 100644
-index e69de29..0000000
-diff --git a/libs/xmlrpc-c/lib/curl_transport/curlmulti.c b/libs/xmlrpc-c/lib/curl_transport/curlmulti.c
-new file mode 100644
-index 0000000..8f985de
---- /dev/null
-+++ b/libs/xmlrpc-c/lib/curl_transport/curlmulti.c
-@@ -0,0 +1,313 @@
-+/*=============================================================================
-+                               curlMulti
-+===============================================================================
-+   This is an extension to Curl's CURLM object.  The extensions are:
-+
-+   1) It has a lock so multiple threads can use it simultaneously.
-+
-+   2) Its "select" file descriptor vectors are self-contained.  CURLM
-+      requires the user to maintain them separately.
-+=============================================================================*/
-+
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
-+
-+#include "xmlrpc_config.h"
-+
-+#include <stdlib.h>
-+#if HAVE_SYS_SELECT_H
-+#include <sys/select.h>
-+#endif
-+
-+#include <curl/curl.h>
-+#include <curl/types.h>
-+#include <curl/easy.h>
-+#include <curl/multi.h>
-+
-+#include "mallocvar.h"
-+#include "xmlrpc-c/util.h"
-+#include "xmlrpc-c/string_int.h"
-+
-+#include "curlversion.h"
-+#include "lock.h"
-+#include "lock_pthread.h"
-+
-+#include "curlmulti.h"
-+
-+
-+
-+static void
-+interpretCurlMultiError(const char ** const descriptionP,
-+                        CURLMcode     const code) {
-+
-+#if HAVE_CURL_STRERROR
-+    *descriptionP = strdup(curl_multi_strerror(code));
-+#else
-+    xmlrpc_asprintf(descriptionP, "Curl error code (CURLMcode) %d", code);
-+#endif
-+}
-+
-+
-+
-+struct curlMulti {
-+    CURLM * curlMultiP;
-+    lock * lockP;
-+        /* Hold this lock while accessing or using *curlMultiP.  You're
-+           using the multi manager whenever you're calling a Curl
-+           library multi manager function.
-+        */
-+    /* The following file descriptor sets are an integral part of the
-+       CURLM object; Our curlMulti_fdset() routine binds them to the
-+       CURLM object, and said object expects us to use them in a very
-+       specific way, including doing a select() on them.  It is very,
-+       very messy.
-+    */
-+    fd_set readFdSet;
-+    fd_set writeFdSet;
-+    fd_set exceptFdSet;
-+};
-+
-+
-+
-+curlMulti *
-+curlMulti_create(void) {
-+
-+    curlMulti * retval;
-+    curlMulti * curlMultiP;
-+
-+    MALLOCVAR(curlMultiP);
-+
-+    if (curlMultiP == NULL)
-+        retval = NULL;
-+    else {
-+        curlMultiP->lockP = curlLock_create_pthread();
-+
-+        if (curlMultiP->lockP == NULL)
-+            retval = NULL;
-+        else {
-+            curlMultiP->curlMultiP = curl_multi_init();
-+            if (curlMultiP->curlMultiP == NULL)
-+                retval = NULL;
-+            else
-+                retval = curlMultiP;
-+
-+            if (retval == NULL)
-+                curlMultiP->lockP->destroy(curlMultiP->lockP);
-+        }
-+        if (retval == NULL)
-+            free(curlMultiP);
-+    }
-+    return retval;
-+}
-+
-+
-+
-+void
-+curlMulti_destroy(curlMulti * const curlMultiP) {
-+
-+    curl_multi_cleanup(curlMultiP->curlMultiP);
-+    
-+    curlMultiP->lockP->destroy(curlMultiP->lockP);
-+
-+    free(curlMultiP);
-+}
-+
-+
-+
-+void
-+curlMulti_perform(xmlrpc_env * const envP,
-+                  curlMulti *  const curlMultiP,
-+                  bool *       const immediateWorkToDoP,
-+                  int *        const runningHandlesP) {
-+/*----------------------------------------------------------------------------
-+   Do whatever work is ready to be done under the control of multi
-+   manager 'curlMultiP'.  E.g. if HTTP response data has recently arrived
-+   from the network, process it as an HTTP response.
-+
-+   Iff this results in some work being finished from our point of view,
-+   return *immediateWorkToDoP.  (Caller can query the multi manager for
-+   messages and find out what it is).
-+
-+   Return as *runningHandlesP the number of Curl easy handles under the
-+   multi manager's control that are still running -- yet to finish.
-+-----------------------------------------------------------------------------*/
-+    CURLMcode rc;
-+
-+    curlMultiP->lockP->acquire(curlMultiP->lockP);
-+
-+    rc = curl_multi_perform(curlMultiP->curlMultiP, runningHandlesP);
-+
-+    curlMultiP->lockP->release(curlMultiP->lockP);
-+
-+    if (rc == CURLM_CALL_MULTI_PERFORM) {
-+        *immediateWorkToDoP = true;
-+    } else {
-+        *immediateWorkToDoP = false;
-+
-+        if (rc != CURLM_OK) {
-+            const char * reason;
-+            interpretCurlMultiError(&reason, rc);
-+            xmlrpc_faultf(envP, "Impossible failure of curl_multi_perform(): "
-+                          "%s", reason);
-+            xmlrpc_strfree(reason);
-+        }
-+    }
-+}        
-+
-+
-+
-+void
-+curlMulti_addHandle(xmlrpc_env *       const envP,
-+                    curlMulti *        const curlMultiP,
-+                    CURL *             const curlSessionP) {
-+
-+    CURLMcode rc;
-+
-+    curlMultiP->lockP->acquire(curlMultiP->lockP);
-+
-+    rc = curl_multi_add_handle(curlMultiP->curlMultiP, curlSessionP);
-+    
-+    curlMultiP->lockP->release(curlMultiP->lockP);
-+
-+    if (rc != CURLM_OK) {
-+        const char * reason;
-+        interpretCurlMultiError(&reason, rc);
-+        xmlrpc_faultf(envP, "Could not add Curl session to the "
-+                      "curl multi manager.  curl_multi_add_handle() "
-+                      "failed: %s", reason);
-+        xmlrpc_strfree(reason);
-+    }
-+}
-+
-+
-+void
-+curlMulti_removeHandle(curlMulti *       const curlMultiP,
-+                       CURL *            const curlSessionP) {
-+
-+    curlMultiP->lockP->acquire(curlMultiP->lockP);
-+
-+    curl_multi_remove_handle(curlMultiP->curlMultiP, curlSessionP);
-+    
-+    curlMultiP->lockP->release(curlMultiP->lockP);
-+}
-+
-+
-+
-+void
-+curlMulti_getMessage(curlMulti * const curlMultiP,
-+                     bool *      const endOfMessagesP,
-+                     CURLMsg *   const curlMsgP) {
-+/*----------------------------------------------------------------------------
-+   Get the next message from the queue of things the Curl multi manager
-+   wants to say to us.
-+
-+   Return the message as *curlMsgP.
-+
-+   Iff there are no messages in the queue, return *endOfMessagesP == true.
-+-----------------------------------------------------------------------------*/
-+    int remainingMsgCount;
-+    CURLMsg * privateCurlMsgP;
-+        /* Note that this is a pointer into the multi manager's memory,
-+           so we have to use it under lock.
-+        */
-+
-+    curlMultiP->lockP->acquire(curlMultiP->lockP);
-+    
-+    privateCurlMsgP = curl_multi_info_read(curlMultiP->curlMultiP,
-+                                           &remainingMsgCount);
-+        
-+    if (privateCurlMsgP == NULL)
-+        *endOfMessagesP = true;
-+    else {
-+        *endOfMessagesP = false;
-+        *curlMsgP = *privateCurlMsgP;
-+    }    
-+    curlMultiP->lockP->release(curlMultiP->lockP);
-+}
-+
-+
-+
-+void
-+curlMulti_fdset(xmlrpc_env * const envP,
-+                curlMulti *  const curlMultiP,
-+                fd_set *     const readFdSetP,
-+                fd_set *     const writeFdSetP,
-+                fd_set *     const exceptFdSetP,
-+                int *        const maxFdP) {
-+/*----------------------------------------------------------------------------
-+   Set the CURLM object's file descriptor sets to those in the
-+   curlMulti object, update those file descriptor sets with the
-+   current needs of the multi manager, and return the resulting values
-+   of the file descriptor sets.
-+
-+   This is a bizarre operation, but is necessary because of the nonmodular
-+   way in which the Curl multi interface works with respect to waiting
-+   for work with select().
-+-----------------------------------------------------------------------------*/
-+    CURLMcode rc;
-+    
-+    curlMultiP->lockP->acquire(curlMultiP->lockP);
-+
-+    /* curl_multi_fdset() doesn't _set_ the fdsets.  It adds to existing
-+       ones (so you can easily do a select() on other fds and Curl
-+       fds at the same time).  So we have to clear first:
-+    */
-+    FD_ZERO(&curlMultiP->readFdSet);
-+    FD_ZERO(&curlMultiP->writeFdSet);
-+    FD_ZERO(&curlMultiP->exceptFdSet);
-+
-+    /* WARNING: curl_multi_fdset() doesn't just update the fdsets pointed
-+       to by its arguments.  It makes the CURLM object remember those
-+       pointers and refer back to them later!  In fact, curl_multi_perform
-+       expects its caller to have done a select() on those masks.  No,
-+       really.  The man page even admits it.
-+
-+       Inspection of the Libcurl code in March 2007 indicates that
-+       this isn't actually true -- curl_multi_fdset() updates your
-+       fdset and doesn't remember the pointer at all.  I.e. it's just
-+       what you would expect.  The man pages still says it's as
-+       described above.  My guess is that Libcurl was fixed at some
-+       time and the man page not updated.  In any case, we have to
-+       work with old Libcurl if at all possible, so we still maintain
-+       these fdsets as if they belong to the CURLM object.
-+    */
-+
-+    rc = curl_multi_fdset(curlMultiP->curlMultiP,
-+                          &curlMultiP->readFdSet,
-+                          &curlMultiP->writeFdSet,
-+                          &curlMultiP->exceptFdSet,
-+                          maxFdP);
-+
-+    *readFdSetP   = curlMultiP->readFdSet;
-+    *writeFdSetP  = curlMultiP->writeFdSet;
-+    *exceptFdSetP = curlMultiP->exceptFdSet;
-+
-+    curlMultiP->lockP->release(curlMultiP->lockP);
-+
-+    if (rc != CURLM_OK) {
-+        const char * reason;
-+        interpretCurlMultiError(&reason, rc);
-+        xmlrpc_faultf(envP, "Impossible failure of curl_multi_fdset(): %s",
-+                      reason);
-+        xmlrpc_strfree(reason);
-+    }
-+}
-+
-+
-+
-+void
-+curlMulti_updateFdSet(curlMulti * const curlMultiP,
-+                      fd_set      const readFdSet,
-+                      fd_set      const writeFdSet,
-+                      fd_set      const exceptFdSet) {
-+/*----------------------------------------------------------------------------
-+   curl_multi_perform() expects the file descriptor sets, which were bound
-+   to the CURLM object via a prior curlMulti_fdset(), to contain the results
-+   of a recent select().  This subroutine provides you a way to supply those.
-+-----------------------------------------------------------------------------*/
-+    curlMultiP->readFdSet   = readFdSet;
-+    curlMultiP->writeFdSet  = writeFdSet;
-+    curlMultiP->exceptFdSet = exceptFdSet;
-+}
-+
-+                      
-+
-diff --git a/libs/xmlrpc-c/lib/curl_transport/curlmulti.h b/libs/xmlrpc-c/lib/curl_transport/curlmulti.h
-new file mode 100644
-index 0000000..265ed0c
---- /dev/null
-+++ b/libs/xmlrpc-c/lib/curl_transport/curlmulti.h
-@@ -0,0 +1,51 @@
-+#ifndef CURLMULTI_H_INCLUDED
-+#define CURLMULTI_H_INCLUDED
-+
-+#include "bool.h"
-+#include "xmlrpc-c/util.h"
-+
-+#include "curltransaction.h"
-+
-+typedef struct curlMulti curlMulti;
-+
-+curlMulti *
-+curlMulti_create(void);
-+
-+void
-+curlMulti_destroy(curlMulti * const curlMultiP);
-+
-+void
-+curlMulti_perform(xmlrpc_env * const envP,
-+                  curlMulti *  const curlMultiP,
-+                  bool *       const immediateWorkToDoP,
-+                  int *        const runningHandlesP);
-+
-+void
-+curlMulti_addHandle(xmlrpc_env *       const envP,
-+                    curlMulti *        const curlMultiP,
-+                    CURL *             const curlSessionP);
-+
-+void
-+curlMulti_removeHandle(curlMulti *       const curlMultiP,
-+                       CURL *            const curlSessionP);
-+
-+void
-+curlMulti_getMessage(curlMulti * const curlMultiP,
-+                     bool *      const endOfMessagesP,
-+                     CURLMsg *   const curlMsgP);
-+
-+void
-+curlMulti_fdset(xmlrpc_env * const envP,
-+                curlMulti *  const curlMultiP,
-+                fd_set *     const readFdSetP,
-+                fd_set *     const writeFdSetP,
-+                fd_set *     const exceptFdSetP,
-+                int *        const maxFdP);
-+
-+void
-+curlMulti_updateFdSet(curlMulti * const curlMultiP,
-+                      fd_set      const readFdSet,
-+                      fd_set      const writeFdSet,
-+                      fd_set      const exceptFdSet);
-+
-+#endif
-diff --git a/libs/xmlrpc-c/lib/curl_transport/curltransaction.c b/libs/xmlrpc-c/lib/curl_transport/curltransaction.c
-new file mode 100644
-index 0000000..0d3d65f
---- /dev/null
-+++ b/libs/xmlrpc-c/lib/curl_transport/curltransaction.c
-@@ -0,0 +1,753 @@
-+/*=============================================================================
-+    curlTransaction
-+=============================================================================*/
-+
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
-+
-+#include <assert.h>
-+#include <string.h>
-+#include <stdlib.h>
-+
-+#include "mallocvar.h"
-+
-+#include "xmlrpc-c/util.h"
-+#include "xmlrpc-c/string_int.h"
-+#include "xmlrpc-c/client.h"
-+#include "xmlrpc-c/client_int.h"
-+#include "version.h"
-+
-+#include <curl/curl.h>
-+#include <curl/types.h>
-+#include <curl/easy.h>
-+
-+#include "curlversion.h"
-+
-+#include "curltransaction.h"
-+
-+
-+struct curlTransaction {
-+    /* This is all stuff that really ought to be in a Curl object, but
-+       the Curl library is a little too simple for that.  So we build
-+       a layer on top of Curl, and define this "transaction," as an
-+       object subordinate to a Curl "session."  A Curl session has
-+       zero or one transactions in progress.  The Curl session
-+       "private data" is a pointer to the CurlTransaction object for
-+       the current transaction.
-+    */
-+    CURL * curlSessionP;
-+        /* Handle for the Curl session that hosts this transaction.
-+           Note that only one transaction at a time can use a particular
-+           Curl session, so this had better not be a session that some other
-+           transaction is using simultaneously.
-+        */
-+    curlt_finishFn * finish;
-+    curlt_progressFn * progress;
-+    void * userContextP;
-+        /* Meaningful to our client; opaque to us */
-+    CURLcode result;
-+        /* Result of the transaction (succeeded, TCP connect failed, etc.).
-+           A properly executed HTTP transaction (request & response) counts
-+           as a successful transaction.  When 'result' show success,
-+           curl_easy_get_info() tells you whether the transaction succeeded
-+           at the HTTP level.
-+        */
-+    char curlError[CURL_ERROR_SIZE];
-+        /* Error message from Curl */
-+    struct curl_slist * headerList;
-+        /* The HTTP headers for the transaction */
-+    const char * serverUrl;  /* malloc'ed - belongs to this object */
-+};
-+
-+
-+
-+static void
-+addHeader(xmlrpc_env *         const envP,
-+          struct curl_slist ** const headerListP,
-+          const char *         const headerText) {
-+
-+    struct curl_slist * newHeaderList;
-+    newHeaderList = curl_slist_append(*headerListP, headerText);
-+    if (newHeaderList == NULL)
-+        xmlrpc_faultf(envP,
-+                      "Could not add header '%s'.  "
-+                      "curl_slist_append() failed.", headerText);
-+    else
-+        *headerListP = newHeaderList;
-+}
-+
-+
-+
-+static void
-+addContentTypeHeader(xmlrpc_env *         const envP,
-+                     struct curl_slist ** const headerListP) {
-+    
-+    addHeader(envP, headerListP, "Content-Type: text/xml");
-+}
-+
-+
-+
-+static const char *
-+xmlrpcUserAgentPart(bool const reportIt) {
-+
-+    const char * retval;
-+    
-+    if (reportIt) {
-+        curl_version_info_data * const curlInfoP =
-+            curl_version_info(CURLVERSION_NOW);
-+        char curlVersion[32];
-+        
-+        snprintf(curlVersion, sizeof(curlVersion), "%u.%u.%u",
-+                 (curlInfoP->version_num >> 16) && 0xff,
-+                 (curlInfoP->version_num >>  8) && 0xff,
-+                 (curlInfoP->version_num >>  0) && 0xff
-+            );
-+
-+        xmlrpc_asprintf(&retval,
-+                        "Xmlrpc-c/%s Curl/%s",
-+                        XMLRPC_C_VERSION, curlVersion);
-+    } else
-+        xmlrpc_asprintf(&retval, "%s", "");
-+
-+    return retval;
-+}
-+
-+
-+
-+static void
-+addUserAgentHeader(xmlrpc_env *         const envP,
-+                   struct curl_slist ** const headerListP,
-+                   bool                 const reportXmlrpc,
-+                   const char *         const userAgent) {
-+/*----------------------------------------------------------------------------
-+   Add a User-Agent HTTP header to the Curl header list *headerListP,
-+   if appropriate.
-+   
-+   'reportXmlrpc' means we want to tell the client what XML-RPC agent
-+   is being used -- Xmlrpc-c and layers below.
-+
-+   'userAgent' is a string describing the layers above Xmlrpc-c.  We
-+   assume it is in the proper format to be included in a User-Agent
-+   header.  (We should probably fix that some day -- take ownership
-+   of that format).
-+-----------------------------------------------------------------------------*/
-+    if (reportXmlrpc || userAgent) {
-+        /* Add the header */
-+
-+        /* Note: Curl has a CURLOPT_USERAGENT option that does some of this
-+           work.  We prefer to be totally in control, though, so we build
-+           the header explicitly.
-+        */
-+
-+        const char * const xmlrpcPart = xmlrpcUserAgentPart(reportXmlrpc);
-+
-+        if (xmlrpc_strnomem(xmlrpcPart))
-+            xmlrpc_faultf(envP, "Couldn't allocate memory for "
-+                          "User-Agent header");
-+        else {
-+            const char * const userPart = userAgent ? userAgent : "";
-+            const char * const space = userAgent && reportXmlrpc ? " " : "";
-+
-+            const char * userAgentHeader;
-+
-+            xmlrpc_asprintf(&userAgentHeader,
-+                            "User-Agent: %s%s%s",
-+                            userPart, space, xmlrpcPart);
-+        
-+            if (xmlrpc_strnomem(userAgentHeader))
-+                xmlrpc_faultf(envP, "Couldn't allocate memory for "
-+                              "User-Agent header");
-+            else {
-+                addHeader(envP, headerListP, userAgentHeader);
-+            
-+                xmlrpc_strfree(userAgentHeader);
-+            }
-+            xmlrpc_strfree(xmlrpcPart);
-+        }
-+    }
-+}
-+
-+
-+
-+static void
-+addAuthorizationHeader(xmlrpc_env *         const envP,
-+                       struct curl_slist ** const headerListP,
-+                       const char *         const hdrValue) {
-+
-+    const char * authorizationHeader;
-+            
-+    xmlrpc_asprintf(&authorizationHeader, "Authorization: %s", hdrValue);
-+    
-+    if (xmlrpc_strnomem(authorizationHeader))
-+        xmlrpc_faultf(envP, "Couldn't allocate memory for "
-+                      "Authorization header");
-+    else {
-+        addHeader(envP, headerListP, authorizationHeader);
-+        
-+        xmlrpc_strfree(authorizationHeader);
-+    }
-+}
-+
-+
-+
-+/*
-+  In HTTP 1.1, the client can send the header "Expect: 100-continue", which
-+  tells the server that the client isn't going to send the body until the
-+  server tells it to by sending a "continue" response (HTTP response code 100).
-+  The server is obligated to send that response.
-+
-+  However, many servers are broken and don't send the Continue response.
-+
-+  Early libcurl did not send the Expect: header, thus worked fine with such
-+  broken servers.  But as of ca. 2007, libcurl sends the Expect:, and waits
-+  for the response, when the body is large.  It gives up after 3 seconds and
-+  sends the body anyway.
-+
-+  To accomodate the broken servers and for backward compatibility, we always
-+  force libcurl not to send the Expect and consequently not to wait for the
-+  response, using the hackish (but according to libcurl design) method of
-+  including an entry in our explicit header list that is an Expect: header
-+  with an empty argument.  This causes libcurl not to send any Expect: header.
-+  This is since 1.19; we may find there are also servers and/or libcurl levels
-+  that can't work with that.
-+
-+  We may find a case where the Expect/Continue protocol is desirable.  If we
-+  do, we should add a transport option to request the function and let libcurl
-+  do its thing when the user requests it.
-+
-+  The purpose of Expect/Continue is to save the client the trouble of
-+  generating and/or sending the body when the server is just going to reject
-+  the transaction based on the headers -- like maybe because the body is
-+  too big.
-+*/
-+
-+
-+static void
-+addExpectHeader(xmlrpc_env *         const envP,
-+                struct curl_slist ** const headerListP) {
-+
-+    addHeader(envP, headerListP, "Expect:");
-+        /* Don't send Expect header.  See explanation above. */
-+}
-+
-+
-+
-+static void
-+createCurlHeaderList(xmlrpc_env *               const envP,
-+                     const char *               const authHdrValue,
-+                     bool                       const dontAdvertise,
-+                     const char *               const userAgent,
-+                     struct curl_slist **       const headerListP) {
-+
-+    struct curl_slist * headerList;
-+
-+    headerList = NULL;  /* initial value - empty list */
-+
-+    addContentTypeHeader(envP, &headerList);
-+    if (!envP->fault_occurred) {
-+        addUserAgentHeader(envP, &headerList, !dontAdvertise, userAgent);
-+        if (!envP->fault_occurred) {
-+            if (authHdrValue)
-+                addAuthorizationHeader(envP, &headerList, authHdrValue);
-+        }
-+        if (!envP->fault_occurred)
-+            addExpectHeader(envP, &headerList);
-+    }
-+    if (envP->fault_occurred)
-+        curl_slist_free_all(headerList);
-+
-+    *headerListP = headerList;
-+}
-+
-+
-+
-+static size_t 
-+collect(void *  const ptr, 
-+        size_t  const size, 
-+        size_t  const nmemb,  
-+        FILE  * const stream) {
-+/*----------------------------------------------------------------------------
-+   This is a Curl output function.  Curl calls this to deliver the
-+   HTTP response body to the Curl client.  Curl thinks it's writing to
-+   a POSIX stream.
-+-----------------------------------------------------------------------------*/
-+    xmlrpc_mem_block * const responseXmlP = (xmlrpc_mem_block *) stream;
-+    char * const buffer = ptr;
-+    size_t const length = nmemb * size;
-+
-+    size_t retval;
-+    xmlrpc_env env;
-+
-+    xmlrpc_env_init(&env);
-+    xmlrpc_mem_block_append(&env, responseXmlP, buffer, length);
-+    if (env.fault_occurred)
-+        retval = (size_t)-1;
-+    else
-+        /* Really?  Shouldn't it be like fread() and return 'nmemb'? */
-+        retval = length;
-+    
-+    return retval;
-+}
-+
-+
-+
-+static int
-+curlProgress(void * const contextP,
-+             double const dltotal,
-+             double const dlnow,
-+             double const ultotal,
-+             double const ulnow) {
-+/*----------------------------------------------------------------------------
-+   This is a Curl "progress function."  It's something various Curl functions
-+   call every so often, including whenever something gets interrupted by the
-+   process receiving, and catching, a signal.  There are two purposes of a
-+   Curl progress function: 1) lets us log the progress of a long-running
-+   transaction such as a big download, e.g. by displaying a progress bar
-+   somewhere.  2) allows us to tell the Curl function, via our return code,
-+   that calls it that we don't want to wait anymore for the operation to
-+   complete.
-+
-+   In Curl versions before March 2007, we get called once per second and
-+   signals have no effect.  In current Curl, we usually get called immediately
-+   after a signal gets caught while Curl is waiting to receive a response from
-+   the server.  But Curl doesn't properly synchronize with signals, so it may
-+   miss one and then we don't get called until the next scheduled
-+   one-per-second call.
-+
-+   All we do is pass the call through to the curlTransaction's progress
-+   function (the one that the creator of the curlTransaction registered).
-+
-+   This function is not as important as it once was for interrupting purposes.
-+   This module used to use curl_easy_perform(), which can be interrupted only
-+   via this progress function.  But because of the above-mentioned failure of
-+   Curl to properly synchronize signals (and Bryan's failure to get Curl
-+   developers to accept code to fix it), we now use the Curl "multi" facility
-+   instead and do our own pselect().  But This function still normally gets
-+   called by curl_multi_perform(), which the transport tries to call even when
-+   the user has requested interruption, because we don't trust our ability to
-+   abort a running Curl transaction.  curl_multi_perform() reliably winds up a
-+   Curl transaction when this function tells it to.
-+-----------------------------------------------------------------------------*/
-+    curlTransaction * const curlTransactionP = contextP;
-+
-+    bool abort;
-+
-+    /* We require anyone setting us up as the Curl progress function to
-+       supply a progress function:
-+    */
-+    assert(curlTransactionP);
-+    assert(curlTransactionP->progress);
-+
-+    curlTransactionP->progress(curlTransactionP->userContextP,
-+                               dltotal, dlnow, ultotal, ulnow,
-+                               &abort);
-+
-+    return abort;
-+}
-+
-+
-+
-+static void
-+setupAuth(xmlrpc_env *               const envP ATTR_UNUSED,
-+          CURL *                     const curlSessionP,
-+          const xmlrpc_server_info * const serverInfoP,
-+          const char **              const authHdrValueP) {
-+/*----------------------------------------------------------------------------
-+   Set the options in the Curl session 'curlSessionP' to set up the HTTP
-+   authentication described by *serverInfoP.
-+
-+   But we have an odd special function for backward compatibility, because
-+   this code dates to a time when libcurl did not have the ability to
-+   handle authentication, but we provided such function nonetheless by
-+   building our own Authorization: header.  But we did this only for
-+   HTTP basic authentication.
-+
-+   So the special function is this: if libcurl is too old to have
-+   authorization options and *serverInfoP allows basic authentication,
-+   return as *basicAuthHdrParamP an appropriate parameter for the
-+   Authorization: Basic: HTTP header.  Otherwise, return
-+   *basicAuthHdrParamP == NULL.
-+-----------------------------------------------------------------------------*/
-+    if (serverInfoP->allowedAuth.basic) {
-+        CURLcode rc;
-+        rc = curl_easy_setopt(curlSessionP, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
-+
-+        if (rc == CURLE_OK)
-+            *authHdrValueP = NULL;
-+        else {
-+            *authHdrValueP = strdup(serverInfoP->basicAuthHdrValue);
-+            if (*authHdrValueP == NULL)
-+                xmlrpc_faultf(envP, "Unable to allocate memory for basic "
-+                              "authentication header");
-+        }
-+    } else
-+        *authHdrValueP = NULL;
-+
-+    /* We don't worry if libcurl is too old for these other kinds of
-+       authentication; they're only defined as _allowed_
-+       authentication methods, for when client and server are capable
-+       of using it, and unlike with basic authentication, we have no
-+       historical commitment to consider an old libcurl as capable of
-+       doing these.
-+    */
-+    
-+    if (serverInfoP->userNamePw)
-+        curl_easy_setopt(curlSessionP, CURLOPT_USERPWD,
-+                         serverInfoP->userNamePw);
-+
-+    if (serverInfoP->allowedAuth.digest)
-+        curl_easy_setopt(
-+            curlSessionP, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
-+    if (serverInfoP->allowedAuth.gssnegotiate)
-+        curl_easy_setopt(
-+            curlSessionP, CURLOPT_HTTPAUTH, CURLAUTH_GSSNEGOTIATE);
-+    if (serverInfoP->allowedAuth.ntlm)
-+        curl_easy_setopt(
-+            curlSessionP, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
-+}
-+
-+
-+static void
-+setCurlTimeout(CURL *       const curlSessionP ATTR_UNUSED,
-+               unsigned int const timeout ATTR_UNUSED) {
-+
-+#if HAVE_CURL_NOSIGNAL
-+    unsigned int const timeoutMs = (timeout + 999)/1000;
-+
-+    curl_easy_setopt(curlSessionP, CURLOPT_NOSIGNAL, 1);
-+
-+    assert((long)timeoutMs == (int)timeoutMs);
-+        /* Calling requirement */
-+    curl_easy_setopt(curlSessionP, CURLOPT_TIMEOUT, (long)timeoutMs);
-+#else
-+    abort();
-+#endif
-+}
-+
-+
-+
-+static void
-+assertConstantsMatch(void) {
-+/*----------------------------------------------------------------------------
-+   There are some constants that we define as part of the Xmlrpc-c
-+   interface that are identical to constants in the Curl interface to
-+   make curl option setting work.  This function asserts such
-+   formally.
-+-----------------------------------------------------------------------------*/
-+    assert(XMLRPC_SSLVERSION_DEFAULT == CURL_SSLVERSION_DEFAULT);
-+    assert(XMLRPC_SSLVERSION_TLSv1   == CURL_SSLVERSION_TLSv1  );
-+    assert(XMLRPC_SSLVERSION_SSLv2   == CURL_SSLVERSION_SSLv2  );
-+    assert(XMLRPC_SSLVERSION_SSLv3   == CURL_SSLVERSION_SSLv3  );
-+
-+    assert(XMLRPC_HTTPAUTH_BASIC        == CURLAUTH_BASIC       );
-+    assert(XMLRPC_HTTPAUTH_DIGEST       == CURLAUTH_DIGEST      );
-+    assert(XMLRPC_HTTPAUTH_GSSNEGOTIATE == CURLAUTH_GSSNEGOTIATE);
-+    assert(XMLRPC_HTTPAUTH_NTLM         == CURLAUTH_NTLM        );
-+
-+    assert(XMLRPC_HTTPPROXY_HTTP   == CURLPROXY_HTTP   );
-+    assert(XMLRPC_HTTPPROXY_SOCKS5 == CURLPROXY_SOCKS5 );
-+}
-+
-+
-+
-+static void
-+setupCurlSession(xmlrpc_env *               const envP,
-+                 curlTransaction *          const curlTransactionP,
-+                 xmlrpc_mem_block *         const callXmlP,
-+                 xmlrpc_mem_block *         const responseXmlP,
-+                 const xmlrpc_server_info * const serverInfoP,
-+                 bool                       const dontAdvertise,
-+                 const char *               const userAgent,
-+                 const struct curlSetup *   const curlSetupP) {
-+/*----------------------------------------------------------------------------
-+   Set up the Curl session for the transaction *curlTransactionP so that
-+   a subsequent curl_easy_perform() would perform said transaction.
-+
-+   The data curl_easy_perform() would send for that transaction would 
-+   be the contents of *callXmlP; the data curl_easy_perform() gets back
-+   would go into *responseXmlP.
-+
-+   *serverInfoP tells what sort of authentication to set up.  This is
-+   an embarassment, as the xmlrpc_server_info type is part of the
-+   Xmlrpc-c interface.  Some day, we need to replace this with a type
-+   (probably identical) not tied to Xmlrpc-c.
-+-----------------------------------------------------------------------------*/
-+    CURL * const curlSessionP = curlTransactionP->curlSessionP;
-+
-+    assertConstantsMatch();
-+
-+    /* A Curl session is serial -- it processes zero or one transaction
-+       at a time.  We use the "private" attribute of the Curl session to
-+       indicate which transaction it is presently processing.  This is
-+       important when the transaction finishes, because libcurl will just
-+       tell us that something finished on a particular session, not that
-+       a particular transaction finished.
-+    */
-+
-+    /* It is out policy to do a libcurl call only where necessary, I.e.  not
-+       to set what is the default anyhow.  The reduction in calls may save
-+       some time, but mostly, it will save us encountering rare bugs or
-+       suffering from backward incompatibilities in future libcurl.  I.e. we
-+       don't exercise any more of libcurl than we have to.
-+    */
-+
-+    curl_easy_setopt(curlSessionP, CURLOPT_PRIVATE, curlTransactionP);
-+
-+    curl_easy_setopt(curlSessionP, CURLOPT_POST, 1);
-+    curl_easy_setopt(curlSessionP, CURLOPT_URL, curlTransactionP->serverUrl);
-+
-+    XMLRPC_MEMBLOCK_APPEND(char, envP, callXmlP, "\0", 1);
-+    if (!envP->fault_occurred) {
-+        curl_easy_setopt(curlSessionP, CURLOPT_POSTFIELDS, 
-+                         XMLRPC_MEMBLOCK_CONTENTS(char, callXmlP));
-+        curl_easy_setopt(curlSessionP, CURLOPT_WRITEFUNCTION, collect);
-+        curl_easy_setopt(curlSessionP, CURLOPT_FILE, responseXmlP);
-+        curl_easy_setopt(curlSessionP, CURLOPT_HEADER, 0);
-+        curl_easy_setopt(curlSessionP, CURLOPT_ERRORBUFFER, 
-+                         curlTransactionP->curlError);
-+        if (curlTransactionP->progress) {
-+            curl_easy_setopt(curlSessionP, CURLOPT_NOPROGRESS, 0);
-+            curl_easy_setopt(curlSessionP, CURLOPT_PROGRESSFUNCTION,
-+                             curlProgress);
-+            curl_easy_setopt(curlSessionP, CURLOPT_PROGRESSDATA,
-+                             curlTransactionP);
-+        } else
-+            curl_easy_setopt(curlSessionP, CURLOPT_NOPROGRESS, 1);
-+        
-+        curl_easy_setopt(curlSessionP, CURLOPT_SSL_VERIFYPEER,
-+                         curlSetupP->sslVerifyPeer);
-+        curl_easy_setopt(curlSessionP, CURLOPT_SSL_VERIFYHOST,
-+                         curlSetupP->sslVerifyHost ? 2 : 0);
-+
-+        if (curlSetupP->networkInterface)
-+            curl_easy_setopt(curlSessionP, CURLOPT_INTERFACE,
-+                             curlSetupP->networkInterface);
-+        if (curlSetupP->sslCert)
-+            curl_easy_setopt(curlSessionP, CURLOPT_SSLCERT,
-+                             curlSetupP->sslCert);
-+        if (curlSetupP->sslCertType)
-+            curl_easy_setopt(curlSessionP, CURLOPT_SSLCERTTYPE,
-+                             curlSetupP->sslCertType);
-+        if (curlSetupP->sslCertPasswd)
-+            curl_easy_setopt(curlSessionP, CURLOPT_SSLCERTPASSWD,
-+                             curlSetupP->sslCertPasswd);
-+        if (curlSetupP->sslKey)
-+            curl_easy_setopt(curlSessionP, CURLOPT_SSLKEY,
-+                             curlSetupP->sslKey);
-+        if (curlSetupP->sslKeyType)
-+            curl_easy_setopt(curlSessionP, CURLOPT_SSLKEYTYPE,
-+                             curlSetupP->sslKeyType);
-+        if (curlSetupP->sslKeyPasswd)
-+            curl_easy_setopt(curlSessionP, CURLOPT_SSLKEYPASSWD,
-+                             curlSetupP->sslKeyPasswd);
-+        if (curlSetupP->sslEngine)
-+            curl_easy_setopt(curlSessionP, CURLOPT_SSLENGINE,
-+                             curlSetupP->sslEngine);
-+        if (curlSetupP->sslEngineDefault)
-+            /* 3rd argument seems to be required by some Curl */
-+            curl_easy_setopt(curlSessionP, CURLOPT_SSLENGINE_DEFAULT, 1l);
-+        if (curlSetupP->sslVersion != XMLRPC_SSLVERSION_DEFAULT)
-+            curl_easy_setopt(curlSessionP, CURLOPT_SSLVERSION,
-+                             curlSetupP->sslVersion);
-+        if (curlSetupP->caInfo)
-+            curl_easy_setopt(curlSessionP, CURLOPT_CAINFO,
-+                             curlSetupP->caInfo);
-+        if (curlSetupP->caPath)
-+            curl_easy_setopt(curlSessionP, CURLOPT_CAPATH,
-+                             curlSetupP->caPath);
-+        if (curlSetupP->randomFile)
-+            curl_easy_setopt(curlSessionP, CURLOPT_RANDOM_FILE,
-+                             curlSetupP->randomFile);
-+        if (curlSetupP->egdSocket)
-+            curl_easy_setopt(curlSessionP, CURLOPT_EGDSOCKET,
-+                             curlSetupP->egdSocket);
-+        if (curlSetupP->sslCipherList)
-+            curl_easy_setopt(curlSessionP, CURLOPT_SSL_CIPHER_LIST,
-+                             curlSetupP->sslCipherList);
-+
-+        if (curlSetupP->proxy)
-+            curl_easy_setopt(curlSessionP, CURLOPT_PROXY, curlSetupP->proxy);
-+        if (curlSetupP->proxyAuth != CURLAUTH_BASIC)
-+            /* Note that the Xmlrpc-c default and the Curl default are
-+               different.  Xmlrpc-c is none, while Curl is basic.  One reason
-+               for this is that it makes our extensible parameter list scheme,
-+               wherein zero always means default, easier.
-+            */
-+            curl_easy_setopt(curlSessionP, CURLOPT_PROXYAUTH,
-+                             curlSetupP->proxyAuth);
-+        if (curlSetupP->proxyPort)
-+            curl_easy_setopt(curlSessionP, CURLOPT_PROXYPORT,
-+                             curlSetupP->proxyPort);
-+        if (curlSetupP->proxyUserPwd)
-+            curl_easy_setopt(curlSessionP, CURLOPT_PROXYUSERPWD,
-+                             curlSetupP->proxyUserPwd);
-+        if (curlSetupP->proxyType)
-+            curl_easy_setopt(curlSessionP, CURLOPT_PROXYTYPE,
-+                             curlSetupP->proxyType);
-+
-+        if (curlSetupP->verbose)
-+            curl_easy_setopt(curlSessionP, CURLOPT_VERBOSE, 1l);
-+
-+        if (curlSetupP->timeout)
-+            setCurlTimeout(curlSessionP, curlSetupP->timeout);
-+
-+        {
-+            const char * authHdrValue;
-+                /* NULL means we don't have to construct an explicit
-+                   Authorization: header.  non-null means we have to
-+                   construct one with this as its value.
-+                */
-+
-+            setupAuth(envP, curlSessionP, serverInfoP, &authHdrValue);
-+            if (!envP->fault_occurred) {
-+                struct curl_slist * headerList;
-+                createCurlHeaderList(envP, authHdrValue,
-+                                     dontAdvertise, userAgent,
-+                                     &headerList);
-+                if (!envP->fault_occurred) {
-+                    curl_easy_setopt(
-+                        curlSessionP, CURLOPT_HTTPHEADER, headerList);
-+                    curlTransactionP->headerList = headerList;
-+                }
-+                if (authHdrValue)
-+                    xmlrpc_strfree(authHdrValue);
-+            }
-+        }
-+    }
-+}
-+
-+
-+
-+void
-+curlTransaction_create(xmlrpc_env *               const envP,
-+                       CURL *                     const curlSessionP,
-+                       const xmlrpc_server_info * const serverP,
-+                       xmlrpc_mem_block *         const callXmlP,
-+                       xmlrpc_mem_block *         const responseXmlP,
-+                       bool                       const dontAdvertise,
-+                       const char *               const userAgent,
-+                       const struct curlSetup *   const curlSetupStuffP,
-+                       void *                     const userContextP,
-+                       curlt_finishFn *           const finish,
-+                       curlt_progressFn *         const progress,
-+                       curlTransaction **         const curlTransactionPP) {
-+
-+    curlTransaction * curlTransactionP;
-+
-+    MALLOCVAR(curlTransactionP);
-+    if (curlTransactionP == NULL)
-+        xmlrpc_faultf(envP, "No memory to create Curl transaction.");
-+    else {
-+        curlTransactionP->finish       = finish;
-+        curlTransactionP->curlSessionP = curlSessionP;
-+        curlTransactionP->userContextP = userContextP;
-+        curlTransactionP->progress     = progress;
-+
-+        curlTransactionP->serverUrl = strdup(serverP->serverUrl);
-+        if (curlTransactionP->serverUrl == NULL)
-+            xmlrpc_faultf(envP, "Out of memory to store server URL.");
-+        else {
-+            setupCurlSession(envP, curlTransactionP,
-+                             callXmlP, responseXmlP,
-+                             serverP, dontAdvertise, userAgent,
-+                             curlSetupStuffP);
-+            
-+            if (envP->fault_occurred)
-+                xmlrpc_strfree(curlTransactionP->serverUrl);
-+        }
-+        if (envP->fault_occurred)
-+            free(curlTransactionP);
-+    }
-+    *curlTransactionPP = curlTransactionP;
-+}
-+
-+
-+
-+void
-+curlTransaction_destroy(curlTransaction * const curlTransactionP) {
-+
-+    curl_slist_free_all(curlTransactionP->headerList);
-+    xmlrpc_strfree(curlTransactionP->serverUrl);
-+
-+    free(curlTransactionP);
-+}
-+
-+
-+
-+static void
-+interpretCurlEasyError(const char ** const descriptionP,
-+                       CURLcode      const code) {
-+
-+#if HAVE_CURL_STRERROR
-+    *descriptionP = strdup(curl_easy_strerror(code));
-+#else
-+    xmlrpc_asprintf(descriptionP, "Curl error code (CURLcode) %d", code);
-+#endif
-+}
-+
-+
-+
-+void
-+curlTransaction_getError(curlTransaction * const curlTransactionP,
-+                         xmlrpc_env *      const envP) {
-+
-+    if (curlTransactionP->result != CURLE_OK) {
-+        /* We've seen Curl just return a null string for an explanation
-+           (e.g. when TCP connect() fails because IP address doesn't exist).
-+        */
-+        const char * explanation;
-+
-+        if (strlen(curlTransactionP->curlError) == 0)
-+            interpretCurlEasyError(&explanation, curlTransactionP->result);
-+        else
-+            xmlrpc_asprintf(&explanation, "%s", curlTransactionP->curlError);
-+
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_NETWORK_ERROR, "libcurl failed to execute the "
-+            "HTTP POST transaction, explaining:  %s", explanation);
-+
-+        xmlrpc_strfree(explanation);
-+    } else {
-+        CURLcode res;
-+        long http_result;
-+        
-+        res = curl_easy_getinfo(curlTransactionP->curlSessionP,
-+                                CURLINFO_HTTP_CODE, &http_result);
-+    
-+        if (res != CURLE_OK)
-+            xmlrpc_env_set_fault_formatted(
-+                envP, XMLRPC_INTERNAL_ERROR, 
-+                "Curl performed the HTTP POST request, but was "
-+                "unable to say what the HTTP result code was.  "
-+                "curl_easy_getinfo(CURLINFO_HTTP_CODE) says: %s", 
-+                curlTransactionP->curlError);
-+        else {
-+            if (http_result != 200)
-+                xmlrpc_env_set_fault_formatted(
-+                    envP, XMLRPC_NETWORK_ERROR,
-+                    "HTTP response code is %ld, not 200",
-+                    http_result);
-+        }
-+    }
-+}
-+
-+
-+
-+void
-+curlTransaction_finish(xmlrpc_env *      const envP,
-+                       curlTransaction * const curlTransactionP,
-+                       CURLcode          const result) {
-+
-+    curlTransactionP->result = result;
-+
-+    if (curlTransactionP->finish)
-+        curlTransactionP->finish(envP, curlTransactionP->userContextP);
-+}
-+
-+
-+
-+CURL *
-+curlTransaction_curlSession(curlTransaction * const curlTransactionP) {
-+
-+    return curlTransactionP->curlSessionP;
-+
-+}
-diff --git a/libs/xmlrpc-c/lib/curl_transport/curltransaction.h b/libs/xmlrpc-c/lib/curl_transport/curltransaction.h
-new file mode 100644
-index 0000000..4edc365
---- /dev/null
-+++ b/libs/xmlrpc-c/lib/curl_transport/curltransaction.h
-@@ -0,0 +1,120 @@
-+#ifndef CURLTRANSACTION_H_INCLUDED
-+#define CURLTRANSACTION_H_INCLUDED
-+
-+#include "bool.h"
-+#include "xmlrpc-c/util.h"
-+#include "xmlrpc-c/client.h"
-+#include <curl/curl.h>
-+
-+typedef struct curlTransaction curlTransaction;
-+
-+typedef void curlt_finishFn(xmlrpc_env * const, void * const);
-+typedef void curlt_progressFn(
-+    void * const, double const, double const, double const, double const,
-+    bool * const);
-+
-+struct curlSetup {
-+
-+    /* This is all client transport properties that are implemented as
-+       simple Curl session properties (i.e. the transport basically just
-+       passes them through to Curl without looking at them).
-+
-+       People occasionally want to replace all this with something where
-+       the Xmlrpc-c user simply does the curl_easy_setopt() call and this
-+       code need not know about all these options.  Unfortunately, that's
-+       a significant modularity violation.  Either the Xmlrpc-c user
-+       controls the Curl object or he doesn't.  If he does, then he
-+       shouldn't use libxmlrpc_client -- he should just copy some of this
-+       code into his own program.  If he doesn't, then he should never see
-+       the Curl library.
-+
-+       Speaking of modularity: the only reason this is a separate struct
-+       is to make the code easier to manage.  Ideally, the fact that these
-+       particular properties of the transport are implemented by simple
-+       Curl session setup would be known only at the lowest level code
-+       that does that setup.
-+    */
-+
-+    const char * networkInterface;
-+        /* This identifies the network interface on the local side to
-+           use for the session.  It is an ASCIIZ string in the form
-+           that the Curl recognizes for setting its CURLOPT_INTERFACE
-+           option (also the --interface option of the Curl program).
-+           E.g. "9.1.72.189" or "giraffe-data.com" or "eth0".  
-+
-+           It isn't necessarily valid, but it does have a terminating NUL.
-+
-+           NULL means we have no preference.
-+        */
-+    bool sslVerifyPeer;
-+        /* In an SSL connection, we should authenticate the server's SSL
-+           certificate -- refuse to talk to him if it isn't authentic.
-+           This is equivalent to Curl's CURLOPT_SSL_VERIFY_PEER option.
-+        */
-+    bool sslVerifyHost;
-+        /* In an SSL connection, we should verify that the server's
-+           certificate (independently of whether the certificate is
-+           authentic) indicates the host name that is in the URL we
-+           are using for the server.
-+        */
-+
-+    const char * sslCert;
-+    const char * sslCertType;
-+    const char * sslCertPasswd;
-+    const char * sslKey;
-+    const char * sslKeyType;
-+    const char * sslKeyPasswd;
-+    const char * sslEngine;
-+    bool         sslEngineDefault;
-+    unsigned int sslVersion;
-+    const char * caInfo;
-+    const char * caPath;
-+    const char * randomFile;
-+    const char * egdSocket;
-+    const char * sslCipherList;
-+
-+    const char * proxy;
-+    unsigned int proxyPort;
-+    unsigned int proxyAuth;
-+        /* e.g. CURLAUTH_BASIC, CURLAUTH_NTLM, ... */
-+    const char * proxyUserPwd;
-+    unsigned int proxyType;
-+        /* see enum curl_proxytype: CURLPROXY_HTTP, CURLPROXY_SOCKS4, ... */
-+
-+    unsigned int timeout;
-+        /* 0 = no Curl timeout.  This is in milliseconds. */
-+
-+    bool verbose;
-+};
-+
-+
-+void
-+curlTransaction_create(xmlrpc_env *               const envP,
-+                       CURL *                     const curlSessionP,
-+                       const xmlrpc_server_info * const serverP,
-+                       xmlrpc_mem_block *         const callXmlP,
-+                       xmlrpc_mem_block *         const responseXmlP,
-+                       bool                       const dontAdvertise,
-+                       const char *               const userAgent,
-+                       const struct curlSetup *   const curlSetupStuffP,
-+                       void *                     const userContextP,
-+                       curlt_finishFn *           const finish,
-+                       curlt_progressFn *         const progress,
-+                       curlTransaction **         const curlTransactionPP);
-+
-+void
-+curlTransaction_destroy(curlTransaction * const curlTransactionP);
-+
-+void
-+curlTransaction_finish(xmlrpc_env *      const envP,
-+                       curlTransaction * const curlTransactionP,
-+                       CURLcode          const result);
-+
-+void
-+curlTransaction_getError(curlTransaction * const curlTransactionP,
-+                         xmlrpc_env *      const envP);
-+
-+CURL *
-+curlTransaction_curlSession(curlTransaction * const curlTransactionP);
-+
-+#endif
-diff --git a/libs/xmlrpc-c/lib/curl_transport/curlversion.h b/libs/xmlrpc-c/lib/curl_transport/curlversion.h
-new file mode 100644
-index 0000000..71c5a68
---- /dev/null
-+++ b/libs/xmlrpc-c/lib/curl_transport/curlversion.h
-@@ -0,0 +1,20 @@
-+#ifndef CURLVERSION_H_INCLUDED
-+#define CURLVERSION_H_INCLUDED
-+
-+#define CMAJOR LIBCURL_VERSION_MAJOR
-+#define CMINOR LIBCURL_VERSION_MINOR
-+#if CMAJOR > 7 || (CMAJOR == 7 && CMINOR >= 10)
-+  #define HAVE_CURL_NOSIGNAL 1
-+#else
-+  #define HAVE_CURL_NOSIGNAL 0
-+#endif
-+#if CMAJOR > 7 || (CMAJOR == 7 && CMINOR >= 12)
-+  #define HAVE_CURL_STRERROR 1
-+#else
-+  #define HAVE_CURL_STRERROR 0
-+#endif
-+
-+#undef CMAJOR
-+#undef CMINOR
-+
-+#endif
-diff --git a/libs/xmlrpc-c/lib/curl_transport/lock.h b/libs/xmlrpc-c/lib/curl_transport/lock.h
-new file mode 100644
-index 0000000..bb7ce42
---- /dev/null
-+++ b/libs/xmlrpc-c/lib/curl_transport/lock.h
-@@ -0,0 +1,24 @@
-+#ifndef CURL_LOCK_H_INCLUDED
-+#define CURL_LOCK_H_INCLUDED
-+
-+#include <pthread.h>
-+
-+typedef struct lock lock;
-+
-+typedef void lockAcquireFn(lock *);
-+typedef void lockReleaseFn(lock *);
-+typedef void lockDestroyFn(lock *);
-+
-+struct lock {
-+    /* To finish the job of making an abstract lock class that can use locks
-+       other than pthread mutexes, we need to replace 'theLock' with a
-+       "void * implementationP" and make curlLock_create_pthread() malloc
-+       the mutex.
-+    */
-+    pthread_mutex_t theLock;
-+    lockAcquireFn * acquire;
-+    lockReleaseFn * release;
-+    lockDestroyFn * destroy;
-+};
-+
-+#endif
-diff --git a/libs/xmlrpc-c/lib/curl_transport/lock_pthread.c b/libs/xmlrpc-c/lib/curl_transport/lock_pthread.c
-new file mode 100644
-index 0000000..24b029e
---- /dev/null
-+++ b/libs/xmlrpc-c/lib/curl_transport/lock_pthread.c
-@@ -0,0 +1,49 @@
-+#include <stdlib.h>
-+
-+#include "mallocvar.h"
-+#include "pthreadx.h"
-+
-+#include "lock.h"
-+
-+#include "lock_pthread.h"
-+
-+static lockAcquireFn acquire;
-+
-+static void
-+acquire(struct lock * const lockP) {
-+    pthread_mutex_lock(&lockP->theLock);
-+}
-+
-+
-+
-+static lockReleaseFn release;
-+
-+static void
-+release(struct lock * const lockP) {
-+    pthread_mutex_unlock(&lockP->theLock);
-+}
-+
-+
-+
-+static lockDestroyFn destroy;
-+
-+static void
-+destroy(struct lock * const lockP) {
-+    pthread_mutex_destroy(&lockP->theLock);
-+    free(lockP);
-+}
-+
-+
-+
-+struct lock *
-+curlLock_create_pthread(void) {
-+    struct lock * lockP;
-+    MALLOCVAR(lockP);
-+    if (lockP) {
-+        pthread_mutex_init(&lockP->theLock, NULL);
-+        lockP->acquire = &acquire;
-+        lockP->release = &release;
-+        lockP->destroy = &destroy;
-+    }
-+    return lockP;
-+}
-diff --git a/libs/xmlrpc-c/lib/curl_transport/lock_pthread.h b/libs/xmlrpc-c/lib/curl_transport/lock_pthread.h
-new file mode 100644
-index 0000000..49ffa51
---- /dev/null
-+++ b/libs/xmlrpc-c/lib/curl_transport/lock_pthread.h
-@@ -0,0 +1,9 @@
-+#ifndef CURL_LOCK_PTHREAD_H_INCLUDED
-+#define CURL_LOCK_PTHREAD_H_INCLUDED
-+
-+#include "lock.h"
-+
-+lock *
-+curlLock_create_pthread(void);
-+
-+#endif
-diff --git a/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.c b/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.c
-index 29104b9..fe705b9 100644
---- a/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.c
-+++ b/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.c
-@@ -52,6 +52,8 @@
-    such subordinate libraries as OpenSSL and Winsock.
- -----------------------------------------------------------------------------*/
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
-+
- #include "xmlrpc_config.h"
- #include <string.h>
-@@ -59,7 +61,7 @@
- #include <errno.h>
- #include <assert.h>
- #include <limits.h>
--#if !MSVCRT
-+#if HAVE_SYS_SELECT_H
- #include <sys/select.h>
- #endif
- #include <signal.h>
-@@ -75,18 +77,24 @@
- #include "girstring.h"
- #include "pthreadx.h"
-+#include "xmlrpc-c/util.h"
- #include "xmlrpc-c/string_int.h"
- #include "xmlrpc-c/select_int.h"
- #include "xmlrpc-c/client_int.h"
- #include "xmlrpc-c/transport.h"
- #include "xmlrpc-c/time_int.h"
--#include "version.h"
- #include <curl/curl.h>
- #include <curl/types.h>
- #include <curl/easy.h>
- #include <curl/multi.h>
-+#include "lock.h"
-+#include "lock_pthread.h"
-+#include "curltransaction.h"
-+#include "curlmulti.h"
-+#include "curlversion.h"
-+
- #if MSVCRT
- #if defined(_DEBUG)
- #  include <crtdbg.h>
-@@ -98,92 +106,8 @@
- #endif
--#define CMAJOR LIBCURL_VERSION_MAJOR
--#define CMINOR LIBCURL_VERSION_MINOR
--#if CMAJOR > 7 || (CMAJOR == 7 && CMINOR >= 10)
--  #define HAVE_CURL_NOSIGNAL 1
--#else
--  #define HAVE_CURL_NOSIGNAL 0
--#endif
--#if CMAJOR > 7 || (CMAJOR == 7 && CMINOR >= 12)
--  #define HAVE_CURL_STRERROR 1
--#else
--  #define HAVE_CURL_STRERROR 0
--#endif
--
--#undef CMAJOR
--#undef CMINOR
--
--
--
- typedef struct rpc rpc;
--typedef struct curlTransaction curlTransaction;
--
--
--
--struct curlSetup {
--
--    /* This is all client transport properties that are implemented as
--       simple Curl session properties (i.e. the transport basically just
--       passes them through to Curl without looking at them).
--
--       People occasionally want to replace all this with something where
--       the Xmlrpc-c user simply does the curl_easy_setopt() call and this
--       code need not know about all these options.  Unfortunately, that's
--       a significant modularity violation.  Either the Xmlrpc-c user
--       controls the Curl object or he doesn't.  If he does, then he
--       shouldn't use libxmlrpc_client -- he should just copy some of this
--       code into his own program.  If he doesn't, then he should never see
--       the Curl library.
--
--       Speaking of modularity: the only reason this is a separate struct
--       is to make the code easier to manage.  Ideally, the fact that these
--       particular properties of the transport are implemented by simple
--       Curl session setup would be known only at the lowest level code
--       that does that setup.
--    */
--
--    const char * networkInterface;
--        /* This identifies the network interface on the local side to
--           use for the session.  It is an ASCIIZ string in the form
--           that the Curl recognizes for setting its CURLOPT_INTERFACE
--           option (also the --interface option of the Curl program).
--           E.g. "9.1.72.189" or "giraffe-data.com" or "eth0".  
--
--           It isn't necessarily valid, but it does have a terminating NUL.
--
--           NULL means we have no preference.
--        */
--    xmlrpc_bool sslVerifyPeer;
--        /* In an SSL connection, we should authenticate the server's SSL
--           certificate -- refuse to talk to him if it isn't authentic.
--           This is equivalent to Curl's CURLOPT_SSL_VERIFY_PEER option.
--        */
--    xmlrpc_bool sslVerifyHost;
--        /* In an SSL connection, we should verify that the server's
--           certificate (independently of whether the certificate is
--           authentic) indicates the host name that is in the URL we
--           are using for the server.
--        */
--
--    const char * sslCert;
--    const char * sslCertType;
--    const char * sslCertPasswd;
--    const char * sslKey;
--    const char * sslKeyType;
--    const char * sslKeyPasswd;
--    const char * sslEngine;
--    bool         sslEngineDefault;
--    unsigned int sslVersion;
--    const char * caInfo;
--    const char * caPath;
--    const char * randomFile;
--    const char * egdSocket;
--    const char * sslCipherList;
--    unsigned int timeout;
--        /* 0 = no Curl timeout.  This is in milliseconds. */
--};
- static int
-@@ -239,939 +163,248 @@ addMilliseconds(xmlrpc_timespec   const addend,
--/*============================================================================
--      locks
--==============================================================================
--   This is the beginnings of a lock abstraction that will allow this
--   transport to be used with locks other than pthread locks
--============================================================================*/
--
--struct lock {
--    pthread_mutex_t theLock;
--    void (*lock)(struct lock *);
--    void (*unlock)(struct lock *);
--    void (*destroy)(struct lock *);
--};
--
--typedef struct lock lock;
-+struct xmlrpc_client_transport {
-+    CURL * syncCurlSessionP;
-+        /* Handle for a Curl library session object that we use for
-+           all synchronous RPCs.  An async RPC has one of its own,
-+           and consequently does not share things such as persistent
-+           connections and cookies with any other RPC.
-+        */
-+    lock * syncCurlSessionLockP;
-+        /* Hold this lock while accessing or using *syncCurlSessionP.
-+           You're using the session from the time you set any
-+           attributes in it or start a transaction with it until any
-+           transaction has finished and you've lost interest in any
-+           attributes of the session.
-+        */
-+    curlMulti * syncCurlMultiP;
-+        /* The Curl multi manager that this transport uses to execute
-+           Curl transactions for RPCs requested via the synchronous
-+           interface.  The fact that there is never more than one such
-+           transaction going at a time might make you wonder why a
-+           "multi" manager is needed.  The reason is that it is the only
-+           interface in libcurl that gives us the flexibility to execute
-+           the transaction with proper interruptibility.  The only Curl
-+           transaction ever attached to this multi manager is
-+           'syncCurlSessionP'.
-+           
-+           This is constant (the handle, not the object).
-+        */
-+    curlMulti * asyncCurlMultiP;
-+        /* The Curl multi manager that this transport uses to execute
-+           Curl transactions for RPCs requested via the asynchronous
-+           interface.  Note that there may be multiple such Curl transactions
-+           simultaneously and one can't wait for a particular one to finish;
-+           the collection of asynchronous RPCs are an indivisible mass.
-+           
-+           This is constant (the handle, not the object).
-+        */
-+    bool dontAdvertise;
-+        /* Don't identify to the server the XML-RPC engine we are using.  If
-+           false, include a User-Agent HTTP header in all requests that
-+           identifies the Xmlrpc-c and Curl libraries.
--static void
--lock_pthread(struct lock * const lockP) {
--    pthread_mutex_lock(&lockP->theLock);
--}
-+           See also 'userAgent'.
--static void
--unlock_pthread(struct lock * const lockP) {
--    pthread_mutex_unlock(&lockP->theLock);
--}
-+           This is constant.
-+        */
-+    const char * userAgent;
-+        /* Information to include in a User-Agent HTTP header, reflecting
-+           facilities outside of Xmlrpc-c.  
--static void
--destroyLock_pthread(struct lock * const lockP) {
--    pthread_mutex_destroy(&lockP->theLock);
--    free(lockP);
--}
-+           Null means none.
-+           The full User-Agent header value is this information (if
-+           'userAgent' is non-null) followed by identification of Xmlrpc-c
-+           and Curl (if 'dontAdvertise' is false).  If 'userAgent' is null
-+           and 'dontAdvertise' is true, we put no User-Agent header at all
-+           in the request.
--static struct lock *
--createLock_pthread(void) {
--    struct lock * lockP;
--    MALLOCVAR(lockP);
--    if (lockP) {
--        pthread_mutex_init(&lockP->theLock, NULL);
--        lockP->lock    = &lock_pthread;
--        lockP->unlock  = &unlock_pthread;
--        lockP->destroy = &destroyLock_pthread;
--    }
--    return lockP;
--}
-+           This is constant.
-+        */
-+    struct curlSetup curlSetupStuff;
-+        /* This is constant */
-+    int * interruptP;
-+        /* Pointer to a value that user sets to nonzero to indicate he wants
-+           the transport to give up on whatever it is doing and return ASAP.
-+           NULL means none -- transport never gives up.
-+           This is constant.
-+        */
-+};
--/*=============================================================================
--    curlTransaction
--=============================================================================*/
--typedef void finishCurlTransactionFn(xmlrpc_env * const, curlTransaction * const);
--struct curlTransaction {
--    /* This is all stuff that really ought to be in a Curl object, but
--       the Curl library is a little too simple for that.  So we build
--       a layer on top of Curl, and define this "transaction," as an
--       object subordinate to a Curl "session."  A Curl session has
--       zero or one transactions in progress.  The Curl session
--       "private data" is a pointer to the CurlTransaction object for
--       the current transaction.
--    */
-+struct rpc {
-+    struct xmlrpc_client_transport * transportP;
-+        /* The client XML transport that transports this RPC */
-+    curlTransaction * curlTransactionP;
-+        /* The object which does the HTTP transaction, with no knowledge
-+           of XML-RPC or Xmlrpc-c.
-+        */
-     CURL * curlSessionP;
--        /* Handle for the Curl session that hosts this transaction.
--           Note that only one transaction at a time can use a particular
--           Curl session, so this had better not be a session that some other
--           transaction is using simultaneously.
-+        /* The Curl session to use for the Curl transaction to perform
-+           the RPC.
-         */
--    finishCurlTransactionFn * finish;
--    rpc * rpcP;
--        /* The RPC which this transaction serves.  (If this structure
--           were a true extension of the Curl library as described above,
--           this would be a void *, since the Curl library doesn't know what
--           an RPC is, but since we use it only for that, we might as well
--           use the specific type here).
-+    xmlrpc_mem_block * responseXmlP;
-+        /* Where the response XML for this RPC should go or has gone. */
-+    xmlrpc_transport_asynch_complete complete;
-+        /* Routine to call to complete the RPC after it is complete HTTP-wise.
-+           NULL if none.
-         */
--    CURLcode result;
--        /* Result of the transaction (succeeded, TCP connect failed, etc.).
--           A properly executed HTTP transaction (request & response) counts
--           as a successful transaction.  When 'result' show success,
--           curl_easy_get_info() tells you whether the transaction succeeded
--           at the HTTP level.
-+    xmlrpc_transport_progress progress;
-+        /* Routine to call periodically to report the progress of transporting
-+           the call and response.  NULL if none.
-         */
--    char curlError[CURL_ERROR_SIZE];
--        /* Error message from Curl */
--    struct curl_slist * headerList;
--        /* The HTTP headers for the transaction */
--    const char * serverUrl;  /* malloc'ed - belongs to this object */
-+    struct xmlrpc_call_info * callInfoP;
-+        /* User's identifier for this RPC */
- };
--
- static void
--interpretCurlEasyError(const char ** const descriptionP,
--                       CURLcode      const code) {
--
--#if HAVE_CURL_STRERROR
--    *descriptionP = strdup(curl_easy_strerror(code));
--#else
--    xmlrpc_asprintf(descriptionP, "Curl error code (CURLcode) %d", code);
--#endif
-+lockSyncCurlSession(struct xmlrpc_client_transport * const transportP) {
-+    transportP->syncCurlSessionLockP->acquire(
-+        transportP->syncCurlSessionLockP);
- }
- static void
--interpretCurlMultiError(const char ** const descriptionP,
--                        CURLMcode     const code) {
--
--#if HAVE_CURL_STRERROR
--    *descriptionP = strdup(curl_multi_strerror(code));
--#else
--    xmlrpc_asprintf(descriptionP, "Curl error code (CURLMcode) %d", code);
--#endif
-+unlockSyncCurlSession(struct xmlrpc_client_transport * const transportP) {
-+    transportP->syncCurlSessionLockP->release(
-+        transportP->syncCurlSessionLockP);
- }
- static void
--addHeader(xmlrpc_env * const envP,
--          struct curl_slist ** const headerListP,
--          const char *         const headerText) {
--
--    struct curl_slist * newHeaderList;
--    newHeaderList = curl_slist_append(*headerListP, headerText);
--    if (newHeaderList == NULL)
--        xmlrpc_faultf(envP,
--                      "Could not add header '%s'.  "
--                      "curl_slist_append() failed.", headerText);
--    else
--        *headerListP = newHeaderList;
--}
--
--
-+initWindowsStuff(xmlrpc_env * const envP ATTR_UNUSED) {
--static void
--addContentTypeHeader(xmlrpc_env *         const envP,
--                     struct curl_slist ** const headerListP) {
-+#if defined (WIN32)
-+    /* This is CRITICAL so that cURL-Win32 works properly! */
-     
--    addHeader(envP, headerListP, "Content-Type: text/xml");
--}
--
--
--
--static void
--addUserAgentHeader(xmlrpc_env *         const envP,
--                   struct curl_slist ** const headerListP,
--                   const char *         const userAgent) {
--
--    if (userAgent) {
--        /* Note: Curl has a CURLOPT_USERAGENT option that does some of this
--           work.  We prefer to be totally in control, though, so we build
--           the header explicitly.
--        */
-+    /* So this commenter says, but I wonder why.  libcurl should do the
-+       required WSAStartup() itself, and it looks to me like it does.
-+       -Bryan 06.01.01
-+    */
-+    WORD wVersionRequested;
-+    WSADATA wsaData;
-+    int err;
-+    wVersionRequested = MAKEWORD(1, 1);
-     
--        curl_version_info_data * const curlInfoP =
--            curl_version_info(CURLVERSION_NOW);
--        char curlVersion[32];
--        const char * userAgentHeader;
--        
--        snprintf(curlVersion, sizeof(curlVersion), "%u.%u.%u",
--                (curlInfoP->version_num >> 16) && 0xff,
--                (curlInfoP->version_num >>  8) && 0xff,
--                (curlInfoP->version_num >>  0) && 0xff
--            );
--                  
--        xmlrpc_asprintf(&userAgentHeader,
--                        "User-Agent: %s Xmlrpc-c/%s Curl/%s",
--                        userAgent, XMLRPC_C_VERSION, curlVersion);
--        
--        if (userAgentHeader == xmlrpc_strsol)
--            xmlrpc_faultf(envP, "Couldn't allocate memory for "
--                          "User-Agent header");
--        else {
--            addHeader(envP, headerListP, userAgentHeader);
--            
--            xmlrpc_strfree(userAgentHeader);
-+    err = WSAStartup(wVersionRequested, &wsaData);
-+    if (err)
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_INTERNAL_ERROR,
-+            "Winsock startup failed.  WSAStartup returned rc %d", err);
-+    else {
-+        if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) {
-+            /* Tell the user that we couldn't find a useable */ 
-+            /* winsock.dll. */ 
-+            xmlrpc_env_set_fault_formatted(
-+                envP, XMLRPC_INTERNAL_ERROR, "Winsock reported that "
-+                "it does not implement the requested version 1.1.");
-         }
-+        if (envP->fault_occurred)
-+            WSACleanup();
-     }
-+#endif
- }
- static void
--addAuthorizationHeader(xmlrpc_env *         const envP,
--                       struct curl_slist ** const headerListP,
--                       const char *         const hdrValue) {
-+termWindowsStuff(void) {
--    const char * authorizationHeader;
--            
--    xmlrpc_asprintf(&authorizationHeader, "Authorization: %s", hdrValue);
--    
--    if (authorizationHeader == xmlrpc_strsol)
--        xmlrpc_faultf(envP, "Couldn't allocate memory for "
--                      "Authorization header");
--    else {
--        addHeader(envP, headerListP, authorizationHeader);
--        
--        xmlrpc_strfree(authorizationHeader);
--    }
-+#if defined (WIN32)
-+    WSACleanup();
-+#endif
- }
--static void
--createCurlHeaderList(xmlrpc_env *               const envP,
--                     const char *               const authHdrValue,
--                     const char *               const userAgent,
--                     struct curl_slist **       const headerListP) {
-+static bool
-+curlHasNosignal(void) {
--    struct curl_slist * headerList;
-+    bool retval;
--    headerList = NULL;  /* initial value - empty list */
-+#if HAVE_CURL_NOSIGNAL
-+    curl_version_info_data * const curlInfoP =
-+        curl_version_info(CURLVERSION_NOW);
--    addContentTypeHeader(envP, &headerList);
--    if (!envP->fault_occurred) {
--        addUserAgentHeader(envP, &headerList, userAgent);
--        if (!envP->fault_occurred) {
--            if (authHdrValue)
--                addAuthorizationHeader(envP, &headerList, authHdrValue);
--        }
--    }
--    if (envP->fault_occurred)
--        curl_slist_free_all(headerList);
--    else
--        *headerListP = headerList;
-+    retval = (curlInfoP->version_num >= 0x070A00);  /* 7.10.0 */
-+#else
-+    retval = false;
-+#endif
-+    return retval;
- }
--static void
--assertConstantsMatch(void) {
-+static xmlrpc_timespec
-+pselectTimeout(xmlrpc_timeoutType const timeoutType,
-+               xmlrpc_timespec    const timeoutDt) {
- /*----------------------------------------------------------------------------
--   There are some constants that we define as part of the Xmlrpc-c
--   interface that are identical to constants in the Curl interface to
--   make curl option setting work.  This function asserts such
--   formally.
-+   Return the value that should be used in the select() call to wait for
-+   there to be work for the Curl multi manager to do, given that the user
-+   wants to timeout according to 'timeoutType' and 'timeoutDt'.
- -----------------------------------------------------------------------------*/
--    assert(XMLRPC_SSLVERSION_DEFAULT == CURL_SSLVERSION_DEFAULT);
--    assert(XMLRPC_SSLVERSION_TLSv1   == CURL_SSLVERSION_TLSv1);
--    assert(XMLRPC_SSLVERSION_SSLv2   == CURL_SSLVERSION_SSLv2);
--    assert(XMLRPC_SSLVERSION_SSLv3   == CURL_SSLVERSION_SSLv3);
--}
--
-+    unsigned int const million = 1000000;
-+    unsigned int selectTimeoutMillisec;
-+    xmlrpc_timespec retval;
-+    /* We assume there is work to do at least every 3 seconds, because
-+       the Curl multi manager often has retries and other scheduled work
-+       that doesn't involve file handles on which we can select().
-+    */
-+    switch (timeoutType) {
-+    case timeout_no:
-+        selectTimeoutMillisec = 3000;
-+        break;
-+    case timeout_yes: {
-+        xmlrpc_timespec nowTime;
-+        int timeLeft;
--static size_t 
--collect(void *  const ptr, 
--        size_t  const size, 
--        size_t  const nmemb,  
--        FILE  * const stream) {
--/*----------------------------------------------------------------------------
--   This is a Curl output function.  Curl calls this to deliver the
--   HTTP response body to the Curl client.  Curl thinks it's writing to
--   a POSIX stream.
-------------------------------------------------------------------------------*/
--    xmlrpc_mem_block * const responseXmlP = (xmlrpc_mem_block *) stream;
--    char * const buffer = ptr;
--    size_t const length = nmemb * size;
-+        xmlrpc_gettimeofday(&nowTime);
-+        timeLeft = timeDiffMillisec(timeoutDt, nowTime);
--    size_t retval;
--    xmlrpc_env env;
-+        selectTimeoutMillisec = MIN(3000, MAX(0, timeLeft));
-+    } break;
-+    }
-+    retval.tv_sec = selectTimeoutMillisec / 1000;
-+    retval.tv_nsec = (uint32_t)((selectTimeoutMillisec % 1000) * million);
--    xmlrpc_env_init(&env);
--    xmlrpc_mem_block_append(&env, responseXmlP, buffer, length);
--    if (env.fault_occurred)
--        retval = (size_t)-1;
--    else
--        /* Really?  Shouldn't it be like fread() and return 'nmemb'? */
--        retval = length;
--    
-     return retval;
--}
--
--
--
--static int
--curlProgress(void * const contextP,
--             double const dltotal  ATTR_UNUSED,
--             double const dlnow    ATTR_UNUSED,
--             double const ultotal  ATTR_UNUSED,
--             double const ulnow    ATTR_UNUSED) {
--/*----------------------------------------------------------------------------
--   This is a Curl "progress function."  It's something various Curl
--   functions call every so often, including whenever something gets
--   interrupted by the process receiving, and catching, a signal.
--   There are two purposes of a Curl progress function: 1) lets us log
--   the progress of a long-running transaction such as a big download,
--   e.g. by displaying a progress bar somewhere.  In Xmlrpc-c, we don't
--   implement this purpose.  2) allows us to tell the Curl function,
--   via our return code, that calls it that we don't want to wait
--   anymore for the operation to complete.
--
--   In Curl versions before March 2007, we get called once per second
--   and signals have no effect.  In current Curl, we usually get called
--   immediately after a signal gets caught while Curl is waiting to
--   receive a response from the server.  But Curl doesn't properly
--   synchronize with signals, so it may miss one and then we don't get
--   called until the next scheduled one-per-second call.
--
--   All we do is tell Caller it's time to give up if the transport's
--   client says it is via his "interrupt" flag.
--
--   This function is not as important as it once was.  This module used
--   to use curl_easy_perform(), which can be interrupted only via this
--   progress function.  But because of the above-mentioned failure of
--   Curl to properly synchronize signals (and Bryan's failure to get
--   Curl developers to accept code to fix it), we now use the Curl
--   "multi" facility instead and do our own pselect().  But
--   This function still normally gets called by curl_multi_perform(),
--   which the transport tries to call even when the user has requested
--   interruption, because we don't trust our ability to abort a running
--   Curl transaction.  curl_multi_perform() reliably winds up a Curl
--   transaction when this function tells it to.
-------------------------------------------------------------------------------*/
--    unsigned int * const interruptP = contextP;
--
--    /* We require anyone setting us up as the Curl progress function to
--       supply an interrupt flag:
--    */
--    assert(contextP);
--
--    return *interruptP != 0 ? 1 : 0;
--}
-+}        
- static void
--setupAuth(xmlrpc_env *               const envP ATTR_UNUSED,
--          CURL *                     const curlSessionP,
--          const xmlrpc_server_info * const serverInfoP,
--          const char **              const authHdrValueP) {
--/*----------------------------------------------------------------------------
--   Set the options in the Curl session 'curlSessionP' to set up the HTTP
--   authentication described by *serverInfoP.
--
--   But we have an odd special function for backward compatibility, because
--   this code dates to a time when libcurl did not have the ability to
--   handle authentication, but we provided such function nonetheless by
--   building our own Authorization: header.  But we did this only for
--   HTTP basic authentication.
--
--   So the special function is this: if libcurl is too old to have
--   authorization options and *serverInfoP allows basic authentication,
--   return as *basicAuthHdrParamP an appropriate parameter for the
--   Authorization: Basic: HTTP header.  Otherwise, return
--   *basicAuthHdrParamP == NULL.
-------------------------------------------------------------------------------*/
--    if (serverInfoP->allowedAuth.basic) {
--        CURLcode rc;
--        rc = curl_easy_setopt(curlSessionP, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
-+processCurlMessages(xmlrpc_env * const envP,
-+                    curlMulti *  const curlMultiP) {
-+        
-+    bool endOfMessages;
--        if (rc == CURLE_OK)
--            *authHdrValueP = NULL;
--        else {
--            *authHdrValueP = strdup(serverInfoP->basicAuthHdrValue);
--            if (*authHdrValueP == NULL)
--                xmlrpc_faultf(envP, "Unable to allocate memory for basic "
--                              "authentication header");
--        }
--    } else
--        *authHdrValueP = NULL;
--
--    /* We don't worry if libcurl is too old for these other kinds of
--       authentication; they're only defined as _allowed_
--       authentication methods, for when client and server are capable
--       of using it, and unlike with basic authentication, we have no
--       historical commitment to consider an old libcurl as capable of
--       doing these.
--    */
--    
--    if (serverInfoP->userNamePw)
--        curl_easy_setopt(curlSessionP, CURLOPT_USERPWD,
--                         serverInfoP->userNamePw);
--
--    if (serverInfoP->allowedAuth.digest)
--        curl_easy_setopt(
--            curlSessionP, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
--    if (serverInfoP->allowedAuth.gssnegotiate)
--        curl_easy_setopt(
--            curlSessionP, CURLOPT_HTTPAUTH, CURLAUTH_GSSNEGOTIATE);
--    if (serverInfoP->allowedAuth.ntlm)
--        curl_easy_setopt(
--            curlSessionP, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
--}
-+    endOfMessages = false;   /* initial assumption */
-+    while (!endOfMessages && !envP->fault_occurred) {
-+        CURLMsg curlMsg;
--static void
--setCurlTimeout(CURL *       const curlSessionP ATTR_UNUSED,
--               unsigned int const timeout ATTR_UNUSED) {
-+        curlMulti_getMessage(curlMultiP, &endOfMessages, &curlMsg);
--#if HAVE_CURL_NOSIGNAL
--    unsigned int const timeoutMs = (timeout + 999)/1000;
-+        if (!endOfMessages) {
-+            if (curlMsg.msg == CURLMSG_DONE) {
-+                curlTransaction * curlTransactionP;
--    curl_easy_setopt(curlSessionP, CURLOPT_NOSIGNAL, 1);
-+                curl_easy_getinfo(curlMsg.easy_handle, CURLINFO_PRIVATE,
-+                                  (void *)&curlTransactionP);
--    assert((long)timeoutMs == (int)timeoutMs);
--        /* Calling requirement */
--    curl_easy_setopt(curlSessionP, CURLOPT_TIMEOUT, (long)timeoutMs);
--#else
--    abort();
--#endif
--}
--
--
--
--static void
--setupCurlSession(xmlrpc_env *               const envP,
--                 curlTransaction *          const curlTransactionP,
--                 xmlrpc_mem_block *         const callXmlP,
--                 xmlrpc_mem_block *         const responseXmlP,
--                 const xmlrpc_server_info * const serverInfoP,
--                 const char *               const userAgent,
--                 int *                      const interruptP,
--                 const struct curlSetup *   const curlSetupP) {
--/*----------------------------------------------------------------------------
--   Set up the Curl session for the transaction *curlTransactionP so that
--   a subsequent curl_easy_perform() would perform said transaction.
--
--   The data curl_easy_perform() would send for that transaction would 
--   be the contents of *callXmlP; the data curl_easy_perform() gets back
--   would go into *responseXmlP.
--
--   'interruptP' is a pointer to an interrupt flag -- a flag that becomes
--   nonzero when the user wants to abandon this Curl session.  NULL means
--   there is no interrupt flag; user will never want to abandon the session.
-------------------------------------------------------------------------------*/
--    CURL * const curlSessionP = curlTransactionP->curlSessionP;
--
--    assertConstantsMatch();
--
--    curl_easy_setopt(curlSessionP, CURLOPT_POST, 1);
--    curl_easy_setopt(curlSessionP, CURLOPT_URL, curlTransactionP->serverUrl);
--
--    XMLRPC_MEMBLOCK_APPEND(char, envP, callXmlP, "\0", 1);
--    if (!envP->fault_occurred) {
--        curl_easy_setopt(curlSessionP, CURLOPT_POSTFIELDS, 
--                         XMLRPC_MEMBLOCK_CONTENTS(char, callXmlP));
--        curl_easy_setopt(curlSessionP, CURLOPT_WRITEFUNCTION, collect);
--        curl_easy_setopt(curlSessionP, CURLOPT_FILE, responseXmlP);
--        curl_easy_setopt(curlSessionP, CURLOPT_HEADER, 0);
--        curl_easy_setopt(curlSessionP, CURLOPT_ERRORBUFFER, 
--                         curlTransactionP->curlError);
--        if (interruptP) {
--            curl_easy_setopt(curlSessionP, CURLOPT_NOPROGRESS, 0);
--            curl_easy_setopt(curlSessionP, CURLOPT_PROGRESSFUNCTION,
--                             curlProgress);
--            curl_easy_setopt(curlSessionP, CURLOPT_PROGRESSDATA, interruptP);
--        } else
--            curl_easy_setopt(curlSessionP, CURLOPT_NOPROGRESS, 1);
--        
--        curl_easy_setopt(curlSessionP, CURLOPT_SSL_VERIFYPEER,
--                         curlSetupP->sslVerifyPeer);
--        curl_easy_setopt(curlSessionP, CURLOPT_SSL_VERIFYHOST,
--                         curlSetupP->sslVerifyHost ? 2 : 0);
--
--        if (curlSetupP->networkInterface)
--            curl_easy_setopt(curlSessionP, CURLOPT_INTERFACE,
--                             curlSetupP->networkInterface);
--        if (curlSetupP->sslCert)
--            curl_easy_setopt(curlSessionP, CURLOPT_SSLCERT,
--                             curlSetupP->sslCert);
--        if (curlSetupP->sslCertType)
--            curl_easy_setopt(curlSessionP, CURLOPT_SSLCERTTYPE,
--                             curlSetupP->sslCertType);
--        if (curlSetupP->sslCertPasswd)
--            curl_easy_setopt(curlSessionP, CURLOPT_SSLCERTPASSWD,
--                             curlSetupP->sslCertPasswd);
--        if (curlSetupP->sslKey)
--            curl_easy_setopt(curlSessionP, CURLOPT_SSLKEY,
--                             curlSetupP->sslKey);
--        if (curlSetupP->sslKeyType)
--            curl_easy_setopt(curlSessionP, CURLOPT_SSLKEYTYPE,
--                             curlSetupP->sslKeyType);
--        if (curlSetupP->sslKeyPasswd)
--            curl_easy_setopt(curlSessionP, CURLOPT_SSLKEYPASSWD,
--                             curlSetupP->sslKeyPasswd);
--        if (curlSetupP->sslEngine)
--            curl_easy_setopt(curlSessionP, CURLOPT_SSLENGINE,
--                             curlSetupP->sslEngine);
--        if (curlSetupP->sslEngineDefault)
--            /* 3rd argument seems to be required by some Curl */
--            curl_easy_setopt(curlSessionP, CURLOPT_SSLENGINE_DEFAULT, 1l);
--        if (curlSetupP->sslVersion != XMLRPC_SSLVERSION_DEFAULT)
--            curl_easy_setopt(curlSessionP, CURLOPT_SSLVERSION,
--                             curlSetupP->sslVersion);
--        if (curlSetupP->caInfo)
--            curl_easy_setopt(curlSessionP, CURLOPT_CAINFO,
--                             curlSetupP->caInfo);
--        if (curlSetupP->caPath)
--            curl_easy_setopt(curlSessionP, CURLOPT_CAPATH,
--                             curlSetupP->caPath);
--        if (curlSetupP->randomFile)
--            curl_easy_setopt(curlSessionP, CURLOPT_RANDOM_FILE,
--                             curlSetupP->randomFile);
--        if (curlSetupP->egdSocket)
--            curl_easy_setopt(curlSessionP, CURLOPT_EGDSOCKET,
--                             curlSetupP->egdSocket);
--        if (curlSetupP->sslCipherList)
--            curl_easy_setopt(curlSessionP, CURLOPT_SSL_CIPHER_LIST,
--                             curlSetupP->sslCipherList);
--
--        if (curlSetupP->timeout)
--            setCurlTimeout(curlSessionP, curlSetupP->timeout);
--
--        {
--            const char * authHdrValue;
--                /* NULL means we don't have to construct an explicit
--                   Authorization: header.  non-null means we have to
--                   construct one with this as its value.
--                */
--
--            setupAuth(envP, curlSessionP, serverInfoP, &authHdrValue);
--            if (!envP->fault_occurred) {
--                struct curl_slist * headerList;
--                createCurlHeaderList(envP, authHdrValue, userAgent,
--                                     &headerList);
--                if (!envP->fault_occurred) {
--                    curl_easy_setopt(
--                        curlSessionP, CURLOPT_HTTPHEADER, headerList);
--                    curlTransactionP->headerList = headerList;
--                }
--                if (authHdrValue)
--                    xmlrpc_strfree(authHdrValue);
--            }
--        }
--    }
--}
--
--
--
--static void
--curlTransaction_create(xmlrpc_env *               const envP,
--                       CURL *                     const curlSessionP,
--                       const xmlrpc_server_info * const serverP,
--                       xmlrpc_mem_block *         const callXmlP,
--                       xmlrpc_mem_block *         const responseXmlP,
--                       const char *               const userAgent,
--                       const struct curlSetup *   const curlSetupStuffP,
--                       rpc *                      const rpcP,
--                       int *                      const interruptP,
--                       curlTransaction **         const curlTransactionPP) {
--
--    curlTransaction * curlTransactionP;
--
--    MALLOCVAR(curlTransactionP);
--    if (curlTransactionP == NULL)
--        xmlrpc_faultf(envP, "No memory to create Curl transaction.");
--    else {
--        curlTransactionP->finish       = NULL;
--        curlTransactionP->curlSessionP = curlSessionP;
--        curlTransactionP->rpcP         = rpcP;
--
--        curlTransactionP->serverUrl = strdup(serverP->serverUrl);
--        if (curlTransactionP->serverUrl == NULL)
--            xmlrpc_faultf(envP, "Out of memory to store server URL.");
--        else {
--            setupCurlSession(envP, curlTransactionP,
--                             callXmlP, responseXmlP,
--                             serverP, userAgent, interruptP,
--                             curlSetupStuffP);
--            
--            if (envP->fault_occurred)
--                xmlrpc_strfree(curlTransactionP->serverUrl);
--        }
--        if (envP->fault_occurred)
--            free(curlTransactionP);
--    }
--    *curlTransactionPP = curlTransactionP;
--}
--
--
--
--static void
--curlTransaction_destroy(curlTransaction * const curlTransactionP) {
--
--    curl_slist_free_all(curlTransactionP->headerList);
--    xmlrpc_strfree(curlTransactionP->serverUrl);
--
--    free(curlTransactionP);
--}
--
--
--
--/*=============================================================================
--    curlMulti
--=============================================================================*/
--
--typedef struct {
--/*----------------------------------------------------------------------------
--   This is an extension to Curl's CURLM object.  The extensions are:
--
--   1) It has a lock so multiple threads can use it simultaneously.
--
--   2) Its "select" file descriptor vectors are self-contained.  CURLM
--      requires the user to maintain them separately.
--
--   Plus, it manages Curl transactions (curlTransaction) instead of Curl
--   sessions (CURL).
-------------------------------------------------------------------------------*/
--    CURLM * curlMultiP;
--    lock * lockP;
--        /* Hold this lock while accessing or using *curlMultiP.  You're
--           using the multi manager whenever you're calling a Curl
--           library multi manager function.
--        */
--    /* The following file descriptor sets are an integral part of the
--       CURLM object; Our curlMulti_fdset() routine binds them to the
--       CURLM object, and said object expects us to use them in a very
--       specific way, including doing a select() on them.  It is very,
--       very messy.
--    */
--    fd_set readFdSet;
--    fd_set writeFdSet;
--    fd_set exceptFdSet;
--} curlMulti;
--
--
--
--static curlMulti *
--curlMulti_create(void) {
--
--    curlMulti * retval;
--    curlMulti * curlMultiP;
--
--    MALLOCVAR(curlMultiP);
--
--    if (curlMultiP == NULL)
--        retval = NULL;
--    else {
--        curlMultiP->lockP = createLock_pthread();
--
--        if (curlMultiP->lockP == NULL)
--            retval = NULL;
--        else {
--            curlMultiP->curlMultiP = curl_multi_init();
--            if (curlMultiP->curlMultiP == NULL)
--                retval = NULL;
--            else
--                retval = curlMultiP;
--
--            if (retval == NULL)
--                curlMultiP->lockP->destroy(curlMultiP->lockP);
--        }
--        if (retval == NULL)
--            free(curlMultiP);
--    }
--    return retval;
--}
--
--
--
--static void
--curlMulti_destroy(curlMulti * const curlMultiP) {
--
--    curl_multi_cleanup(curlMultiP->curlMultiP);
--    
--    curlMultiP->lockP->destroy(curlMultiP->lockP);
--
--    free(curlMultiP);
--}
--
--
--
--static void
--curlMulti_perform(xmlrpc_env * const envP,
--                  curlMulti *  const curlMultiP,
--                  bool *       const immediateWorkToDoP,
--                  int *        const runningHandlesP) {
--/*----------------------------------------------------------------------------
--   Do whatever work is ready to be done under the control of multi
--   manager 'curlMultiP'.  E.g. if HTTP response data has recently arrived
--   from the network, process it as an HTTP response.
--
--   Iff this results in some work being finished from our point of view,
--   return *immediateWorkToDoP.  (Caller can query the multi manager for
--   messages and find out what it is).
--
--   Return as *runningHandlesP the number of Curl easy handles under the
--   multi manager's control that are still running -- yet to finish.
-------------------------------------------------------------------------------*/
--    CURLMcode rc;
--
--    curlMultiP->lockP->lock(curlMultiP->lockP);
--
--    rc = curl_multi_perform(curlMultiP->curlMultiP, runningHandlesP);
--
--    curlMultiP->lockP->unlock(curlMultiP->lockP);
--
--    if (rc == CURLM_CALL_MULTI_PERFORM) {
--        *immediateWorkToDoP = true;
--    } else {
--        *immediateWorkToDoP = false;
--
--        if (rc != CURLM_OK) {
--            const char * reason;
--            interpretCurlMultiError(&reason, rc);
--            xmlrpc_faultf(envP, "Impossible failure of curl_multi_perform(): "
--                          "%s", reason);
--            xmlrpc_strfree(reason);
--        }
--    }
--}        
--
--
--
--static void
--curlMulti_addHandle(xmlrpc_env *       const envP,
--                    curlMulti *        const curlMultiP,
--                    curlTransaction  * const curlTransactionP) {
--
--    CURLMcode rc;
--
--    curlMultiP->lockP->lock(curlMultiP->lockP);
--
--    rc = curl_multi_add_handle(curlMultiP->curlMultiP,
--                               curlTransactionP->curlSessionP);
--    
--    curlMultiP->lockP->unlock(curlMultiP->lockP);
--
--    if (rc != CURLM_OK) {
--        const char * reason;
--        interpretCurlMultiError(&reason, rc);
--        xmlrpc_faultf(envP, "Could not add Curl session to the "
--                      "curl multi manager.  curl_multi_add_handle() "
--                      "failed: %s", reason);
--        xmlrpc_strfree(reason);
--    }
--}
--
--
--static void
--curlMulti_removeHandle(curlMulti *       const curlMultiP,
--                       curlTransaction * const curlTransactionP) {
--
--    curlMultiP->lockP->lock(curlMultiP->lockP);
--
--    curl_multi_remove_handle(curlMultiP->curlMultiP,
--                             curlTransactionP->curlSessionP);
--    
--    curlMultiP->lockP->unlock(curlMultiP->lockP);
--}
--
--
--
--static void
--curlMulti_getMessage(curlMulti * const curlMultiP,
--                     bool *      const endOfMessagesP,
--                     CURLMsg *   const curlMsgP) {
--/*----------------------------------------------------------------------------
--   Get the next message from the queue of things the Curl multi manager
--   wants to say to us.
--
--   Return the message as *curlMsgP.
--
--   Iff there are no messages in the queue, return *endOfMessagesP == true.
-------------------------------------------------------------------------------*/
--    int remainingMsgCount;
--    CURLMsg * privateCurlMsgP;
--        /* Note that this is a pointer into the multi manager's memory,
--           so we have to use it under lock.
--        */
--
--    curlMultiP->lockP->lock(curlMultiP->lockP);
--    
--    privateCurlMsgP = curl_multi_info_read(curlMultiP->curlMultiP,
--                                           &remainingMsgCount);
--        
--    if (privateCurlMsgP == NULL)
--        *endOfMessagesP = true;
--    else {
--        *endOfMessagesP = false;
--        *curlMsgP = *privateCurlMsgP;
--    }    
--    curlMultiP->lockP->unlock(curlMultiP->lockP);
--}
--
--
--
--static void
--curlMulti_fdset(xmlrpc_env * const envP,
--                curlMulti *  const curlMultiP,
--                fd_set *     const readFdSetP,
--                fd_set *     const writeFdSetP,
--                fd_set *     const exceptFdSetP,
--                int *        const maxFdP) {
--/*----------------------------------------------------------------------------
--   Set the CURLM object's file descriptor sets to those in the
--   curlMulti object, update those file descriptor sets with the
--   current needs of the multi manager, and return the resulting values
--   of the file descriptor sets.
--
--   This is a bizarre operation, but is necessary because of the nonmodular
--   way in which the Curl multi interface works with respect to waiting
--   for work with select().
-------------------------------------------------------------------------------*/
--    CURLMcode rc;
--    
--    curlMultiP->lockP->lock(curlMultiP->lockP);
--
--    /* curl_multi_fdset() doesn't _set_ the fdsets.  It adds to existing
--       ones (so you can easily do a select() on other fds and Curl
--       fds at the same time).  So we have to clear first:
--    */
--    FD_ZERO(&curlMultiP->readFdSet);
--    FD_ZERO(&curlMultiP->writeFdSet);
--    FD_ZERO(&curlMultiP->exceptFdSet);
--
--    /* WARNING: curl_multi_fdset() doesn't just update the fdsets pointed
--       to by its arguments.  It makes the CURLM object remember those
--       pointers and refer back to them later!  In fact, curl_multi_perform
--       expects its caller to have done a select() on those masks.  No,
--       really.  The man page even admits it.
--
--       Inspection of the Libcurl code in March 2007 indicates that
--       this isn't actually true -- curl_multi_fdset() updates your
--       fdset and doesn't remember the pointer at all.  I.e. it's just
--       what you would expect.  The man pages still says it's as
--       described above.  My guess is that Libcurl was fixed at some
--       time and the man page not updated.  In any case, we have to
--       work with old Libcurl if at all possible, so we still maintain
--       these fdsets as if they belong to the CURLM object.
--    */
--
--    rc = curl_multi_fdset(curlMultiP->curlMultiP,
--                          &curlMultiP->readFdSet,
--                          &curlMultiP->writeFdSet,
--                          &curlMultiP->exceptFdSet,
--                          maxFdP);
--
--    *readFdSetP   = curlMultiP->readFdSet;
--    *writeFdSetP  = curlMultiP->writeFdSet;
--    *exceptFdSetP = curlMultiP->exceptFdSet;
--
--    curlMultiP->lockP->unlock(curlMultiP->lockP);
--
--    if (rc != CURLM_OK) {
--        const char * reason;
--        interpretCurlMultiError(&reason, rc);
--        xmlrpc_faultf(envP, "Impossible failure of curl_multi_fdset(): %s",
--                      reason);
--        xmlrpc_strfree(reason);
--    }
--}
--
--
--
--static void
--curlMulti_updateFdSet(curlMulti * const curlMultiP,
--                      fd_set      const readFdSet,
--                      fd_set      const writeFdSet,
--                      fd_set      const exceptFdSet) {
--/*----------------------------------------------------------------------------
--   curl_multi_perform() expects the file descriptor sets, which were bound
--   to the CURLM object via a prior curlMulti_fdset(), to contain the results
--   of a recent select().  This subroutine provides you a way to supply those.
-------------------------------------------------------------------------------*/
--    curlMultiP->readFdSet   = readFdSet;
--    curlMultiP->writeFdSet  = writeFdSet;
--    curlMultiP->exceptFdSet = exceptFdSet;
--}
--
--                      
--
--static xmlrpc_timespec
--pselectTimeout(xmlrpc_timeoutType const timeoutType,
--               xmlrpc_timespec    const timeoutDt) {
--/*----------------------------------------------------------------------------
--   Return the value that should be used in the select() call to wait for
--   there to be work for the Curl multi manager to do, given that the user
--   wants to timeout according to 'timeoutType' and 'timeoutDt'.
-------------------------------------------------------------------------------*/
--    unsigned int const million = 1000000;
--    unsigned int selectTimeoutMillisec;
--    xmlrpc_timespec retval;
--
--    selectTimeoutMillisec = 0; /* quiet compiler warning */
--
--    /* We assume there is work to do at least every 3 seconds, because
--       the Curl multi manager often has retries and other scheduled work
--       that doesn't involve file handles on which we can select().
--    */
--    switch (timeoutType) {
--    case timeout_no:
--        selectTimeoutMillisec = 3000;
--        break;
--    case timeout_yes: {
--        xmlrpc_timespec nowTime;
--        int timeLeft;
--
--        xmlrpc_gettimeofday(&nowTime);
--        timeLeft = timeDiffMillisec(timeoutDt, nowTime);
--
--        selectTimeoutMillisec = MIN(3000, MAX(0, timeLeft));
--    }
--    break;
--    }
--    retval.tv_sec = selectTimeoutMillisec / 1000;
--    retval.tv_nsec = (uint32_t)((selectTimeoutMillisec % 1000) * million);
--
--    return retval;
--}        
--
--
--
--static void
--processCurlMessages(xmlrpc_env * const envP,
--                    curlMulti *  const curlMultiP) {
--        
--    bool endOfMessages;
--
--    endOfMessages = false;   /* initial assumption */
--
--    while (!endOfMessages && !envP->fault_occurred) {
--        CURLMsg curlMsg;
--
--        curlMulti_getMessage(curlMultiP, &endOfMessages, &curlMsg);
--
--        if (!endOfMessages) {
--            if (curlMsg.msg == CURLMSG_DONE) {
--                curlTransaction * curlTransactionP;
--
--                curl_easy_getinfo(curlMsg.easy_handle, CURLINFO_PRIVATE,
--                                  &curlTransactionP);
--
--                curlTransactionP->result = curlMsg.data.result;
--
--                if (curlTransactionP->finish)
--                    curlTransactionP->finish(envP, curlTransactionP);
--            }
--        }
--    }
-+                curlTransaction_finish(envP,
-+                                       curlTransactionP, curlMsg.data.result);
-+            }
-+        }
-+    }
- }
-@@ -1237,411 +470,141 @@ waitForWork(xmlrpc_env *       const envP,
-                                       readFdSet, writeFdSet, exceptFdSet);
-             }
-         }
--    }
--}
--
--
--
--static void
--waitForWorkInt(xmlrpc_env *       const envP,
--               curlMulti *        const curlMultiP,
--               xmlrpc_timeoutType const timeoutType,
--               xmlrpc_timespec    const deadline,
--               int *              const interruptP) {
--/*----------------------------------------------------------------------------
--   Same as waitForWork(), except we guarantee to return if a signal handler
--   sets or has set *interruptP, whereas waitForWork() can miss a signal
--   that happens before or just after it starts.
--
--   We mess with global state -- the signal mask -- so we might mess up
--   a multithreaded program.  Therefore, don't call this if
--   waitForWork() will suffice.
-------------------------------------------------------------------------------*/
--    sigset_t callerBlockSet;
--#ifdef WIN32
--    waitForWork(envP, curlMultiP, timeoutType, deadline, &callerBlockSet);
--#else
--    sigset_t allSignals;
--
--    assert(interruptP != NULL);
--
--    sigfillset(&allSignals);
--
--    sigprocmask(SIG_BLOCK, &allSignals, &callerBlockSet);
--    
--    if (*interruptP == 0)
--        waitForWork(envP, curlMultiP, timeoutType, deadline, &callerBlockSet);
--
--    sigprocmask(SIG_SETMASK, &callerBlockSet, NULL);
--#endif
--}
--
--
--
--static void
--doCurlWork(xmlrpc_env * const envP,
--           curlMulti *  const curlMultiP,
--           bool *       const transStillRunningP) {
--/*----------------------------------------------------------------------------
--   Do whatever work is ready to be done by the Curl multi manager
--   identified by 'curlMultiP'.  This typically is transferring data on
--   an HTTP connection because the server is ready.
--
--   For each transaction for which the multi manager finishes all the
--   required work, complete the transaction by calling its
--   "finish" routine.
--
--   Return *transStillRunningP false if this work completes all of the
--   manager's transactions so that there is no reason to call us ever
--   again.
-------------------------------------------------------------------------------*/
--    bool immediateWorkToDo;
--    int runningHandles;
--
--    immediateWorkToDo = true;  /* initial assumption */
--
--    while (immediateWorkToDo && !envP->fault_occurred) {
--        curlMulti_perform(envP, curlMultiP,
--                          &immediateWorkToDo, &runningHandles);
--    }
--
--    /* We either did all the work that's ready to do or hit an error. */
--
--    if (!envP->fault_occurred) {
--        /* The work we did may have resulted in asynchronous messages
--           (asynchronous to the thing they refer to, not to us, of course).
--           In particular the message "Curl transaction has completed".
--           So we process those now.
--        */
--        processCurlMessages(envP, curlMultiP);
--
--        *transStillRunningP = runningHandles > 0;
--    }
--}
--
--
--
--static void
--curlMulti_finish(xmlrpc_env *       const envP,
--                 curlMulti *        const curlMultiP,
--                 xmlrpc_timeoutType const timeoutType,
--                 xmlrpc_timespec    const deadline,
--                 int *              const interruptP) {
--/*----------------------------------------------------------------------------
--   Prosecute all the Curl transactions under the control of
--   *curlMultiP.  E.g. send data if server is ready to take it, get
--   data if server has sent some, wind up the transaction if it is
--   done.
--
--   Don't return until all the Curl transactions are done or we time out.
--
--   The *interruptP flag alone will not interrupt us.  We will wait in
--   spite of it for all Curl transactions to complete.  *interruptP
--   just gives us a hint that the Curl transactions are being
--   interrupted, so we know there is work to do for them.  (The way it
--   works is Caller sets up a "progress" function that checks the same
--   interrupt flag and reports "kill me."  When we see the interrupt
--   flag, we call that progress function and get the message).
-------------------------------------------------------------------------------*/
--    bool rpcStillRunning;
--    bool timedOut;
--
--    rpcStillRunning = true;  /* initial assumption */
--    timedOut = false;
--    
--    while (rpcStillRunning && !timedOut && !envP->fault_occurred) {
--
--        if (interruptP) {
--            waitForWorkInt(envP, curlMultiP, timeoutType, deadline,
--                           interruptP);
--        } else 
--            waitForWork(envP, curlMultiP, timeoutType, deadline, NULL);
--
--        if (!envP->fault_occurred) {
--            xmlrpc_timespec nowTime;
--
--            /* doCurlWork() (among other things) finds Curl
--               transactions that user wants to abort and finishes
--               them.
--            */
--            doCurlWork(envP, curlMultiP, &rpcStillRunning);
--            
--            xmlrpc_gettimeofday(&nowTime);
--            
--            timedOut = (timeoutType == timeout_yes &&
--                        timeIsAfter(nowTime, deadline));
--        }
--    }
--}
--
--
--
--/*===========================================================================*/
--
--
--static void
--startCurlTransaction(xmlrpc_env *      const envP,
--                     curlTransaction * const curlTransactionP,
--                     curlMulti *       const curlMultiP,
--                     finishCurlTransactionFn finish) {
--
--    curlTransactionP->finish = finish;
--
--    /* A Curl session is serial -- it processes zero or one transaction
--       at a time.  We use the "private" attribute of the Curl session to
--       indicate which transaction it is presently processing.  This is
--       important when the transaction finishes, because libcurl will just
--       tell us that something finished on a particular session, not that
--       a particular transaction finished.
--    */
--    curl_easy_setopt(curlTransactionP->curlSessionP, CURLOPT_PRIVATE,
--                     curlTransactionP);
--
--    curlMulti_addHandle(envP, curlMultiP, curlTransactionP);
--}
--
--
--
--static void
--getCurlTransactionError(curlTransaction * const curlTransactionP,
--                        xmlrpc_env *      const envP) {
--
--    if (curlTransactionP->result != CURLE_OK) {
--        /* We've seen Curl just return a null string for an explanation
--           (e.g. when TCP connect() fails because IP address doesn't exist).
--        */
--        const char * explanation;
--
--        if (strlen(curlTransactionP->curlError) == 0)
--            interpretCurlEasyError(&explanation, curlTransactionP->result);
--        else
--            xmlrpc_asprintf(&explanation, "%s", curlTransactionP->curlError);
--
--        xmlrpc_env_set_fault_formatted(
--            envP, XMLRPC_NETWORK_ERROR, "libcurl failed to execute the "
--            "HTTP POST transaction.  %s", explanation);
--
--        xmlrpc_strfree(explanation);
--    } else {
--        CURLcode res;
--        long http_result;
--        
--        res = curl_easy_getinfo(curlTransactionP->curlSessionP,
--                                CURLINFO_HTTP_CODE, &http_result);
--    
--        if (res != CURLE_OK)
--            xmlrpc_env_set_fault_formatted(
--                envP, XMLRPC_INTERNAL_ERROR, 
--                "Curl performed the HTTP POST request, but was "
--                "unable to say what the HTTP result code was.  "
--                "curl_easy_getinfo(CURLINFO_HTTP_CODE) says: %s", 
--                curlTransactionP->curlError);
--        else {
--            if (http_result != 200)
--                xmlrpc_env_set_fault_formatted(
--                    envP, XMLRPC_NETWORK_ERROR,
--                    "HTTP response code is %ld, not 200",
--                    http_result);
--        }
--    }
--}
--
--
--
--static void
--performCurlTransaction(xmlrpc_env *      const envP,
--                       curlTransaction * const curlTransactionP,
--                       curlMulti *       const curlMultiP,
--                       int *             const interruptP) {
--
--    void * const finish = NULL;
--        /* We don't need a finish function because we're going to wait here
--           for the transaction to complete and then do the next step
--           ourselves.
--        */
--
--    startCurlTransaction(envP, curlTransactionP, curlMultiP, finish);
--
--    /* Failure here just means something screwy in the multi manager;
--       Above does not even begin to perform the HTTP transaction
--    */
--
--    if (!envP->fault_occurred) {
--        xmlrpc_timespec const dummy = {0,0};
--
--        curlMulti_finish(envP, curlMultiP, timeout_no, dummy, interruptP);
--
--        /* Failure here just means something screwy in the multi
--           manager; any failure of the HTTP transaction would have been
--           recorded in *curlTransactionP.
--        */
--
--        if (!envP->fault_occurred) {
--            /* Curl session completed OK.  But did HTTP transaction
--               work?
--            */
--            getCurlTransactionError(curlTransactionP, envP);
--        }
--        /* If the CURL transaction is still going, removing the handle
--           here aborts it.  At least it's supposed to.  From what I've
--           seen in the Curl code in 2007, I don't think it does.  I
--           couldn't get Curl maintainers interested in the problem,
--           except to say, "If you're right, there's a bug."
--        */
--        curlMulti_removeHandle(curlMultiP, curlTransactionP);
--    }
--}
--
--
--
--struct xmlrpc_client_transport {
--    CURL * syncCurlSessionP;
--        /* Handle for a Curl library session object that we use for
--           all synchronous RPCs.  An async RPC has one of its own,
--           and consequently does not share things such as persistent
--           connections and cookies with any other RPC.
--        */
--    lock * syncCurlSessionLockP;
--        /* Hold this lock while accessing or using *syncCurlSessionP.
--           You're using the session from the time you set any
--           attributes in it or start a transaction with it until any
--           transaction has finished and you've lost interest in any
--           attributes of the session.
--        */
--    curlMulti * syncCurlMultiP;
--        /* The Curl multi manager that this transport uses to execute
--           Curl transactions for RPCs requested via the synchronous
--           interface.  The fact that there is never more than one such
--           transaction going at a time might make you wonder why a
--           "multi" manager is needed.  The reason is that it is the only
--           interface in libcurl that gives us the flexibility to execute
--           the transaction with proper interruptibility.  The only Curl
--           transaction ever attached to this multi manager is
--           'syncCurlSessionP'.
--           
--           This is constant (the handle, not the object).
--        */
--    curlMulti * asyncCurlMultiP;
--        /* The Curl multi manager that this transport uses to execute
--           Curl transactions for RPCs requested via the asynchronous
--           interface.  Note that there may be multiple such Curl transactions
--           simultaneously and one can't wait for a particular one to finish;
--           the collection of asynchronous RPCs are an indivisible mass.
--           
--           This is constant (the handle, not the object).
--        */
--    const char * userAgent;
--        /* Prefix for the User-Agent HTTP header, reflecting facilities
--           outside of Xmlrpc-c.  The actual User-Agent header consists
--           of this prefix plus information about Xmlrpc-c.  NULL means
--           none.
--
--           This is constant.
--        */
--    struct curlSetup curlSetupStuff;
--        /* This is constant */
--    int * interruptP;
--        /* Pointer to a value that user sets to nonzero to indicate he wants
--           the transport to give up on whatever it is doing and return ASAP.
-+    }
-+}
--           NULL means none -- transport never gives up.
--        */
--};
-+static void
-+waitForWorkInt(xmlrpc_env *       const envP,
-+               curlMulti *        const curlMultiP,
-+               xmlrpc_timeoutType const timeoutType,
-+               xmlrpc_timespec    const deadline,
-+               int *              const interruptP) {
-+/*----------------------------------------------------------------------------
-+   Same as waitForWork(), except we guarantee to return if a signal handler
-+   sets or has set *interruptP, whereas waitForWork() can miss a signal
-+   that happens before or just after it starts.
--struct rpc {
--    struct xmlrpc_client_transport * transportP;
--        /* The client XML transport that transports this RPC */
--    curlTransaction * curlTransactionP;
--        /* The object which does the HTTP transaction, with no knowledge
--           of XML-RPC or Xmlrpc-c.
--        */
--    xmlrpc_mem_block * responseXmlP;
--        /* Where the response XML for this RPC should go or has gone. */
--    xmlrpc_transport_asynch_complete complete;
--        /* Routine to call to complete the RPC after it is complete HTTP-wise.
--           NULL if none.
--        */
--    struct xmlrpc_call_info * callInfoP;
--        /* User's identifier for this RPC */
--};
-+   We mess with global state -- the signal mask -- so we might mess up
-+   a multithreaded program.  Therefore, don't call this if
-+   waitForWork() will suffice.
-+-----------------------------------------------------------------------------*/
-+    sigset_t callerBlockSet;
-+#ifdef WIN32
-+    waitForWork(envP, curlMultiP, timeoutType, deadline, &callerBlockSet);
-+#else
-+    sigset_t allSignals;
-+    assert(interruptP != NULL);
--static void
--lockSyncCurlSession(struct xmlrpc_client_transport * const transportP) {
--    transportP->syncCurlSessionLockP->lock(transportP->syncCurlSessionLockP);
-+    sigfillset(&allSignals);
-+
-+    sigprocmask(SIG_BLOCK, &allSignals, &callerBlockSet);
-+    
-+    if (*interruptP == 0)
-+        waitForWork(envP, curlMultiP, timeoutType, deadline, &callerBlockSet);
-+
-+    sigprocmask(SIG_SETMASK, &callerBlockSet, NULL);
-+#endif
- }
- static void
--unlockSyncCurlSession(struct xmlrpc_client_transport * const transportP) {
--    transportP->syncCurlSessionLockP->unlock(transportP->syncCurlSessionLockP);
--}
-+doCurlWork(xmlrpc_env * const envP,
-+           curlMulti *  const curlMultiP,
-+           bool *       const transStillRunningP) {
-+/*----------------------------------------------------------------------------
-+   Do whatever work is ready to be done by the Curl multi manager
-+   identified by 'curlMultiP'.  This typically is transferring data on
-+   an HTTP connection because the server is ready.
-+
-+   For each transaction for which the multi manager finishes all the
-+   required work, complete the transaction by calling its
-+   "finish" routine.
-+   Return *transStillRunningP false if this work completes all of the
-+   manager's transactions so that there is no reason to call us ever
-+   again.
-+-----------------------------------------------------------------------------*/
-+    bool immediateWorkToDo;
-+    int runningHandles;
-+    immediateWorkToDo = true;  /* initial assumption */
--static void
--initWindowsStuff(xmlrpc_env * const envP ATTR_UNUSED) {
-+    while (immediateWorkToDo && !envP->fault_occurred) {
-+        curlMulti_perform(envP, curlMultiP,
-+                          &immediateWorkToDo, &runningHandles);
-+    }
--#if defined (WIN32)
--    /* This is CRITICAL so that cURL-Win32 works properly! */
--    
--    /* So this commenter says, but I wonder why.  libcurl should do the
--       required WSAStartup() itself, and it looks to me like it does.
--       -Bryan 06.01.01
--    */
--    WORD wVersionRequested;
--    WSADATA wsaData;
--    int err;
--    wVersionRequested = MAKEWORD(1, 1);
--    
--    err = WSAStartup(wVersionRequested, &wsaData);
--    if (err)
--        xmlrpc_env_set_fault_formatted(
--            envP, XMLRPC_INTERNAL_ERROR,
--            "Winsock startup failed.  WSAStartup returned rc %d", err);
--    else {
--        if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) {
--            /* Tell the user that we couldn't find a useable */ 
--            /* winsock.dll. */ 
--            xmlrpc_env_set_fault_formatted(
--                envP, XMLRPC_INTERNAL_ERROR, "Winsock reported that "
--                "it does not implement the requested version 1.1.");
--        }
--        if (envP->fault_occurred)
--            WSACleanup();
-+    /* We either did all the work that's ready to do or hit an error. */
-+
-+    if (!envP->fault_occurred) {
-+        /* The work we did may have resulted in asynchronous messages
-+           (asynchronous to the thing they refer to, not to us, of course).
-+           In particular the message "Curl transaction has completed".
-+           So we process those now.
-+        */
-+        processCurlMessages(envP, curlMultiP);
-+
-+        *transStillRunningP = runningHandles > 0;
-     }
--#endif
- }
- static void
--termWindowsStuff(void) {
--
--#if defined (WIN32)
--    WSACleanup();
--#endif
--}
-+finishCurlMulti(xmlrpc_env *       const envP,
-+                curlMulti *        const curlMultiP,
-+                xmlrpc_timeoutType const timeoutType,
-+                xmlrpc_timespec    const deadline,
-+                int *              const interruptP) {
-+/*----------------------------------------------------------------------------
-+   Prosecute all the Curl transactions under the control of
-+   *curlMultiP.  E.g. send data if server is ready to take it, get
-+   data if server has sent some, wind up the transaction if it is
-+   done.
-+   Don't return until all the Curl transactions are done or we time out.
-+   The *interruptP flag alone will not interrupt us.  We will wait in
-+   spite of it for all Curl transactions to complete.  *interruptP
-+   just gives us a hint that the Curl transactions are being
-+   interrupted, so we know there is work to do for them.  (The way it
-+   works is Caller sets up a "progress" function that checks the same
-+   interrupt flag and reports "kill me."  When we see the interrupt
-+   flag, we call that progress function and get the message).
-+-----------------------------------------------------------------------------*/
-+    bool rpcStillRunning;
-+    bool timedOut;
--static bool
--curlHasNosignal(void) {
-+    rpcStillRunning = true;  /* initial assumption */
-+    timedOut = false;
-+    
-+    while (rpcStillRunning && !timedOut && !envP->fault_occurred) {
--    bool retval;
-+        if (interruptP) {
-+            waitForWorkInt(envP, curlMultiP, timeoutType, deadline,
-+                           interruptP);
-+        } else 
-+            waitForWork(envP, curlMultiP, timeoutType, deadline, NULL);
--#if HAVE_CURL_NOSIGNAL
--    curl_version_info_data * const curlInfoP =
--        curl_version_info(CURLVERSION_NOW);
-+        if (!envP->fault_occurred) {
-+            xmlrpc_timespec nowTime;
--    retval = (curlInfoP->version_num >= 0x070A00);  /* 7.10.0 */
--#else
--    retval = false;
--#endif
--    return retval;
-+            /* doCurlWork() (among other things) finds Curl
-+               transactions that user wants to abort and finishes
-+               them.
-+            */
-+            doCurlWork(envP, curlMultiP, &rpcStillRunning);
-+            
-+            xmlrpc_gettimeofday(&nowTime);
-+            
-+            timedOut = (timeoutType == timeout_yes &&
-+                        timeIsAfter(nowTime, deadline));
-+        }
-+    }
- }
-@@ -1657,7 +620,8 @@ getTimeoutParm(xmlrpc_env *                          const envP,
-     else {
-         if (curlHasNosignal()) {
-             /* libcurl takes a 'long' in milliseconds for the timeout value */
--            if ((curlXportParmsP->timeout + 999) / 1000 > LONG_MAX)
-+            if ((unsigned)(long)(curlXportParmsP->timeout) !=
-+                curlXportParmsP->timeout)
-                 xmlrpc_faultf(envP, "Timeout value %u is too large.",
-                               curlXportParmsP->timeout);
-             else
-@@ -1673,6 +637,19 @@ getTimeoutParm(xmlrpc_env *                          const envP,
- static void
-+setVerbose(bool * const verboseP) {
-+
-+    const char * const xmlrpcTraceCurl = getenv("XMLRPC_TRACE_CURL");
-+
-+    if (xmlrpcTraceCurl)
-+        *verboseP = true;
-+    else
-+        *verboseP = false;
-+}
-+
-+
-+
-+static void
- getXportParms(xmlrpc_env *                          const envP,
-               const struct xmlrpc_curl_xportparms * const curlXportParmsP,
-               size_t                                const parmSize,
-@@ -1710,6 +687,11 @@ getXportParms(xmlrpc_env *                          const envP,
-     else
-         transportP->userAgent = strdup(curlXportParmsP->user_agent);
-     
-+    if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(dont_advertise))
-+        transportP->dontAdvertise = false;
-+    else
-+        transportP->dontAdvertise = curlXportParmsP->dont_advertise;
-+    
-     if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(network_interface))
-         curlSetupP->networkInterface = NULL;
-     else if (curlXportParmsP->network_interface == NULL)
-@@ -1764,7 +746,7 @@ getXportParms(xmlrpc_env *                          const envP,
-     else
-         curlSetupP->sslKeyType = strdup(curlXportParmsP->sslkeytype);
-     
--        if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(sslkeypasswd))
-+    if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(sslkeypasswd))
-         curlSetupP->sslKeyPasswd = NULL;
-     else if (curlXportParmsP->sslkeypasswd == NULL)
-         curlSetupP->sslKeyPasswd = NULL;
-@@ -1823,6 +805,35 @@ getXportParms(xmlrpc_env *                          const envP,
-     else
-         curlSetupP->sslCipherList = strdup(curlXportParmsP->ssl_cipher_list);
-+    if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(proxy))
-+        curlSetupP->proxy = NULL;
-+    else if (curlXportParmsP->proxy == NULL)
-+        curlSetupP->proxy = NULL;
-+    else
-+        curlSetupP->proxy = strdup(curlXportParmsP->proxy);
-+
-+    if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(proxy_port))
-+        curlSetupP->proxyPort = 8080;
-+    else
-+        curlSetupP->proxyPort = curlXportParmsP->proxy_port;
-+
-+    if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(proxy_auth))
-+        curlSetupP->proxyAuth = CURLAUTH_BASIC;
-+    else
-+        curlSetupP->proxyAuth = curlXportParmsP->proxy_auth;
-+
-+    if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(proxy_userpwd))
-+        curlSetupP->proxyUserPwd = NULL;
-+    else if (curlXportParmsP->proxy_userpwd == NULL)
-+        curlSetupP->proxyUserPwd = NULL;
-+    else
-+        curlSetupP->proxyUserPwd = strdup(curlXportParmsP->proxy_userpwd);
-+
-+    if (!curlXportParmsP || parmSize < XMLRPC_CXPSIZE(proxy_type))
-+        curlSetupP->proxyType = CURLPROXY_HTTP;
-+    else
-+        curlSetupP->proxyType = curlXportParmsP->proxy_type;
-+
-     getTimeoutParm(envP, curlXportParmsP, parmSize, &curlSetupP->timeout);
- }
-@@ -1861,6 +872,10 @@ freeXportParms(const struct xmlrpc_client_transport * const transportP) {
-         xmlrpc_strfree(curlSetupP->networkInterface);
-     if (transportP->userAgent)
-         xmlrpc_strfree(transportP->userAgent);
-+    if (curlSetupP->proxy)
-+        xmlrpc_strfree(curlSetupP->proxy);
-+    if (curlSetupP->proxyUserPwd)
-+        xmlrpc_strfree(curlSetupP->proxyUserPwd);
- }
-@@ -1921,7 +936,7 @@ static void
- makeSyncCurlSession(xmlrpc_env *                     const envP,
-                     struct xmlrpc_client_transport * const transportP) {
--    transportP->syncCurlSessionLockP = createLock_pthread();
-+    transportP->syncCurlSessionLockP = curlLock_create_pthread();
-     if (transportP->syncCurlSessionLockP == NULL)
-         xmlrpc_faultf(envP, "Unable to create lock for "
-                       "synchronous Curl session.");
-@@ -1976,12 +991,12 @@ create(xmlrpc_env *                      const envP,
-     struct xmlrpc_client_transport * transportP;
--    assertConstantsMatch();
--
-     MALLOCVAR(transportP);
-     if (transportP == NULL)
-         xmlrpc_faultf(envP, "Unable to allocate transport descriptor.");
-     else {
-+        setVerbose(&transportP->curlSetupStuff.verbose);
-+
-         transportP->interruptP = NULL;
-         transportP->asyncCurlMultiP = curlMulti_create();
-@@ -2044,6 +1059,14 @@ static void
- destroy(struct xmlrpc_client_transport * const clientTransportP) {
- /*----------------------------------------------------------------------------
-    This does the 'destroy' operation for a Curl client transport.
-+
-+   An RPC is a reference to a client XML transport, so you may not
-+   destroy a transport while RPCs are running.  To ensure no
-+   asynchronous RPCs are running, you must successfully execute the
-+   transport 'finishAsync' method, with no interruptions or timeouts
-+   allowed.  To speed that up, you can set the transport's interrupt
-+   flag to 1 first, which will make all outstanding RPCs fail
-+   immediately.
- -----------------------------------------------------------------------------*/
-     XMLRPC_ASSERT(clientTransportP != NULL);
-@@ -2070,6 +1093,64 @@ destroy(struct xmlrpc_client_transport * const clientTransportP) {
- static void
-+performCurlTransaction(xmlrpc_env *      const envP,
-+                       curlTransaction * const curlTransactionP,
-+                       curlMulti *       const curlMultiP,
-+                       int *             const interruptP) {
-+
-+    curlMulti_addHandle(envP, curlMultiP,
-+                        curlTransaction_curlSession(curlTransactionP));
-+
-+    /* Failure here just means something screwy in the multi manager;
-+       Above does not even begin to perform the HTTP transaction
-+    */
-+
-+    if (!envP->fault_occurred) {
-+        xmlrpc_timespec const dummy = {0,0};
-+
-+        finishCurlMulti(envP, curlMultiP, timeout_no, dummy, interruptP);
-+
-+        /* Failure here just means something screwy in the multi
-+           manager; any failure of the HTTP transaction would have been
-+           recorded in *curlTransactionP.
-+        */
-+
-+        if (!envP->fault_occurred) {
-+            /* Curl session completed OK.  But did HTTP transaction
-+               work?
-+            */
-+            curlTransaction_getError(curlTransactionP, envP);
-+        }
-+        /* If the CURL transaction is still going, removing the handle
-+           here aborts it.  At least it's supposed to.  From what I've
-+           seen in the Curl code in 2007, I don't think it does.  I
-+           couldn't get Curl maintainers interested in the problem,
-+           except to say, "If you're right, there's a bug."
-+        */
-+        curlMulti_removeHandle(curlMultiP,
-+                               curlTransaction_curlSession(curlTransactionP));
-+    }
-+}
-+
-+
-+
-+static void
-+startRpc(xmlrpc_env * const envP,
-+         rpc *        const rpcP) {
-+
-+    curlMulti_addHandle(envP,
-+                        rpcP->transportP->asyncCurlMultiP,
-+                        curlTransaction_curlSession(rpcP->curlTransactionP));
-+}
-+
-+
-+
-+static curlt_finishFn   finishRpcCurlTransaction;
-+static curlt_progressFn curlTransactionProgress;
-+
-+
-+
-+static void
- createRpc(xmlrpc_env *                     const envP,
-           struct xmlrpc_client_transport * const clientTransportP,
-           CURL *                           const curlSessionP,
-@@ -2077,6 +1158,7 @@ createRpc(xmlrpc_env *                     const envP,
-           xmlrpc_mem_block *               const callXmlP,
-           xmlrpc_mem_block *               const responseXmlP,
-           xmlrpc_transport_asynch_complete       complete, 
-+          xmlrpc_transport_progress              progress,
-           struct xmlrpc_call_info *        const callInfoP,
-           rpc **                           const rpcPP) {
-@@ -2087,18 +1169,22 @@ createRpc(xmlrpc_env *                     const envP,
-         xmlrpc_faultf(envP, "Couldn't allocate memory for rpc object");
-     else {
-         rpcP->transportP   = clientTransportP;
-+        rpcP->curlSessionP = curlSessionP;
-         rpcP->callInfoP    = callInfoP;
-         rpcP->complete     = complete;
-+        rpcP->progress     = progress;
-         rpcP->responseXmlP = responseXmlP;
-         curlTransaction_create(envP,
-                                curlSessionP,
-                                serverP,
-                                callXmlP, responseXmlP, 
-+                               clientTransportP->dontAdvertise,
-                                clientTransportP->userAgent,
-                                &clientTransportP->curlSetupStuff,
-                                rpcP,
--                               clientTransportP->interruptP,
-+                               complete ? &finishRpcCurlTransaction : NULL,
-+                               progress ? &curlTransactionProgress : NULL,
-                                &rpcP->curlTransactionP);
-         if (!envP->fault_occurred) {
-             if (envP->fault_occurred)
-@@ -2136,11 +1222,11 @@ performRpc(xmlrpc_env * const envP,
--static finishCurlTransactionFn finishRpcCurlTransaction;
-+static curlt_finishFn finishRpcCurlTransaction;
- static void
--finishRpcCurlTransaction(xmlrpc_env *      const envP ATTR_UNUSED,
--                         curlTransaction * const curlTransactionP) {
-+finishRpcCurlTransaction(xmlrpc_env * const envP ATTR_UNUSED,
-+                         void *       const userContextP) {
- /*----------------------------------------------------------------------------
-   Handle the event that a Curl transaction for an asynchronous RPC has
-   completed on the Curl session identified by 'curlSessionP'.
-@@ -2150,24 +1236,26 @@ finishRpcCurlTransaction(xmlrpc_env *      const envP ATTR_UNUSED,
-   Remove the Curl session from its Curl multi manager and destroy the
-   Curl session, the XML response buffer, the Curl transaction, and the RPC.
- -----------------------------------------------------------------------------*/
--    rpc * const rpcP = curlTransactionP->rpcP;
-+    rpc * const rpcP = userContextP;
-+    curlTransaction * const curlTransactionP = rpcP->curlTransactionP;
-     struct xmlrpc_client_transport * const transportP = rpcP->transportP;
-+    curlMulti_removeHandle(transportP->asyncCurlMultiP,
-+                           curlTransaction_curlSession(curlTransactionP));
-+
-     {
-         xmlrpc_env env;
-         xmlrpc_env_init(&env);
--        getCurlTransactionError(curlTransactionP, &env);
-+        curlTransaction_getError(curlTransactionP, &env);
-         rpcP->complete(rpcP->callInfoP, rpcP->responseXmlP, env);
-         xmlrpc_env_clean(&env);
-     }
--    curlMulti_removeHandle(transportP->asyncCurlMultiP, curlTransactionP);
--
--    curl_easy_cleanup(curlTransactionP->curlSessionP);
-+    curl_easy_cleanup(rpcP->curlSessionP);
-     XMLRPC_MEMBLOCK_FREE(char, rpcP->responseXmlP);
-@@ -2176,14 +1264,49 @@ finishRpcCurlTransaction(xmlrpc_env *      const envP ATTR_UNUSED,
-+static curlt_progressFn curlTransactionProgress;
-+
- static void
--startRpc(xmlrpc_env * const envP,
--         rpc *        const rpcP) {
-+curlTransactionProgress(void * const context,
-+                        double const dlTotal,
-+                        double const dlNow,
-+                        double const ulTotal,
-+                        double const ulNow,
-+                        bool * const abortP) {
-+/*----------------------------------------------------------------------------
-+   This is equivalent to a Curl "progress function" (the curlTransaction
-+   object just passes through the call from libcurl).
-+
-+   The curlTransaction calls this once a second telling us how much
-+   data has transferred.  If the transport user has set up a progress
-+   function, we call that with this progress information.  That 
-+   function might e.g. display a progress bar.
-+
-+   Additionally, the curlTransaction gives us the opportunity to tell it
-+   to abort the transaction, which we do if the user has set his
-+   "interrupt" flag (which he registered with the transport when he
-+   created it).
-+-----------------------------------------------------------------------------*/
-+    rpc * const rpcP = context;
-+    struct xmlrpc_client_transport * const transportP = rpcP->transportP;
-+
-+    struct xmlrpc_progress_data progressData;
--    startCurlTransaction(envP,
--                         rpcP->curlTransactionP,
--                         rpcP->transportP->asyncCurlMultiP,
--                         &finishRpcCurlTransaction);
-+    assert(rpcP);
-+    assert(transportP);
-+    assert(rpcP->progress);
-+
-+    progressData.response.total = dlTotal;
-+    progressData.response.now   = dlNow;
-+    progressData.call.total     = ulTotal;
-+    progressData.call.now       = ulNow;
-+
-+    rpcP->progress(rpcP->callInfoP, progressData);
-+
-+    if (transportP->interruptP)
-+        *abortP = *transportP->interruptP;
-+    else
-+        *abortP = false;
- }
-@@ -2194,6 +1317,7 @@ sendRequest(xmlrpc_env *                     const envP,
-             const xmlrpc_server_info *       const serverP,
-             xmlrpc_mem_block *               const callXmlP,
-             xmlrpc_transport_asynch_complete       complete,
-+            xmlrpc_transport_progress              progress,
-             struct xmlrpc_call_info *        const callInfoP) {
- /*----------------------------------------------------------------------------
-    Initiate an XML-RPC rpc asynchronously.  Don't wait for it to go to
-@@ -2216,7 +1340,7 @@ sendRequest(xmlrpc_env *                     const envP,
-                           "curl_easy_init() failed.");
-         else {
-             createRpc(envP, clientTransportP, curlSessionP, serverP,
--                      callXmlP, responseXmlP, complete, callInfoP,
-+                      callXmlP, responseXmlP, complete, progress, callInfoP,
-                       &rpcP);
-             
-             if (!envP->fault_occurred) {
-@@ -2282,19 +1406,19 @@ finishAsynch(
-         addMilliseconds(waitStartTime, timeout, &waitTimeoutTime);
-     }
--    curlMulti_finish(&env, clientTransportP->asyncCurlMultiP,
--                     timeoutType, waitTimeoutTime,
--                     clientTransportP->interruptP);
-+    finishCurlMulti(&env, clientTransportP->asyncCurlMultiP,
-+                    timeoutType, waitTimeoutTime,
-+                    clientTransportP->interruptP);
-     /* If the above fails, it is catastrophic, because it means there is
-        no way to complete outstanding Curl transactions and RPCs, and
-        no way to release their resources.
-        We should at least expand this interface some day to push the
--       problem back up the user, but for now we just do this Hail Mary
-+       problem back up to the user, but for now we just do this Hail Mary
-        response.
--       Note that a failure of curlMult_finish() does not mean that
-+       Note that a failure of finish_curlMulti() does not mean that
-        a session completed with an error or an RPC completed with an
-        error.  Those things are reported up through the user's 
-        xmlrpc_transport_asynch_complete routine.  A failure here is
-@@ -2339,7 +1463,7 @@ call(xmlrpc_env *                     const envP,
-         createRpc(envP, clientTransportP, clientTransportP->syncCurlSessionP,
-                   serverP,
-                   callXmlP, responseXmlP,
--                  NULL, NULL,
-+                  NULL, NULL, NULL,
-                   &rpcP);
-         if (!envP->fault_occurred) {
-diff --git a/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.h b/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.h
-deleted file mode 100644
-index 1425add..0000000
---- a/libs/xmlrpc-c/lib/curl_transport/xmlrpc_curl_transport.h
-+++ /dev/null
-@@ -1,8 +0,0 @@
--#ifndef XMLRPC_CURL_TRANSPORT_H
--#define XMLRPC_CURL_TRANSPORT_H
--
--#include "xmlrpc-c/transport.h"
--
--extern struct xmlrpc_client_transport_ops xmlrpc_curl_transport_ops;
--
--#endif
-diff --git a/libs/xmlrpc-c/lib/expat/.cvsignore b/libs/xmlrpc-c/lib/expat/.cvsignore
-deleted file mode 100644
-index f3c7a7c..0000000
---- a/libs/xmlrpc-c/lib/expat/.cvsignore
-+++ /dev/null
-@@ -1 +0,0 @@
--Makefile
-diff --git a/libs/xmlrpc-c/lib/expat/Makefile b/libs/xmlrpc-c/lib/expat/Makefile
-new file mode 100644
-index 0000000..8feab79
---- /dev/null
-+++ b/libs/xmlrpc-c/lib/expat/Makefile
-@@ -0,0 +1,39 @@
-+ifeq ($(SRCDIR),)
-+  updir = $(shell echo $(dir $(1)) | sed 's/.$$//')
-+  LIBDIR := $(call updir,$(CURDIR))
-+  SRCDIR := $(call updir,$(LIBDIR))
-+  BLDDIR := $(SRCDIR)
-+endif
-+SUBDIR := lib/expat
-+
-+include $(BLDDIR)/config.mk
-+
-+# Build up SUBDIRS:
-+SUBDIRS = gennmtab xmlparse xmltok
-+
-+default: all
-+
-+.PHONY: all clean distclean tags distdir intall check dep
-+
-+all: $(SUBDIRS:%=%/all)
-+
-+clean: $(SUBDIRS:%=%/clean) clean-common
-+
-+distclean: $(SUBDIRS:%=%/distclean) distclean-common
-+
-+tags: $(SUBDIRS:%=%/tags) TAGS
-+
-+DISTFILES = 
-+
-+distdir: distdir-common
-+
-+install: $(SUBDIRS:%=%/install)
-+
-+check:
-+
-+dep: $(SUBDIRS:%=%/dep)
-+
-+include $(SRCDIR)/common.mk
-+
-+
-+
-diff --git a/libs/xmlrpc-c/lib/expat/Makefile.in b/libs/xmlrpc-c/lib/expat/Makefile.in
-deleted file mode 100644
-index 121de36..0000000
---- a/libs/xmlrpc-c/lib/expat/Makefile.in
-+++ /dev/null
-@@ -1,314 +0,0 @@
--# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
--# This Makefile.in 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.
--
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
--# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
--# PARTICULAR PURPOSE.
--
--
--SHELL = @SHELL@
--
--srcdir = @srcdir@
--top_srcdir = @top_srcdir@
--VPATH = @srcdir@
--prefix = @prefix@
--exec_prefix = @exec_prefix@
--
--bindir = @bindir@
--sbindir = @sbindir@
--libexecdir = @libexecdir@
--datadir = @datadir@
--sysconfdir = @sysconfdir@
--sharedstatedir = @sharedstatedir@
--localstatedir = @localstatedir@
--libdir = @libdir@
--infodir = @infodir@
--mandir = @mandir@
--includedir = @includedir@
--oldincludedir = /usr/include
--
--DESTDIR =
--
--pkgdatadir = $(datadir)/@PACKAGE@
--pkglibdir = $(libdir)/@PACKAGE@
--pkgincludedir = $(includedir)/@PACKAGE@
--
--top_builddir = ../..
--
--ACLOCAL = @ACLOCAL@
--AUTOCONF = @AUTOCONF@
--AUTOHEADER = @AUTOHEADER@
--
--INSTALL = @INSTALL@
--INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
--INSTALL_DATA = @INSTALL_DATA@
--INSTALL_SCRIPT = @INSTALL_SCRIPT@
--transform = @program_transform_name@
--
--NORMAL_INSTALL = :
--PRE_INSTALL = :
--POST_INSTALL = :
--NORMAL_UNINSTALL = :
--PRE_UNINSTALL = :
--POST_UNINSTALL = :
--host_alias = @host_alias@
--host_triplet = @host@
--ABYSS_SUBDIR = @ABYSS_SUBDIR@
--AS = @AS@
--ASYNCH_CLIENT = @ASYNCH_CLIENT@
--AUTH_CLIENT = @AUTH_CLIENT@
--AVAILABLE_MODULES = @AVAILABLE_MODULES@
--CC = @CC@
--CC_WARN_FLAGS = @CC_WARN_FLAGS@
--CLIENTTEST = @CLIENTTEST@
--CONFIGURE_DATE = @CONFIGURE_DATE@
--CPPTEST = @CPPTEST@
--CPP_WARN_FLAGS = @CPP_WARN_FLAGS@
--CXX = @CXX@
--DLLTOOL = @DLLTOOL@
--EFRPCTEST = @EFRPCTEST@
--EFRPCTEST_WRAPPER = @EFRPCTEST_WRAPPER@
--INTEROP_CGI = @INTEROP_CGI@
--INTEROP_CLIENT_SUBDIR = @INTEROP_CLIENT_SUBDIR@
--LIBTOOL = @LIBTOOL@
--LIBWWW_CFLAGS = @LIBWWW_CFLAGS@
--LIBWWW_CONFIG = @LIBWWW_CONFIG@
--LIBWWW_LDADD = @LIBWWW_LDADD@
--LIBWWW_LIBDIR = @LIBWWW_LIBDIR@
--LIBWWW_RPATH = @LIBWWW_RPATH@
--LIBWWW_WL_RPATH = @LIBWWW_WL_RPATH@
--LIBXMLRPC_ABYSS_SERVER_LA = @LIBXMLRPC_ABYSS_SERVER_LA@
--LIBXMLRPC_CGI_LA = @LIBXMLRPC_CGI_LA@
--LIBXMLRPC_CLIENT_LA = @LIBXMLRPC_CLIENT_LA@
--LIBXMLRPC_CPP_A = @LIBXMLRPC_CPP_A@
--LN_S = @LN_S@
--MAKEINFO = @MAKEINFO@
--MEERKAT_APP_LIST = @MEERKAT_APP_LIST@
--OBJDUMP = @OBJDUMP@
--PACKAGE = @PACKAGE@
--QUERY_MEERKAT = @QUERY_MEERKAT@
--RANLIB = @RANLIB@
--SAMPLE_CGI_CGI = @SAMPLE_CGI_CGI@
--SERVER = @SERVER@
--SERVERTEST = @SERVERTEST@
--SYNCH_CLIENT = @SYNCH_CLIENT@
--VALIDATEE = @VALIDATEE@
--VERSION = @VERSION@
--VERSION_INFO = @VERSION_INFO@
--XMLRPCCPP_H = @XMLRPCCPP_H@
--XMLRPC_ABYSS_H = @XMLRPC_ABYSS_H@
--XMLRPC_CGI_H = @XMLRPC_CGI_H@
--XMLRPC_CLIENT_H = @XMLRPC_CLIENT_H@
--XML_RPC_API2CPP_SUBDIR = @XML_RPC_API2CPP_SUBDIR@
--
--SUBDIRS = gennmtab xmltok xmlparse xmlwf sample
--EXTRA_DIST = expat.html expat.dsw
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = ../../xmlrpc_config.h
--CONFIG_CLEAN_FILES = 
--DIST_COMMON = Makefile.in
--
--DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
--
--TAR = gtar
--GZIP_ENV = --best
--all: all-redirect
--.SUFFIXES:
--
--Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
--      cd $(top_builddir) \
--        && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
--
--
--# This directory's subdirectories are mostly independent; you can cd
--# into them and run `make' without going through this Makefile.
--# To change the values of `make' variables: instead of editing Makefiles,
--# (1) if the variable is set in `config.status', edit `config.status'
--#     (which will cause the Makefiles to be regenerated when you run `make');
--# (2) otherwise, pass the desired values on the `make' command line.
--
--@SET_MAKE@
--
--all-recursive install-data-recursive install-exec-recursive \
--installdirs-recursive install-recursive uninstall-recursive  \
--check-recursive installcheck-recursive info-recursive dvi-recursive:
--      @set fnord $(MAKEFLAGS); amf=$$2; \
--      dot_seen=no; \
--      target=`echo $@ | sed s/-recursive//`; \
--      list='$(SUBDIRS)'; for subdir in $$list; do \
--        echo "Making $$target in $$subdir"; \
--        if test "$$subdir" = "."; then \
--          dot_seen=yes; \
--          local_target="$$target-am"; \
--        else \
--          local_target="$$target"; \
--        fi; \
--        (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
--         || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
--      done; \
--      if test "$$dot_seen" = "no"; then \
--        $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
--      fi; test -z "$$fail"
--
--mostlyclean-recursive clean-recursive distclean-recursive \
--maintainer-clean-recursive:
--      @set fnord $(MAKEFLAGS); amf=$$2; \
--      dot_seen=no; \
--      rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
--        rev="$$subdir $$rev"; \
--        test "$$subdir" = "." && dot_seen=yes; \
--      done; \
--      test "$$dot_seen" = "no" && rev=". $$rev"; \
--      target=`echo $@ | sed s/-recursive//`; \
--      for subdir in $$rev; do \
--        echo "Making $$target in $$subdir"; \
--        if test "$$subdir" = "."; then \
--          local_target="$$target-am"; \
--        else \
--          local_target="$$target"; \
--        fi; \
--        (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
--         || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
--      done && test -z "$$fail"
--tags-recursive:
--      list='$(SUBDIRS)'; for subdir in $$list; do \
--        test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
--      done
--
--tags: TAGS
--
--ID: $(HEADERS) $(SOURCES) $(LISP)
--      list='$(SOURCES) $(HEADERS)'; \
--      unique=`for i in $$list; do echo $$i; done | \
--        awk '    { files[$$0] = 1; } \
--             END { for (i in files) print i; }'`; \
--      here=`pwd` && cd $(srcdir) \
--        && mkid -f$$here/ID $$unique $(LISP)
--
--TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
--      tags=; \
--      here=`pwd`; \
--      list='$(SUBDIRS)'; for subdir in $$list; do \
--   if test "$$subdir" = .; then :; else \
--          test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
--   fi; \
--      done; \
--      list='$(SOURCES) $(HEADERS)'; \
--      unique=`for i in $$list; do echo $$i; done | \
--        awk '    { files[$$0] = 1; } \
--             END { for (i in files) print i; }'`; \
--      test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
--        || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $$unique $(LISP) -o $$here/TAGS)
--
--mostlyclean-tags:
--
--clean-tags:
--
--distclean-tags:
--      -rm -f TAGS ID
--
--maintainer-clean-tags:
--
--distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
--
--subdir = lib/expat
--
--distdir: $(DISTFILES)
--      @for file in $(DISTFILES); do \
--        d=$(srcdir); \
--        if test -d $$d/$$file; then \
--          cp -pr $$d/$$file $(distdir)/$$file; \
--        else \
--          test -f $(distdir)/$$file \
--          || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
--          || cp -p $$d/$$file $(distdir)/$$file || :; \
--        fi; \
--      done
--      for subdir in $(SUBDIRS); do \
--        if test "$$subdir" = .; then :; else \
--          test -d $(distdir)/$$subdir \
--          || mkdir $(distdir)/$$subdir \
--          || exit 1; \
--          chmod 777 $(distdir)/$$subdir; \
--          (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \
--            || exit 1; \
--        fi; \
--      done
--info-am:
--info: info-recursive
--dvi-am:
--dvi: dvi-recursive
--check-am: all-am
--check: check-recursive
--installcheck-am:
--installcheck: installcheck-recursive
--install-exec-am:
--install-exec: install-exec-recursive
--
--install-data-am:
--install-data: install-data-recursive
--
--install-am: all-am
--      @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
--install: install-recursive
--uninstall-am:
--uninstall: uninstall-recursive
--all-am: Makefile
--all-redirect: all-recursive
--install-strip:
--      $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
--installdirs: installdirs-recursive
--installdirs-am:
--
--
--mostlyclean-generic:
--
--clean-generic:
--
--distclean-generic:
--      -rm -f Makefile $(CONFIG_CLEAN_FILES)
--      -rm -f config.cache config.log stamp-h stamp-h[0-9]*
--
--maintainer-clean-generic:
--mostlyclean-am:  mostlyclean-tags mostlyclean-generic
--
--mostlyclean: mostlyclean-recursive
--
--clean-am:  clean-tags clean-generic mostlyclean-am
--
--clean: clean-recursive
--
--distclean-am:  distclean-tags distclean-generic clean-am
--      -rm -f libtool
--
--distclean: distclean-recursive
--
--maintainer-clean-am:  maintainer-clean-tags maintainer-clean-generic \
--              distclean-am
--      @echo "This command is intended for maintainers to use;"
--      @echo "it deletes files that may require special tools to rebuild."
--
--maintainer-clean: maintainer-clean-recursive
--
--.PHONY: install-data-recursive uninstall-data-recursive \
--install-exec-recursive uninstall-exec-recursive installdirs-recursive \
--uninstalldirs-recursive all-recursive check-recursive \
--installcheck-recursive info-recursive dvi-recursive \
--mostlyclean-recursive distclean-recursive clean-recursive \
--maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
--distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
--dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
--install-exec install-data-am install-data install-am install \
--uninstall-am uninstall all-redirect all-am all installdirs-am \
--installdirs mostlyclean-generic distclean-generic clean-generic \
--maintainer-clean-generic clean mostlyclean distclean maintainer-clean
--
--
--# Tell versions [3.59,3.63) of GNU make to not export all variables.
--# Otherwise a system limit (for SysV at least) may be exceeded.
--.NOEXPORT:
--
--dep:
-diff --git a/libs/xmlrpc-c/lib/expat/expat.dsw b/libs/xmlrpc-c/lib/expat/expat.dsw
-deleted file mode 100644
-index efc3322..0000000
---- a/libs/xmlrpc-c/lib/expat/expat.dsw
-+++ /dev/null
-@@ -1,74 +0,0 @@
--Microsoft Developer Studio Workspace File, Format Version 6.00\r
--# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r
--\r
--###############################################################################\r
--\r
--Project: "gennmtab"=.\gennmtab\gennmtab.dsp - Package Owner=<4>\r
--\r
--Package=<5>\r
--{{{\r
--}}}\r
--\r
--Package=<4>\r
--{{{\r
--}}}\r
--\r
--###############################################################################\r
--\r
--Project: "xmlparse"=.\xmlparse\xmlparse.dsp - Package Owner=<4>\r
--\r
--Package=<5>\r
--{{{\r
--}}}\r
--\r
--Package=<4>\r
--{{{\r
--    Begin Project Dependency\r
--    Project_Dep_Name xmltok\r
--    End Project Dependency\r
--}}}\r
--\r
--###############################################################################\r
--\r
--Project: "xmltok"=.\xmltok\xmltok.dsp - Package Owner=<4>\r
--\r
--Package=<5>\r
--{{{\r
--}}}\r
--\r
--Package=<4>\r
--{{{\r
--    Begin Project Dependency\r
--    Project_Dep_Name gennmtab\r
--    End Project Dependency\r
--}}}\r
--\r
--###############################################################################\r
--\r
--Project: "xmlwf"=.\xmlwf\xmlwf.dsp - Package Owner=<4>\r
--\r
--Package=<5>\r
--{{{\r
--}}}\r
--\r
--Package=<4>\r
--{{{\r
--    Begin Project Dependency\r
--    Project_Dep_Name xmlparse\r
--    End Project Dependency\r
--}}}\r
--\r
--###############################################################################\r
--\r
--Global:\r
--\r
--Package=<5>\r
--{{{\r
--}}}\r
--\r
--Package=<3>\r
--{{{\r
--}}}\r
--\r
--###############################################################################\r
--\r
-diff --git a/libs/xmlrpc-c/lib/expat/gennmtab/.cvsignore b/libs/xmlrpc-c/lib/expat/gennmtab/.cvsignore
-deleted file mode 100644
-index b1f2027..0000000
---- a/libs/xmlrpc-c/lib/expat/gennmtab/.cvsignore
-+++ /dev/null
-@@ -1 +0,0 @@
--gennmtab
-diff --git a/libs/xmlrpc-c/lib/expat/gennmtab/Makefile b/libs/xmlrpc-c/lib/expat/gennmtab/Makefile
-index 32e76b7..ebb100f 100644
---- a/libs/xmlrpc-c/lib/expat/gennmtab/Makefile
-+++ b/libs/xmlrpc-c/lib/expat/gennmtab/Makefile
-@@ -9,11 +9,9 @@ SUBDIR := lib/expat/gennmtab
- include $(BLDDIR)/config.mk
--CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
--
- LDFLAGS = $(LADD)
--INCLUDES = -I$(BLDDIR) -I$(SRCDIR)/lib/util/include
-+INCLUDES = -I$(BLDDIR) -Isrcdir/lib/util/include
- default: all
-@@ -42,9 +40,9 @@ install:
- dep: dep-common
- gennmtab.o:%.o:%.c
--      $(BUILDTOOL_CC) -c $< -o $@ $(CFLAGS) $(INCLUDES)
-+      $(BUILDTOOL_CC) -c $< -o $@ $(CFLAGS_ALL) $(INCLUDES)
- gennmtab:%:%.o
-       $(BUILDTOOL_CCLD) -o $@ $(LDFLAGS) $^
--include Makefile.depend
-+include depend.mk
-diff --git a/libs/xmlrpc-c/lib/expat/gennmtab/Makefile.depend b/libs/xmlrpc-c/lib/expat/gennmtab/Makefile.depend
-deleted file mode 100644
-index e69de29..0000000
-diff --git a/libs/xmlrpc-c/lib/expat/gennmtab/gennmtab.dsp b/libs/xmlrpc-c/lib/expat/gennmtab/gennmtab.dsp
-deleted file mode 100644
-index 917dc44..0000000
---- a/libs/xmlrpc-c/lib/expat/gennmtab/gennmtab.dsp
-+++ /dev/null
-@@ -1,110 +0,0 @@
--# Microsoft Developer Studio Project File - Name="gennmtab" - Package Owner=<4>
--# Microsoft Developer Studio Generated Build File, Format Version 6.00
--# ** DO NOT EDIT **
--
--# TARGTYPE "Win32 (x86) Console Application" 0x0103
--
--CFG=gennmtab - 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 "gennmtab.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 "gennmtab.mak" CFG="gennmtab - Win32 Release"
--!MESSAGE 
--!MESSAGE Possible choices for configuration are:
--!MESSAGE 
--!MESSAGE "gennmtab - Win32 Release" (based on "Win32 (x86) Console Application")
--!MESSAGE "gennmtab - Win32 Debug" (based on "Win32 (x86) Console Application")
--!MESSAGE 
--
--# Begin Project
--# PROP AllowPerConfigDependencies 0
--# PROP Scc_ProjName "gennmtab"
--# PROP Scc_LocalPath "."
--CPP=cl.exe
--RSC=rc.exe
--
--!IF  "$(CFG)" == "gennmtab - 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\gennmtab"
--# PROP Intermediate_Dir "Release\gennmtab"
--# PROP Ignore_Export_Lib 0
--# PROP Target_Dir "."
--# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
--# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /FD /c
--# ADD BASE RSC /l 0x809 /d "NDEBUG"
--# ADD RSC /l 0x809 /d "NDEBUG"
--BSC32=bscmake.exe
--# ADD BASE BSC32 /nologo
--# ADD BSC32 /nologo
--LINK32=link.exe
--# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
--# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\Bin\gennmtab.exe"
--# Begin Special Build Tool
--SOURCE="$(InputPath)"
--PostBuild_Cmds=..\..\..\Bin\gennmtab.exe >..\xmltok\nametab.h
--# End Special Build Tool
--
--!ELSEIF  "$(CFG)" == "gennmtab - 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\gennmtab"
--# PROP Intermediate_Dir "Debug\gennmtab"
--# PROP Ignore_Export_Lib 0
--# PROP Target_Dir "."
--# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
--# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /FD /c
--# ADD BASE RSC /l 0x809 /d "_DEBUG"
--# ADD RSC /l 0x809 /d "_DEBUG"
--BSC32=bscmake.exe
--# ADD BASE BSC32 /nologo
--# ADD BSC32 /nologo
--LINK32=link.exe
--# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
--# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\Bin\gennmtabD.exe"
--# Begin Special Build Tool
--SOURCE="$(InputPath)"
--PostBuild_Cmds=..\..\..\Bin\gennmtabD.exe >..\xmltok\nametab.h
--# End Special Build Tool
--
--!ENDIF 
--
--# Begin Target
--
--# Name "gennmtab - Win32 Release"
--# Name "gennmtab - Win32 Debug"
--# Begin Group "Source Files"
--
--# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
--# Begin Source File
--
--SOURCE=.\gennmtab.c
--# End Source File
--# End Group
--# Begin Group "Header Files"
--
--# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
--# End Group
--# Begin Group "Resource Files"
--
--# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
--# End Group
--# End Target
--# End Project
-diff --git a/libs/xmlrpc-c/lib/expat/sample/.cvsignore b/libs/xmlrpc-c/lib/expat/sample/.cvsignore
-deleted file mode 100644
-index f3c7a7c..0000000
---- a/libs/xmlrpc-c/lib/expat/sample/.cvsignore
-+++ /dev/null
-@@ -1 +0,0 @@
--Makefile
-diff --git a/libs/xmlrpc-c/lib/expat/sample/Makefile.in b/libs/xmlrpc-c/lib/expat/sample/Makefile.in
-deleted file mode 100644
-index b6e338d..0000000
---- a/libs/xmlrpc-c/lib/expat/sample/Makefile.in
-+++ /dev/null
-@@ -1,208 +0,0 @@
--# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
--# This Makefile.in 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.
--
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
--# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
--# PARTICULAR PURPOSE.
--
--
--SHELL = @SHELL@
--
--srcdir = @srcdir@
--top_srcdir = @top_srcdir@
--VPATH = @srcdir@
--prefix = @prefix@
--exec_prefix = @exec_prefix@
--
--bindir = @bindir@
--sbindir = @sbindir@
--libexecdir = @libexecdir@
--datadir = @datadir@
--sysconfdir = @sysconfdir@
--sharedstatedir = @sharedstatedir@
--localstatedir = @localstatedir@
--libdir = @libdir@
--infodir = @infodir@
--mandir = @mandir@
--includedir = @includedir@
--oldincludedir = /usr/include
--
--DESTDIR =
--
--pkgdatadir = $(datadir)/@PACKAGE@
--pkglibdir = $(libdir)/@PACKAGE@
--pkgincludedir = $(includedir)/@PACKAGE@
--
--top_builddir = ../../..
--
--ACLOCAL = @ACLOCAL@
--AUTOCONF = @AUTOCONF@
--AUTOHEADER = @AUTOHEADER@
--
--INSTALL = @INSTALL@
--INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
--INSTALL_DATA = @INSTALL_DATA@
--INSTALL_SCRIPT = @INSTALL_SCRIPT@
--transform = @program_transform_name@
--
--NORMAL_INSTALL = :
--PRE_INSTALL = :
--POST_INSTALL = :
--NORMAL_UNINSTALL = :
--PRE_UNINSTALL = :
--POST_UNINSTALL = :
--host_alias = @host_alias@
--host_triplet = @host@
--ABYSS_SUBDIR = @ABYSS_SUBDIR@
--AS = @AS@
--ASYNCH_CLIENT = @ASYNCH_CLIENT@
--AUTH_CLIENT = @AUTH_CLIENT@
--AVAILABLE_MODULES = @AVAILABLE_MODULES@
--CC = @CC@
--CC_WARN_FLAGS = @CC_WARN_FLAGS@
--CLIENTTEST = @CLIENTTEST@
--CONFIGURE_DATE = @CONFIGURE_DATE@
--CPPTEST = @CPPTEST@
--CPP_WARN_FLAGS = @CPP_WARN_FLAGS@
--CXX = @CXX@
--DLLTOOL = @DLLTOOL@
--EFRPCTEST = @EFRPCTEST@
--EFRPCTEST_WRAPPER = @EFRPCTEST_WRAPPER@
--INTEROP_CGI = @INTEROP_CGI@
--INTEROP_CLIENT_SUBDIR = @INTEROP_CLIENT_SUBDIR@
--LIBTOOL = @LIBTOOL@
--LIBWWW_CFLAGS = @LIBWWW_CFLAGS@
--LIBWWW_CONFIG = @LIBWWW_CONFIG@
--LIBWWW_LDADD = @LIBWWW_LDADD@
--LIBWWW_LIBDIR = @LIBWWW_LIBDIR@
--LIBWWW_RPATH = @LIBWWW_RPATH@
--LIBWWW_WL_RPATH = @LIBWWW_WL_RPATH@
--LIBXMLRPC_ABYSS_SERVER_LA = @LIBXMLRPC_ABYSS_SERVER_LA@
--LIBXMLRPC_CGI_LA = @LIBXMLRPC_CGI_LA@
--LIBXMLRPC_CLIENT_LA = @LIBXMLRPC_CLIENT_LA@
--LIBXMLRPC_CPP_A = @LIBXMLRPC_CPP_A@
--LN_S = @LN_S@
--MAKEINFO = @MAKEINFO@
--MEERKAT_APP_LIST = @MEERKAT_APP_LIST@
--OBJDUMP = @OBJDUMP@
--PACKAGE = @PACKAGE@
--QUERY_MEERKAT = @QUERY_MEERKAT@
--RANLIB = @RANLIB@
--SAMPLE_CGI_CGI = @SAMPLE_CGI_CGI@
--SERVER = @SERVER@
--SERVERTEST = @SERVERTEST@
--SYNCH_CLIENT = @SYNCH_CLIENT@
--VALIDATEE = @VALIDATEE@
--VERSION = @VERSION@
--VERSION_INFO = @VERSION_INFO@
--XMLRPCCPP_H = @XMLRPCCPP_H@
--XMLRPC_ABYSS_H = @XMLRPC_ABYSS_H@
--XMLRPC_CGI_H = @XMLRPC_CGI_H@
--XMLRPC_CLIENT_H = @XMLRPC_CLIENT_H@
--XML_RPC_API2CPP_SUBDIR = @XML_RPC_API2CPP_SUBDIR@
--
--EXTRA_DIST = build.bat elements.c
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = ../../../xmlrpc_config.h
--CONFIG_CLEAN_FILES = 
--DIST_COMMON = Makefile.in
--
--
--DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
--
--TAR = gtar
--GZIP_ENV = --best
--all: all-redirect
--.SUFFIXES:
--
--Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
--      cd $(top_builddir) \
--        && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
--
--tags: TAGS
--TAGS:
--
--
--distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
--
--subdir = lib/expat/sample
--
--distdir: $(DISTFILES)
--      @for file in $(DISTFILES); do \
--        d=$(srcdir); \
--        if test -d $$d/$$file; then \
--          cp -pr $$d/$$file $(distdir)/$$file; \
--        else \
--          test -f $(distdir)/$$file \
--          || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
--          || cp -p $$d/$$file $(distdir)/$$file || :; \
--        fi; \
--      done
--info-am:
--info: info-am
--dvi-am:
--dvi: dvi-am
--check-am: all-am
--check: check-am
--installcheck-am:
--installcheck: installcheck-am
--install-exec-am:
--install-exec: install-exec-am
--
--install-data-am:
--install-data: install-data-am
--
--install-am: all-am
--      @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
--install: install-am
--uninstall-am:
--uninstall: uninstall-am
--all-am: Makefile
--all-redirect: all-am
--install-strip:
--      $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
--installdirs:
--
--
--mostlyclean-generic:
--
--clean-generic:
--
--distclean-generic:
--      -rm -f Makefile $(CONFIG_CLEAN_FILES)
--      -rm -f config.cache config.log stamp-h stamp-h[0-9]*
--
--maintainer-clean-generic:
--mostlyclean-am:  mostlyclean-generic
--
--mostlyclean: mostlyclean-am
--
--clean-am:  clean-generic mostlyclean-am
--
--clean: clean-am
--
--distclean-am:  distclean-generic clean-am
--      -rm -f libtool
--
--distclean: distclean-am
--
--maintainer-clean-am:  maintainer-clean-generic distclean-am
--      @echo "This command is intended for maintainers to use;"
--      @echo "it deletes files that may require special tools to rebuild."
--
--maintainer-clean: maintainer-clean-am
--
--.PHONY: tags distdir info-am info dvi-am dvi check check-am \
--installcheck-am installcheck install-exec-am install-exec \
--install-data-am install-data install-am install uninstall-am uninstall \
--all-redirect all-am all installdirs mostlyclean-generic \
--distclean-generic clean-generic maintainer-clean-generic clean \
--mostlyclean distclean maintainer-clean
--
--
--# Tell versions [3.59,3.63) of GNU make to not export all variables.
--# Otherwise a system limit (for SysV at least) may be exceeded.
--.NOEXPORT:
-diff --git a/libs/xmlrpc-c/lib/expat/sample/build.bat b/libs/xmlrpc-c/lib/expat/sample/build.bat
-deleted file mode 100644
-index 8cf3048..0000000
---- a/libs/xmlrpc-c/lib/expat/sample/build.bat
-+++ /dev/null
-@@ -1,4 +0,0 @@
--@echo off\r
--set LIB=..\xmlparse\Release;..\lib;%LIB%\r
--cl /nologo /DXMLTOKAPI=__declspec(dllimport) /DXMLPARSEAPI=__declspec(dllimport) /I..\xmlparse /Fe..\bin\elements elements.c xmlparse.lib\r
--@echo Run it using: ..\bin\elements ^<..\expat.html\r
-diff --git a/libs/xmlrpc-c/lib/expat/sample/elements.c b/libs/xmlrpc-c/lib/expat/sample/elements.c
-deleted file mode 100644
-index 42745c4..0000000
---- a/libs/xmlrpc-c/lib/expat/sample/elements.c
-+++ /dev/null
-@@ -1,46 +0,0 @@
--/* This is simple demonstration of how to use expat. This program
--reads an XML document from standard input and writes a line with the
--name of each element to standard output indenting child elements by
--one tab stop more than their parent element. */
--
--#include <stdio.h>
--#include "xmlparse.h"
--
--void startElement(void *userData, const char *name, const char **atts)
--{
--  int i;
--  int *depthPtr = userData;
--  for (i = 0; i < *depthPtr; i++)
--    putchar('\t');
--  puts(name);
--  *depthPtr += 1;
--}
--
--void endElement(void *userData, const char *name)
--{
--  int *depthPtr = userData;
--  *depthPtr -= 1;
--}
--
--int main()
--{
--  char buf[BUFSIZ];
--  XML_Parser parser = XML_ParserCreate(NULL);
--  int done;
--  int depth = 0;
--  XML_SetUserData(parser, &depth);
--  XML_SetElementHandler(parser, startElement, endElement);
--  do {
--    size_t len = fread(buf, 1, sizeof(buf), stdin);
--    done = len < sizeof(buf);
--    if (!XML_Parse(parser, buf, len, done)) {
--      fprintf(stderr,
--            "%s at line %d\n",
--            XML_ErrorString(XML_GetErrorCode(parser)),
--            XML_GetCurrentLineNumber(parser));
--      return 1;
--    }
--  } while (!done);
--  XML_ParserFree(parser);
--  return 0;
--}
-diff --git a/libs/xmlrpc-c/lib/expat/xmlparse/.cvsignore b/libs/xmlrpc-c/lib/expat/xmlparse/.cvsignore
-deleted file mode 100644
-index f3c7a7c..0000000
---- a/libs/xmlrpc-c/lib/expat/xmlparse/.cvsignore
-+++ /dev/null
-@@ -1 +0,0 @@
--Makefile
-diff --git a/libs/xmlrpc-c/lib/expat/xmlparse/Makefile b/libs/xmlrpc-c/lib/expat/xmlparse/Makefile
-new file mode 100644
-index 0000000..71a17c0
---- /dev/null
-+++ b/libs/xmlrpc-c/lib/expat/xmlparse/Makefile
-@@ -0,0 +1,93 @@
-+###############################################################################
-+# This directory builds libxmlrpc_xmlparse, an XML parser.  This is
-+# essentially the separately distributed Expat library from 2001, but
-+# with slight changes.  The main reason it is bundled with Xmlrpc-c is
-+# to make the latter easier to build and use.
-+#
-+# The library is about XML in general.  There is nothing specific to
-+# XML-RPC here.
-+###############################################################################
-+
-+ifeq ($(SRCDIR),)
-+  updir = $(shell echo $(dir $(1)) | sed 's/.$$//')
-+  EXPATDIR := $(call updir,$(CURDIR))
-+  LIBDIR := $(call updir,$(EXPATDIR))
-+  SRCDIR := $(call updir,$(LIBDIR))
-+  BLDDIR := $(SRCDIR)
-+endif
-+SUBDIR := lib/expat/xmlparse
-+
-+XMLTOKDIR = srcdir/lib/expat/xmltok
-+UTILDIR = srcdir/lib/util
-+
-+default: all
-+
-+include $(BLDDIR)/config.mk
-+
-+TARGET_LIBRARY_NAMES := libxmlrpc_xmlparse
-+
-+STATIC_LIBRARIES_TO_INSTALL = libxmlrpc_xmlparse.a
-+
-+SHARED_LIBS_TO_BUILD := libxmlrpc_xmlparse
-+SHARED_LIBS_TO_INSTALL := libxmlrpc_xmlparse
-+
-+TARGET_MODS = xmlparse
-+
-+OMIT_XMLPARSE_LIB_RULE=Y
-+MAJ=3
-+  # Major number of shared libraries in this directory
-+
-+include $(SRCDIR)/common.mk
-+
-+INCLUDES = \
-+  -I$(BLDDIR) \
-+  -I$(XMLTOKDIR) \
-+  -I$(UTILDIR)/include \
-+  -Isrcdir/include \
-+
-+# LIBDEP is the shared libraries on which libxmlrpc_abyss depends.
-+# The runtime loader should load these libraries when it loads libxmlrpc_abyss.
-+
-+LIBDEP = $(LIBXMLRPC_XMLTOK) $(LIBXMLRPC_UTIL)
-+
-+XMLPARSE_SHLIB = $(call shlibfn,libxmlrpc_xmlparse)
-+#XMLPARSE_SHLIB is e.g. libxmlrpc_xmlparse.so.3.1
-+XMLPARSE_SHLIBLE = $(call shliblefn,libxmlrpc_xmlparse)
-+#XMLPARSE_SHLIBLE is e.g. libxmlrpc_xmlparse.so
-+
-+.PHONY: all
-+all: libxmlrpc_xmlparse.a $(TARGET_SHARED_LIBRARIES) $(TARGET_SHARED_LE_LIBS)
-+
-+# Rule for this is in common.mk, courtesy of TARGET_LIBRARY_NAMES:
-+$(XMLPARSE_SHLIB): $(TARGET_MODS:%=%.osh) $(LIBDEP)
-+$(XMLPARSE_SHLIB): LIBOBJECTS = $(TARGET_MODS:%=%.osh) $(LIBDEP)
-+
-+# Rule for this is in common.mk, courtesy of TARGET_STATIC_LIBRARIES:
-+
-+libxmlrpc_xmlparse.a: $(TARGET_MODS:%=%.o)
-+libxmlrpc_xmlparse.a: LIBOBJECTS = $(TARGET_MODS:%=%.o)
-+
-+#-----------------------------------------------------------------------------
-+#  RULES TO COMPILE OBJECT MODULES FOR LIBRARIES
-+#-----------------------------------------------------------------------------
-+
-+# Rules to compile object modules from which to build the static and shared
-+# library are in common.mk, courtesy of TARGET_MODS.
-+
-+.PHONY: install
-+install: install-common
-+
-+.PHONY: clean distclean
-+clean: clean-common
-+
-+distclean: clean distclean-common
-+
-+.PHONY: dep
-+dep: dep-common
-+
-+# This 'common.mk' dependency makes sure the symlinks get built before
-+# this make file is used for anything.
-+
-+$(SRCDIR)/common.mk: srcdir
-+
-+include depend.mk
-diff --git a/libs/xmlrpc-c/lib/expat/xmlparse/Makefile.in b/libs/xmlrpc-c/lib/expat/xmlparse/Makefile.in
-deleted file mode 100644
-index 3e715af..0000000
---- a/libs/xmlrpc-c/lib/expat/xmlparse/Makefile.in
-+++ /dev/null
-@@ -1,344 +0,0 @@
--# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
--# This Makefile.in 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.
--
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
--# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
--# PARTICULAR PURPOSE.
--
--
--SHELL = @SHELL@
--
--srcdir = @srcdir@
--top_srcdir = @top_srcdir@
--VPATH = @srcdir@
--prefix = @prefix@
--exec_prefix = @exec_prefix@
--
--bindir = @bindir@
--sbindir = @sbindir@
--libexecdir = @libexecdir@
--datadir = @datadir@
--sysconfdir = @sysconfdir@
--sharedstatedir = @sharedstatedir@
--localstatedir = @localstatedir@
--libdir = @libdir@
--infodir = @infodir@
--mandir = @mandir@
--includedir = @includedir@
--oldincludedir = /usr/include
--
--DESTDIR =
--
--pkgdatadir = $(datadir)/@PACKAGE@
--pkglibdir = $(libdir)/@PACKAGE@
--pkgincludedir = $(includedir)/@PACKAGE@
--
--top_builddir = ../../..
--
--ACLOCAL = @ACLOCAL@
--AUTOCONF = @AUTOCONF@
--AUTOHEADER = @AUTOHEADER@
--
--INSTALL = @INSTALL@
--INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
--INSTALL_DATA = @INSTALL_DATA@
--INSTALL_SCRIPT = @INSTALL_SCRIPT@
--transform = @program_transform_name@
--
--NORMAL_INSTALL = :
--PRE_INSTALL = :
--POST_INSTALL = :
--NORMAL_UNINSTALL = :
--PRE_UNINSTALL = :
--POST_UNINSTALL = :
--host_alias = @host_alias@
--host_triplet = @host@
--ABYSS_SUBDIR = @ABYSS_SUBDIR@
--AS = @AS@
--ASYNCH_CLIENT = @ASYNCH_CLIENT@
--AUTH_CLIENT = @AUTH_CLIENT@
--AVAILABLE_MODULES = @AVAILABLE_MODULES@
--CC = @CC@
--CC_WARN_FLAGS = @CC_WARN_FLAGS@
--CLIENTTEST = @CLIENTTEST@
--CONFIGURE_DATE = @CONFIGURE_DATE@
--CPPTEST = @CPPTEST@
--CPP_WARN_FLAGS = @CPP_WARN_FLAGS@
--CXX = @CXX@
--DLLTOOL = @DLLTOOL@
--EFRPCTEST = @EFRPCTEST@
--EFRPCTEST_WRAPPER = @EFRPCTEST_WRAPPER@
--INTEROP_CGI = @INTEROP_CGI@
--INTEROP_CLIENT_SUBDIR = @INTEROP_CLIENT_SUBDIR@
--LIBTOOL = @LIBTOOL@
--LIBWWW_CFLAGS = @LIBWWW_CFLAGS@
--LIBWWW_CONFIG = @LIBWWW_CONFIG@
--LIBWWW_LDADD = @LIBWWW_LDADD@
--LIBWWW_LIBDIR = @LIBWWW_LIBDIR@
--LIBWWW_RPATH = @LIBWWW_RPATH@
--LIBWWW_WL_RPATH = @LIBWWW_WL_RPATH@
--LIBXMLRPC_ABYSS_SERVER_LA = @LIBXMLRPC_ABYSS_SERVER_LA@
--LIBXMLRPC_CGI_LA = @LIBXMLRPC_CGI_LA@
--LIBXMLRPC_CLIENT_LA = @LIBXMLRPC_CLIENT_LA@
--LIBXMLRPC_CPP_A = @LIBXMLRPC_CPP_A@
--LN_S = @LN_S@
--MAKEINFO = @MAKEINFO@
--MEERKAT_APP_LIST = @MEERKAT_APP_LIST@
--OBJDUMP = @OBJDUMP@
--PACKAGE = @PACKAGE@
--QUERY_MEERKAT = @QUERY_MEERKAT@
--RANLIB = @RANLIB@
--SAMPLE_CGI_CGI = @SAMPLE_CGI_CGI@
--SERVER = @SERVER@
--SERVERTEST = @SERVERTEST@
--SYNCH_CLIENT = @SYNCH_CLIENT@
--VALIDATEE = @VALIDATEE@
--VERSION = @VERSION@
--VERSION_INFO = @VERSION_INFO@
--XMLRPCCPP_H = @XMLRPCCPP_H@
--XMLRPC_ABYSS_H = @XMLRPC_ABYSS_H@
--XMLRPC_CGI_H = @XMLRPC_CGI_H@
--XMLRPC_CLIENT_H = @XMLRPC_CLIENT_H@
--XML_RPC_API2CPP_SUBDIR = @XML_RPC_API2CPP_SUBDIR@
--
--INCLUDES = -I$(srcdir)/../xmltok
--
--lib_LTLIBRARIES = libxmlrpc_xmlparse.la
--
--libxmlrpc_xmlparse_la_SOURCES = xmlparse.c xmlparse.h
--libxmlrpc_xmlparse_la_LDFLAGS = @VERSION_INFO@
--
--EXTRA_DIST = xmlparse.dsp
--mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
--CONFIG_HEADER = ../../../xmlrpc_config.h
--CONFIG_CLEAN_FILES = 
--LTLIBRARIES =  $(lib_LTLIBRARIES)
--
--
--DEFS = @DEFS@ -I. -I$(srcdir) -I../../..
--CPPFLAGS = @CPPFLAGS@
--LDFLAGS = @LDFLAGS@
--LIBS = @LIBS@
--libxmlrpc_xmlparse_la_LIBADD = 
--libxmlrpc_xmlparse_la_OBJECTS =  xmlparse.lo
--COMPILER_CFLAGS = @COMPILER_CFLAGS@
--CFLAGS = @CFLAGS@ $(COMPILER_CFLAGS)
--COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--CCLD = $(CC)
--LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
--DIST_COMMON = Makefile.in
--
--
--DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
--
--TAR = gtar
--GZIP_ENV = --best
--SOURCES = $(libxmlrpc_xmlparse_la_SOURCES)
--OBJECTS = $(libxmlrpc_xmlparse_la_OBJECTS)
--
--all: all-redirect
--.SUFFIXES:
--.SUFFIXES: .S .c .lo .o .s
--
--Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
--      cd $(top_builddir) \
--        && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
--
--
--mostlyclean-libLTLIBRARIES:
--
--clean-libLTLIBRARIES:
--      -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
--
--distclean-libLTLIBRARIES:
--
--maintainer-clean-libLTLIBRARIES:
--
--install-libLTLIBRARIES: $(lib_LTLIBRARIES)
--      @$(NORMAL_INSTALL)
--      $(mkinstalldirs) $(DESTDIR)$(libdir)
--      @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
--        if test -f $$p; then \
--          echo "$(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \
--          $(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \
--        else :; fi; \
--      done
--
--uninstall-libLTLIBRARIES:
--      @$(NORMAL_UNINSTALL)
--      list='$(lib_LTLIBRARIES)'; for p in $$list; do \
--        $(LIBTOOL)  --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
--      done
--
--.c.o:
--      $(COMPILE) -c $<
--
--.s.o:
--      $(COMPILE) -c $<
--
--.S.o:
--      $(COMPILE) -c $<
--
--mostlyclean-compile:
--      -rm -f *.o core *.core
--
--clean-compile:
--
--distclean-compile:
--      -rm -f *.tab.c
--
--maintainer-clean-compile:
--
--.c.lo:
--      $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
--.s.lo:
--      $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
--.S.lo:
--      $(LIBTOOL) --mode=compile $(COMPILE) -c $<
--
--mostlyclean-libtool:
--      -rm -f *.lo
--
--clean-libtool:
--      -rm -rf .libs _libs
--
--distclean-libtool:
--
--maintainer-clean-libtool:
--
--libxmlrpc_xmlparse.la: $(libxmlrpc_xmlparse_la_OBJECTS) $(libxmlrpc_xmlparse_la_DEPENDENCIES)
--      $(LINK) -rpath $(libdir) $(libxmlrpc_xmlparse_la_LDFLAGS) $(libxmlrpc_xmlparse_la_OBJECTS) $(libxmlrpc_xmlparse_la_LIBADD) $(LIBS)
--
--tags: TAGS
--
--ID: $(HEADERS) $(SOURCES) $(LISP)
--      list='$(SOURCES) $(HEADERS)'; \
--      unique=`for i in $$list; do echo $$i; done | \
--        awk '    { files[$$0] = 1; } \
--             END { for (i in files) print i; }'`; \
--      here=`pwd` && cd $(srcdir) \
--        && mkid -f$$here/ID $$unique $(LISP)
--
--TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
--      tags=; \
--      here=`pwd`; \
--      list='$(SOURCES) $(HEADERS)'; \
--      unique=`for i in $$list; do echo $$i; done | \
--        awk '    { files[$$0] = 1; } \
--             END { for (i in files) print i; }'`; \
--      test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
--        || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $$unique $(LISP) -o $$here/TAGS)
--
--mostlyclean-tags:
--
--clean-tags:
--
--distclean-tags:
--      -rm -f TAGS ID
--
--maintainer-clean-tags:
--
--distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
--
--subdir = lib/expat/xmlparse
--
--distdir: $(DISTFILES)
--      @for file in $(DISTFILES); do \
--        d=$(srcdir); \
--        if test -d $$d/$$file; then \
--          cp -pr $$d/$$file $(distdir)/$$file; \
--        else \
--          test -f $(distdir)/$$file \
--          || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
--          || cp -p $$d/$$file $(distdir)/$$file || :; \
--        fi; \
--      done
--xmlparse.lo xmlparse.o : xmlparse.c ../xmltok/xmldef.h xmlparse.h \
--      ../xmltok/xmltok.h ../xmltok/xmlrole.h
--
--info-am:
--info: info-am
--dvi-am:
--dvi: dvi-am
--check-am: all-am
--check: check-am
--installcheck-am:
--installcheck: installcheck-am
--install-exec-am: install-libLTLIBRARIES
--install-exec: install-exec-am
--
--install-data-am:
--install-data: install-data-am
--
--install-am: all-am
--      @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
--install: install-am
--uninstall-am: uninstall-libLTLIBRARIES
--uninstall: uninstall-am
--all-am: Makefile $(LTLIBRARIES)
--all-redirect: all-am
--install-strip:
--      $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
--installdirs:
--      $(mkinstalldirs)  $(DESTDIR)$(libdir)
--
--
--mostlyclean-generic:
--
--clean-generic:
--
--distclean-generic:
--      -rm -f Makefile $(CONFIG_CLEAN_FILES)
--      -rm -f config.cache config.log stamp-h stamp-h[0-9]*
--
--maintainer-clean-generic:
--mostlyclean-am:  mostlyclean-libLTLIBRARIES mostlyclean-compile \
--              mostlyclean-libtool mostlyclean-tags \
--              mostlyclean-generic
--
--mostlyclean: mostlyclean-am
--
--clean-am:  clean-libLTLIBRARIES clean-compile clean-libtool clean-tags \
--              clean-generic mostlyclean-am
--
--clean: clean-am
--
--distclean-am:  distclean-libLTLIBRARIES distclean-compile \
--              distclean-libtool distclean-tags distclean-generic \
--              clean-am
--      -rm -f libtool
--
--distclean: distclean-am
--
--maintainer-clean-am:  maintainer-clean-libLTLIBRARIES \
--              maintainer-clean-compile maintainer-clean-libtool \
--              maintainer-clean-tags maintainer-clean-generic \
--              distclean-am
--      @echo "This command is intended for maintainers to use;"
--      @echo "it deletes files that may require special tools to rebuild."
--
--maintainer-clean: maintainer-clean-am
--
--.PHONY: mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \
--clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \
--uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \
--distclean-compile clean-compile maintainer-clean-compile \
--mostlyclean-libtool distclean-libtool clean-libtool \
--maintainer-clean-libtool tags mostlyclean-tags distclean-tags \
--clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \
--check-am installcheck-am installcheck install-exec-am install-exec \
--install-data-am install-data install-am install uninstall-am uninstall \
--all-redirect all-am all installdirs mostlyclean-generic \
--distclean-generic clean-generic maintainer-clean-generic clean \
--mostlyclean distclean maintainer-clean
--
--
--# Tell versions [3.59,3.63) of GNU make to not export all variables.
--# Otherwise a system limit (for SysV at least) may be exceeded.
--.NOEXPORT:
-diff --git a/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.c b/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.c
-index fc1c9f3..5b647f1 100644
---- a/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.c
-+++ b/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.c
-@@ -139,7 +139,7 @@ typedef struct tag {
- typedef struct {
-   const XML_Char *name;
-   const XML_Char *textPtr;
--  int textLen;
-+  size_t textLen;
-   const XML_Char *systemId;
-   const XML_Char *base;
-   const XML_Char *publicId;
-@@ -473,7 +473,7 @@ int poolGrow(STRING_POOL *pool)
-     }
-   }
-   if (pool->blocks && pool->start == pool->blocks->s) {
--    int blockSize = (pool->end - pool->start)*2;
-+    size_t const blockSize = (pool->end - pool->start)*2;
-     pool->blocks = realloc(pool->blocks, offsetof(BLOCK, s) +
-                            blockSize * sizeof(XML_Char));
-     if (!pool->blocks)
-@@ -484,12 +484,11 @@ int poolGrow(STRING_POOL *pool)
-     pool->end = pool->start + blockSize;
-   }
-   else {
-+    size_t const poolLen = pool->end - pool->start;
-+    size_t const blockSize =
-+        poolLen < INIT_BLOCK_SIZE ? INIT_BLOCK_SIZE : poolLen * 2;
-     BLOCK *tem;
--    int blockSize = pool->end - pool->start;
--    if (blockSize < INIT_BLOCK_SIZE)
--      blockSize = INIT_BLOCK_SIZE;
--    else
--      blockSize *= 2;
-+
-     tem = malloc(offsetof(BLOCK, s) + blockSize * sizeof(XML_Char));
-     if (!tem)
-       return 0;
-@@ -1123,16 +1122,14 @@ normalizeLines(XML_Char *s)
- static void
- reportDefault(XML_Parser       const xmlParserP,
-               const ENCODING * const enc,
--              const char *     const startArg,
-+              const char *     const start,
-               const char *     const end) {
-     Parser * const parser = (Parser *)xmlParserP;
--    const char * s;
--
--    s = startArg;
-+    if (MUST_CONVERT(enc, start)) {
-+        const char * s;
--    if (MUST_CONVERT(enc, s)) {
-         const char **eventPP;
-         const char **eventEndPP;
-@@ -1144,16 +1141,23 @@ reportDefault(XML_Parser       const xmlParserP,
-             eventPP = &(openInternalEntities->internalEventPtr);
-             eventEndPP = &(openInternalEntities->internalEventEndPtr);
-         }
-+        s = start;
-         do {
-             ICHAR *dataPtr = (ICHAR *)dataBuf;
-             XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd);
-             *eventEndPP = s;
--            defaultHandler(handlerArg, dataBuf, dataPtr - (ICHAR *)dataBuf);
-+            {
-+                size_t const len = dataPtr - (ICHAR *)dataBuf;
-+                assert((size_t)(int)len == len);   /* parser requirement */
-+                defaultHandler(handlerArg, dataBuf, (int)len);
-+            }
-             *eventPP = s;
-         } while (s != end);
--    } else
--        defaultHandler(handlerArg, (XML_Char *)s,
--                       (XML_Char *)end - (XML_Char *)s);
-+    } else {
-+        size_t const len = (XML_Char *)end - (XML_Char *)start;
-+        assert((size_t)(int)len == len);  /* parser requirement */
-+        defaultHandler(handlerArg, (XML_Char *)start, len);
-+    }
- }
-@@ -2151,16 +2155,21 @@ doCdataSection(XML_Parser       const xmlParserP,
-             ICHAR *dataPtr = (ICHAR *)dataBuf;
-             XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd);
-             *eventEndPP = next;
--            characterDataHandler(handlerArg, dataBuf, dataPtr - (ICHAR *)dataBuf);
-+            {
-+                size_t const len = dataPtr - (ICHAR *)dataBuf;
-+                assert((size_t)(int)len == len);   /* parser requirement */
-+                characterDataHandler(handlerArg, dataBuf, (int)len);
-+            }
-             if (s == next)
-               break;
-             *eventPP = s;
-           }
-         }
--        else
--          characterDataHandler(handlerArg,
--                               (XML_Char *)s,
--                               (XML_Char *)next - (XML_Char *)s);
-+        else {
-+            size_t const len = (XML_Char *)next - (XML_Char *)s;
-+            assert((size_t)(int)len == len);   /* parser requirement */
-+            characterDataHandler(handlerArg, (XML_Char *)s, (int)len);
-+        }                               
-       }
-       else if (defaultHandler)
-         reportDefault(xmlParserP, enc, s, next);
-@@ -2459,7 +2468,7 @@ doStartTagNoAtts(XML_Parser       const xmlParserP,
-             if (fromPtr == rawNameEnd)
-                 break;
-             else {
--                int const bufSize = (tag->bufEnd - tag->buf) << 1;
-+                size_t const bufSize = (tag->bufEnd - tag->buf) << 1;
-                 tag->buf = realloc(tag->buf, bufSize);
-                 if (!tag->buf) {
-                     *errorCodeP = XML_ERROR_NO_MEMORY;
-@@ -2777,12 +2786,16 @@ processContentToken(XML_Parser       const xmlParserP,
-                     from = s;
-                     dataPtr = (ICHAR *)dataBuf;
-                     XmlConvert(enc, &from, end, &dataPtr, (ICHAR *)dataBufEnd);
--                    characterDataHandler(handlerArg, dataBuf,
--                                         dataPtr - (ICHAR *)dataBuf);
--                } else
--                    characterDataHandler(handlerArg,
--                                         (XML_Char *)s,
--                                         (XML_Char *)end - (XML_Char *)s);
-+                    {
-+                        size_t const len = dataPtr - (ICHAR *)dataBuf;
-+                        assert((size_t)(int)len == len);   /* parser reqt */
-+                        characterDataHandler(handlerArg, dataBuf, (int)len);
-+                    }
-+                } else {
-+                    size_t const len = (XML_Char *)end - (XML_Char *)s;
-+                    assert((size_t)(int)len == len);   /* parser reqt */
-+                    characterDataHandler(handlerArg, (XML_Char *)s, (int)len);
-+                }
-             } else if (defaultHandler)
-                 reportDefault(xmlParserP, enc, s, end);
-@@ -2807,16 +2820,20 @@ processContentToken(XML_Parser       const xmlParserP,
-                     XmlConvert(enc, &from, *nextP, &dataPtr,
-                                (ICHAR *)dataBufEnd);
-                     *eventEndPP = from;
--                    characterDataHandler(handlerArg, dataBuf,
--                                         dataPtr - (ICHAR *)dataBuf);
-+                    {
-+                        size_t const len = dataPtr - (ICHAR *)dataBuf;
-+                        assert((size_t)(int)len == len);   /* parser reqt */
-+                        characterDataHandler(handlerArg, dataBuf, (int)len);
-+                    }
-                     if (from == *nextP)
-                         break;
-                     *eventPP = from;
-                 }
--            } else
--                characterDataHandler(handlerArg,
--                                     (XML_Char *)s,
--                                     (XML_Char *)*nextP - (XML_Char *)s);
-+            } else {
-+                size_t const len = (XML_Char *)*nextP - (XML_Char *)s;
-+                assert((size_t)(int)len == len);   /* parser reqt */
-+                characterDataHandler(handlerArg, (XML_Char *)s, len);
-+            }
-         } else if (defaultHandler)
-             reportDefault(xmlParserP, enc, s, *nextP);
-         break;
-@@ -4369,7 +4386,7 @@ parseFinalLen0(Parser * const parser,
- static void
- parseNoBuffer(Parser *     const parser,
-               const char * const s,
--              int          const len,
-+              size_t       const len,
-               bool         const isFinal,
-               int *        const succeededP) {
-@@ -4377,8 +4394,8 @@ parseNoBuffer(Parser *     const parser,
-     positionPtr = s;
-     if (isFinal) {
--        processor(parser, s, parseEndPtr = s + len, 0,
--                  &errorCode, &errorString);
-+        parseEndPtr = s + len;
-+        processor(parser, s, parseEndPtr, 0, &errorCode, &errorString);
-         if (errorCode == XML_ERROR_NONE)
-             *succeededP = true;
-         else {
-@@ -4427,7 +4444,7 @@ parseNoBuffer(Parser *     const parser,
- int
- xmlrpc_XML_Parse(XML_Parser   const xmlParserP,
-                  const char * const s,
--                 int          const len,
-+                 size_t       const len,
-                  int          const isFinal) {
-     Parser * const parser = (Parser *) xmlParserP;
-@@ -4487,40 +4504,49 @@ xmlrpc_XML_ParseBuffer(XML_Parser const xmlParserP,
-     }
- }
-+
-+
- void *
--xmlrpc_XML_GetBuffer(XML_Parser parser, int len)
--{
--  if (len > bufferLim - bufferEnd) {
--    /* FIXME avoid integer overflow */
--    int neededSize = len + (bufferEnd - bufferPtr);
--    if (neededSize  <= bufferLim - buffer) {
--      memmove(buffer, bufferPtr, bufferEnd - bufferPtr);
--      bufferEnd = buffer + (bufferEnd - bufferPtr);
--      bufferPtr = buffer;
--    }
--    else {
--      char *newBuf;
--      int bufferSize = bufferLim - bufferPtr;
--      if (bufferSize == 0)
--        bufferSize = INIT_BUFFER_SIZE;
--      do {
--        bufferSize *= 2;
--      } while (bufferSize < neededSize);
--      newBuf = malloc(bufferSize);
--      if (newBuf == 0) {
--        errorCode = XML_ERROR_NO_MEMORY;
--        return 0;
--      }
--      bufferLim = newBuf + bufferSize;
--      if (bufferPtr) {
--        memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr);
--        free(buffer);
--      }
--      bufferEnd = newBuf + (bufferEnd - bufferPtr);
--      bufferPtr = buffer = newBuf;
-+xmlrpc_XML_GetBuffer(XML_Parser const xmlParserP,
-+                     size_t     const len) {
-+
-+    Parser * const parser = (Parser *)xmlParserP;
-+
-+    assert(bufferLim >= bufferEnd);
-+
-+    if (len > (size_t)(bufferLim - bufferEnd)) {
-+        /* FIXME avoid integer overflow */
-+        size_t neededSize = len + (bufferEnd - bufferPtr);
-+        assert(bufferLim >= buffer);
-+        if (neededSize  <= (size_t)(bufferLim - buffer)) {
-+            memmove(buffer, bufferPtr, bufferEnd - bufferPtr);
-+            bufferEnd = buffer + (bufferEnd - bufferPtr);
-+            bufferPtr = buffer;
-+        } else {
-+            size_t bufferSize;
-+            char * newBuf;
-+
-+            bufferSize = bufferLim > bufferPtr ?
-+                bufferLim - bufferPtr : INIT_BUFFER_SIZE;
-+            
-+            do {
-+                bufferSize *= 2;
-+            } while (bufferSize < neededSize);
-+            newBuf = malloc(bufferSize);
-+            if (newBuf == 0) {
-+                errorCode = XML_ERROR_NO_MEMORY;
-+                return 0;
-+            }
-+            bufferLim = newBuf + bufferSize;
-+            if (bufferPtr) {
-+                memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr);
-+                free(buffer);
-+            }
-+            bufferEnd = newBuf + (bufferEnd - bufferPtr);
-+            bufferPtr = buffer = newBuf;
-+        }
-     }
--  }
--  return bufferEnd;
-+    return bufferEnd;
- }
-@@ -4547,19 +4573,40 @@ xmlrpc_XML_GetErrorString(XML_Parser const parser) {
- long
--xmlrpc_XML_GetCurrentByteIndex(XML_Parser parser)
--{
--  if (eventPtr)
--    return parseEndByteIndex - (parseEndPtr - eventPtr);
--  return -1;
-+xmlrpc_XML_GetCurrentByteIndex(XML_Parser const parser) {
-+
-+    long retval;
-+
-+    if (eventPtr) {
-+        size_t const bytesLeft = parseEndPtr - eventPtr;
-+
-+        if ((size_t)(long)(bytesLeft) != bytesLeft)
-+            retval = -1;
-+        else
-+            retval = parseEndByteIndex - (long)bytesLeft;
-+    } else
-+        retval = -1;
-+
-+    return retval;
- }
-+
-+
- int
--xmlrpc_XML_GetCurrentByteCount(XML_Parser parser)
--{
--  if (eventEndPtr && eventPtr)
--    return eventEndPtr - eventPtr;
--  return 0;
-+xmlrpc_XML_GetCurrentByteCount(XML_Parser const parser) {
-+
-+    int retval;
-+
-+    if (eventEndPtr && eventPtr) {
-+        size_t const byteCount = eventEndPtr - eventPtr;
-+
-+        assert((size_t)(int)byteCount == byteCount);
-+
-+        retval = (int)byteCount;
-+    } else 
-+        retval = 0;
-+
-+    return retval;
- }
-diff --git a/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.dsp b/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.dsp
-deleted file mode 100644
-index b95795a..0000000
---- a/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.dsp
-+++ /dev/null
-@@ -1,279 +0,0 @@
--# Microsoft Developer Studio Project File - Name="xmlparse" - Package Owner=<4>
--# Microsoft Developer Studio Generated Build File, Format Version 6.00
--# ** DO NOT EDIT **
--
--# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
--# TARGTYPE "Win32 (x86) Static Library" 0x0104
--
--CFG=xmlparse - 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 "xmlparse.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 "xmlparse.mak" CFG="xmlparse - Win32 Release"
--!MESSAGE 
--!MESSAGE Possible choices for configuration are:
--!MESSAGE 
--!MESSAGE "xmlparse - Win32 Release" (based on "Win32 (x86) Static Library")
--!MESSAGE "xmlparse - Win32 Debug" (based on "Win32 (x86) Static Library")
--!MESSAGE "xmlparse - Win32 Release DLL" (based on "Win32 (x86) Dynamic-Link Library")
--!MESSAGE "xmlparse - Win32 Debug DLL" (based on "Win32 (x86) Dynamic-Link Library")
--!MESSAGE "xmlparse - Win32 MinSize DLL" (based on "Win32 (x86) Dynamic-Link Library")
--!MESSAGE 
--
--# Begin Project
--# PROP AllowPerConfigDependencies 0
--# PROP Scc_ProjName "xmlparse"
--# PROP Scc_LocalPath ".."
--
--!IF  "$(CFG)" == "xmlparse - 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\xmlparse"
--# PROP Intermediate_Dir "Release\xmlparse"
--# PROP Target_Dir "."
--LINK32=link.exe -lib
--MTL=midl.exe
--CPP=cl.exe
--# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
--# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\xmltok" /I "..\xmlwf" /I "..\..\.." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "_MBCS" /D "_LIB" /YX /FD /c
--RSC=rc.exe
--# 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
--
--!ELSEIF  "$(CFG)" == "xmlparse - 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\xmlparse"
--# PROP Intermediate_Dir "Debug\xmlparse"
--# PROP Target_Dir "."
--LINK32=link.exe -lib
--MTL=midl.exe
--CPP=cl.exe
--# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
--# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\xmltok" /I "..\xmlwf" /I "..\..\.." /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
--RSC=rc.exe
--# 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
--
--!ELSEIF  "$(CFG)" == "xmlparse - Win32 Release DLL"
--
--# PROP BASE Use_MFC 0
--# PROP BASE Use_Debug_Libraries 0
--# PROP BASE Output_Dir ".\ReleaseDLL"
--# PROP BASE Intermediate_Dir ".\ReleaseDLL"
--# PROP BASE Target_Dir "."
--# PROP Use_MFC 0
--# PROP Use_Debug_Libraries 0
--# PROP Output_Dir "ReleaseDLL\xmlparse"
--# PROP Intermediate_Dir "ReleaseDLL\xmlparse"
--# PROP Ignore_Export_Lib 0
--# PROP Target_Dir "."
--CPP=cl.exe
--# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
--# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\xmltok" /I "..\xmlwf" /I "..\..\.." /D XMLTOKAPI=__declspec(dllimport) /D XMLPARSEAPI=__declspec(dllexport) /D "NDEBUG" /D "XML_NS" /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /YX /FD /c
--MTL=midl.exe
--# ADD BASE MTL /nologo /D "NDEBUG" /win32
--# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
--RSC=rc.exe
--# ADD BASE RSC /l 0x809 /d "NDEBUG"
--# ADD RSC /l 0x809 /d "NDEBUG"
--BSC32=bscmake.exe
--# ADD BASE BSC32 /nologo
--# ADD BSC32 /nologo
--LINK32=link.exe
--# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
--# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x20000000" /subsystem:windows /dll /machine:I386 /link50compat
--# SUBTRACT LINK32 /pdb:none
--
--!ELSEIF  "$(CFG)" == "xmlparse - Win32 Debug DLL"
--
--# PROP BASE Use_MFC 0
--# PROP BASE Use_Debug_Libraries 1
--# PROP BASE Output_Dir ".\DebugDLL"
--# PROP BASE Intermediate_Dir ".\DebugDLL"
--# PROP BASE Target_Dir "."
--# PROP Use_MFC 0
--# PROP Use_Debug_Libraries 1
--# PROP Output_Dir "DebugDLL\xmlparse"
--# PROP Intermediate_Dir "DebugDLL\xmlparse"
--# PROP Ignore_Export_Lib 0
--# PROP Target_Dir "."
--CPP=cl.exe
--# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
--# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\xmltok" /I "..\xmlwf" /I "..\..\.." /D "_DEBUG" /D XMLTOKAPI=__declspec(dllimport) /D XMLPARSEAPI=__declspec(dllexport) /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /YX /FD /c
--MTL=midl.exe
--# ADD BASE MTL /nologo /D "_DEBUG" /win32
--# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
--RSC=rc.exe
--# ADD BASE RSC /l 0x809 /d "_DEBUG"
--# ADD RSC /l 0x809 /d "_DEBUG"
--BSC32=bscmake.exe
--# ADD BASE BSC32 /nologo
--# ADD BSC32 /nologo
--LINK32=link.exe
--# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
--# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x20000000" /subsystem:windows /dll /debug /machine:I386
--
--!ELSEIF  "$(CFG)" == "xmlparse - Win32 MinSize DLL"
--
--# PROP BASE Use_MFC 0
--# PROP BASE Use_Debug_Libraries 0
--# PROP BASE Output_Dir ".\ReleaseMinSizeDLL"
--# PROP BASE Intermediate_Dir ".\ReleaseMinSizeDLL"
--# PROP BASE Ignore_Export_Lib 0
--# PROP BASE Target_Dir ""
--# PROP Use_MFC 0
--# PROP Use_Debug_Libraries 0
--# PROP Output_Dir "ReleaseMinSizeDLL\xmlparse"
--# PROP Intermediate_Dir "ReleaseMinSizeDLL\xmlparse"
--# PROP Ignore_Export_Lib 0
--# PROP Target_Dir ""
--CPP=cl.exe
--# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\xmltok" /I "..\xmlwf" /D XMLTOKAPI=__declspec(dllimport) /D XMLPARSEAPI=__declspec(dllexport) /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "XML_NS" /YX /FD /c
--# ADD CPP /nologo /MD /W3 /GX /O1 /I "..\xmltok" /I "..\xmlwf" /I "..\..\.." /D "XML_MIN_SIZE" /D "XML_WINLIB" /D XMLPARSEAPI=__declspec(dllexport) /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
--MTL=midl.exe
--# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
--# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
--RSC=rc.exe
--# ADD BASE RSC /l 0x809 /d "NDEBUG"
--# ADD RSC /l 0x809 /d "NDEBUG"
--BSC32=bscmake.exe
--# ADD BASE BSC32 /nologo
--# ADD BSC32 /nologo
--LINK32=link.exe
--# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x20000000" /subsystem:windows /dll /machine:I386
--# SUBTRACT BASE LINK32 /profile
--# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x20000000" /entry:"DllMain" /subsystem:windows /dll /machine:I386
--# SUBTRACT LINK32 /profile /nodefaultlib
--
--!ENDIF 
--
--# Begin Target
--
--# Name "xmlparse - Win32 Release"
--# Name "xmlparse - Win32 Debug"
--# Name "xmlparse - Win32 Release DLL"
--# Name "xmlparse - Win32 Debug DLL"
--# Name "xmlparse - Win32 MinSize DLL"
--# Begin Group "Source Files"
--
--# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
--# Begin Source File
--
--SOURCE=..\xmltok\dllmain.c
--
--!IF  "$(CFG)" == "xmlparse - Win32 Release"
--
--# PROP Exclude_From_Build 1
--
--!ELSEIF  "$(CFG)" == "xmlparse - Win32 Debug"
--
--# PROP Exclude_From_Build 1
--
--!ELSEIF  "$(CFG)" == "xmlparse - Win32 Release DLL"
--
--!ELSEIF  "$(CFG)" == "xmlparse - Win32 Debug DLL"
--
--!ELSEIF  "$(CFG)" == "xmlparse - Win32 MinSize DLL"
--
--!ENDIF 
--
--# End Source File
--# Begin Source File
--
--SOURCE=.\xmlparse.c
--# End Source File
--# Begin Source File
--
--SOURCE=..\xmltok\xmlrole.c
--
--!IF  "$(CFG)" == "xmlparse - Win32 Release"
--
--# PROP Exclude_From_Build 1
--
--!ELSEIF  "$(CFG)" == "xmlparse - Win32 Debug"
--
--# PROP Exclude_From_Build 1
--
--!ELSEIF  "$(CFG)" == "xmlparse - Win32 Release DLL"
--
--# PROP Exclude_From_Build 1
--
--!ELSEIF  "$(CFG)" == "xmlparse - Win32 Debug DLL"
--
--# PROP Exclude_From_Build 1
--
--!ELSEIF  "$(CFG)" == "xmlparse - Win32 MinSize DLL"
--
--!ENDIF 
--
--# End Source File
--# Begin Source File
--
--SOURCE=..\xmltok\xmltok.c
--
--!IF  "$(CFG)" == "xmlparse - Win32 Release"
--
--# PROP Exclude_From_Build 1
--
--!ELSEIF  "$(CFG)" == "xmlparse - Win32 Debug"
--
--# PROP Exclude_From_Build 1
--
--!ELSEIF  "$(CFG)" == "xmlparse - Win32 Release DLL"
--
--# PROP Exclude_From_Build 1
--
--!ELSEIF  "$(CFG)" == "xmlparse - Win32 Debug DLL"
--
--# PROP Exclude_From_Build 1
--
--!ELSEIF  "$(CFG)" == "xmlparse - Win32 MinSize DLL"
--
--!ENDIF 
--
--# End Source File
--# End Group
--# Begin Group "Header Files"
--
--# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
--# Begin Source File
--
--SOURCE=.\xmlparse.h
--# End Source File
--# End Group
--# Begin Group "Resource Files"
--
--# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
--# End Group
--# End Target
--# End Project
-diff --git a/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.h b/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.h
-index 2b8c701..7a65521 100644
---- a/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.h
-+++ b/libs/xmlrpc-c/lib/expat/xmlparse/xmlparse.h
-@@ -6,14 +6,12 @@
- #ifndef XMLPARSE_H_INCLUDED
- #define XMLPARSE_H_INCLUDED
-+#include "xmlrpc-c/c_util.h"
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
--#ifndef XMLPARSEAPI
--#define XMLPARSEAPI /* as nothing */
--#endif
--
- typedef void *XML_Parser;
- #ifdef XML_UNICODE_WCHAR_T
-@@ -53,7 +51,7 @@ typedef char XML_LChar;
- /* Constructs a new parser; encoding is the encoding specified by the external
- protocol or null if there is none specified. */
--XML_Parser XMLPARSEAPI
-+XML_Parser XMLRPC_DLLEXPORT
- xmlrpc_XML_ParserCreate(const XML_Char * const encoding);
- /* Constructs a new parser and namespace processor.  Element type names
-@@ -66,7 +64,7 @@ the namespace URI and the local part will be concatenated without any
- separator.  When a namespace is not declared, the name and prefix will be
- passed through without expansion. */
--XML_Parser XMLPARSEAPI
-+XML_Parser XMLRPC_DLLEXPORT
- xmlrpc_XML_ParserCreateNS(const XML_Char * const encoding,
-                           XML_Char const namespaceSeparator);
-@@ -270,24 +268,24 @@ typedef int (*XML_UnknownEncodingHandler)(void *encodingHandlerData,
-                       const XML_Char *name,
-                       XML_Encoding *info);
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetElementHandler(XML_Parser parser,
-                              XML_StartElementHandler start,
-                              XML_EndElementHandler end);
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetCharacterDataHandler(XML_Parser parser,
-                                    XML_CharacterDataHandler handler);
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetProcessingInstructionHandler(
-     XML_Parser parser,
-     XML_ProcessingInstructionHandler handler);
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetCommentHandler(XML_Parser parser,
-                              XML_CommentHandler handler);
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetCdataSectionHandler(XML_Parser parser,
-                                   XML_StartCdataSectionHandler start,
-                                   XML_EndCdataSectionHandler end);
-@@ -297,50 +295,50 @@ xmlrpc_XML_SetCdataSectionHandler(XML_Parser parser,
-    handler.
- */
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetDefaultHandler(XML_Parser parser,
-                              XML_DefaultHandler handler);
- /* This sets the default handler but does not inhibit expansion of internal entities.
- The entity reference will not be passed to the default handler. */
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetDefaultHandlerExpand(XML_Parser parser,
-                                    XML_DefaultHandler handler);
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetDoctypeDeclHandler(XML_Parser parser,
-                                  XML_StartDoctypeDeclHandler start,
-                                  XML_EndDoctypeDeclHandler end);
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
-                                         XML_UnparsedEntityDeclHandler handler);
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetNotationDeclHandler(XML_Parser parser,
-                                   XML_NotationDeclHandler handler);
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetExternalParsedEntityDeclHandler(
-     XML_Parser parser,
-     XML_ExternalParsedEntityDeclHandler handler);
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetInternalParsedEntityDeclHandler(
-     XML_Parser parser,
-     XML_InternalParsedEntityDeclHandler handler);
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetNamespaceDeclHandler(XML_Parser parser,
-                                    XML_StartNamespaceDeclHandler start,
-                                    XML_EndNamespaceDeclHandler end);
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetNotStandaloneHandler(XML_Parser parser,
-                                    XML_NotStandaloneHandler handler);
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetExternalEntityRefHandler(XML_Parser parser,
-                                        XML_ExternalEntityRefHandler handler);
-@@ -348,10 +346,10 @@ xmlrpc_XML_SetExternalEntityRefHandler(XML_Parser parser,
-    passed as the first argument to the external entity ref handler
-    instead of the parser object.
- */
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetExternalEntityRefHandlerArg(XML_Parser, void *arg);
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetUnknownEncodingHandler(XML_Parser parser,
-                                      XML_UnknownEncodingHandler handler,
-                                      void *encodingHandlerData);
-@@ -360,11 +358,11 @@ xmlrpc_XML_SetUnknownEncodingHandler(XML_Parser parser,
-    processing instruction or character data.  It causes the corresponding
-    markup to be passed to the default handler.
- */
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_DefaultCurrent(XML_Parser parser);
- /* This value is passed as the userData argument to callbacks. */
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_SetUserData(XML_Parser parser, void *userData);
- /* Returns the last value set by XML_SetUserData or null. */
-@@ -374,14 +372,14 @@ xmlrpc_XML_SetUserData(XML_Parser parser, void *userData);
- to XML_ParserCreate. It must not be called after XML_Parse
- or XML_ParseBuffer. */
--int XMLPARSEAPI
-+int XMLRPC_DLLEXPORT
- xmlrpc_XML_SetEncoding(XML_Parser parser, const XML_Char *encoding);
- /* If this function is called, then the parser will be passed
-    as the first argument to callbacks instead of userData.
-    The userData will still be accessible using XML_GetUserData.
- */
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_UseParserAsHandlerArg(XML_Parser parser);
- /* Sets the base to be used for resolving relative URIs in system
-@@ -391,10 +389,10 @@ xmlrpc_XML_UseParserAsHandlerArg(XML_Parser parser);
-    and XML_UnparsedEntityDeclHandler. The base argument will be copied.
-    Returns zero if out of memory, non-zero otherwise.
- */
--int XMLPARSEAPI
-+int XMLRPC_DLLEXPORT
- xmlrpc_XML_SetBase(XML_Parser parser, const XML_Char *base);
--const XML_Char XMLPARSEAPI *
-+const XML_Char XMLRPC_DLLEXPORT *
- xmlrpc_XML_GetBase(XML_Parser parser);
- /* Returns the number of the attribute/value pairs passed in last call
-@@ -403,7 +401,7 @@ xmlrpc_XML_GetBase(XML_Parser parser);
-    this correspondds to an index into the atts array passed to the
-    XML_StartElementHandler.
- */
--int XMLPARSEAPI
-+int XMLRPC_DLLEXPORT
- xmlrpc_XML_GetSpecifiedAttributeCount(XML_Parser parser);
- /* Returns the index of the ID attribute passed in the last call to
-@@ -411,20 +409,24 @@ xmlrpc_XML_GetSpecifiedAttributeCount(XML_Parser parser);
-    attribute/value pair counts as 2; thus this correspondds to an index
-    into the atts array passed to the XML_StartElementHandler.
- */
--int XMLPARSEAPI
-+int XMLRPC_DLLEXPORT
- xmlrpc_XML_GetIdAttributeIndex(XML_Parser parser);
- /* Parses some input. Returns 0 if a fatal error is detected.
-    The last call to XML_Parse must have isFinal true;
-    len may be zero for this call (or any other).
- */
--int XMLPARSEAPI
--xmlrpc_XML_Parse(XML_Parser const parser, const char * const s, int const len, int const isFinal);
-+int XMLRPC_DLLEXPORT
-+xmlrpc_XML_Parse(XML_Parser   const xmlParserP,
-+                 const char * const s,
-+                 size_t       const len,
-+                 int          const isFinal);
--void XMLPARSEAPI *
--xmlrpc_XML_GetBuffer(XML_Parser parser, int len);
-+void XMLRPC_DLLEXPORT *
-+xmlrpc_XML_GetBuffer(XML_Parser const xmlParserP,
-+                     size_t     const len);
--int XMLPARSEAPI
-+int XMLRPC_DLLEXPORT
- xmlrpc_XML_ParseBuffer(XML_Parser const parser, int const len, int const isFinal);
- /* Creates an XML_Parser object that can parse an external general
-@@ -443,7 +445,7 @@ xmlrpc_XML_ParseBuffer(XML_Parser const parser, int const len, int const isFinal
-    from the parser argument.  Returns 0 if out of memory.  Otherwise
-    returns a new XML_Parser object.
- */
--XML_Parser XMLPARSEAPI
-+XML_Parser XMLRPC_DLLEXPORT
- xmlrpc_XML_ExternalEntityParserCreate(XML_Parser parser,
-                                       const XML_Char *context,
-                                       const XML_Char *encoding);
-@@ -473,7 +475,7 @@ enum XML_ParamEntityParsing {
-    XML_SetParamEntityParsing will return 0 if parsing of parameter
-    entities is requested; otherwise it will return non-zero.
- */
--int XMLPARSEAPI
-+int XMLRPC_DLLEXPORT
- xmlrpc_XML_SetParamEntityParsing(XML_Parser parser,
-                                  enum XML_ParamEntityParsing parsing);
-@@ -508,10 +510,10 @@ enum XML_Error {
-    information about the error.
- */
--enum XML_Error XMLPARSEAPI
-+enum XML_Error XMLRPC_DLLEXPORT
- xmlrpc_XML_GetErrorCode(XML_Parser const parser);
--const char * XMLPARSEAPI
-+XMLRPC_DLLEXPORT const char *
- xmlrpc_XML_GetErrorString(XML_Parser const parser);
- /* These functions return information about the current parse location.
-@@ -523,17 +525,17 @@ xmlrpc_XML_GetErrorString(XML_Parser const parser);
-    of the sequence of characters that generated the event.
- */
--int XMLPARSEAPI
-+int XMLRPC_DLLEXPORT
- xmlrpc_XML_GetCurrentLineNumber(XML_Parser parser);
--int XMLPARSEAPI
-+int XMLRPC_DLLEXPORT
- xmlrpc_XML_GetCurrentColumnNumber(XML_Parser parser);
--long XMLPARSEAPI
-+long XMLRPC_DLLEXPORT
- xmlrpc_XML_GetCurrentByteIndex(XML_Parser parser);
- /* Return the number of bytes in the current event.
- Returns 0 if the event is in an internal entity. */
--int XMLPARSEAPI
-+int XMLRPC_DLLEXPORT
- xmlrpc_XML_GetCurrentByteCount(XML_Parser parser);
- /* For backwards compatibility with previous versions. */
-@@ -542,11 +544,11 @@ xmlrpc_XML_GetCurrentByteCount(XML_Parser parser);
- #define XML_GetErrorByteIndex XML_GetCurrentByteIndex
- /* Frees memory used by the parser. */
--void XMLPARSEAPI
-+void XMLRPC_DLLEXPORT
- xmlrpc_XML_ParserFree(XML_Parser parser);
- /* Returns a string describing the error. */
--const XML_LChar XMLPARSEAPI *
-+const XML_LChar XMLRPC_DLLEXPORT *
- xmlrpc_XML_ErrorString(int const code);
- #ifdef __cplusplus
-diff --git a/libs/xmlrpc-c/lib/expat/xmltok/.cvsignore b/libs/xmlrpc-c/lib/expat/xmltok/.cvsignore
-deleted file mode 100644
-index 38cd01c..0000000
---- a/libs/xmlrpc-c/lib/expat/xmltok/.cvsignore
-+++ /dev/null
-@@ -1 +0,0 @@
--nametab.h
-diff --git a/libs/xmlrpc-c/lib/expat/xmltok/Makefile b/libs/xmlrpc-c/lib/expat/xmltok/Makefile
-index cfcb8dd..4cb9723 100644
---- a/libs/xmlrpc-c/lib/expat/xmltok/Makefile
-+++ b/libs/xmlrpc-c/lib/expat/xmltok/Makefile
-@@ -24,10 +24,10 @@ include $(BLDDIR)/config.mk
- # we started using the Gcc -Wundef option, that generates a warning, so
- # se set it explicitly to 0 here.
--CFLAGS = $(CFLAGS_COMMON) -DXML_BYTE_ORDER=0 $(CFLAGS_PERSONAL) $(CADD)
-+CFLAGS_LOCAL = -DXML_BYTE_ORDER=0
- # -I. is necessary when blddir != srcdir
--INCLUDES = -I. -I$(BLDDIR) -I$(SRCDIR)/lib/util/include
-+INCLUDES = -I. -I$(BLDDIR) -Isrcdir/lib/util/include -Isrcdir/include
- default: all
-@@ -46,19 +46,20 @@ MAJ=3
- include $(SRCDIR)/common.mk
-+# This 'common.mk' dependency makes sure the symlinks get built before
-+# this make file is used for anything.
-+
-+$(SRCDIR)/common.mk: srcdir blddir
-+
- XMLTOK_SHLIB = $(call shlibfn,libxmlrpc_xmltok)
- #XMLTOK_SHLIB is e.g. libxmlrpc_xmltok.so.3.1
- XMLTOK_SHLIBLE = $(call shliblefn,libxmlrpc_xmltok)
- #XMLTOK_SHLIBLE is e.g. libxmlrpc_xmltok.so
--ifneq ($(SHARED_LIB_TYPE),NONE)
--  TARGET_SHARED_LIBS := $(XMLTOK_SHLIB) $(XMLTOK_SHLIBLE)
--  endif
--
- .PHONY: all
--all: libxmlrpc_xmltok.a $(TARGET_SHARED_LIBS) $(TARGET_SHARED_LE_LIBS)
-+all: libxmlrpc_xmltok.a $(TARGET_SHARED_LIBRARIES) $(TARGET_SHARED_LE_LIBS)
--# Rule for this is in common.mk, courtesy of TARGET_SHARED_LIBRARIES:
-+# Rule for this is in common.mk, courtesy of TARGET_LIBRARY_NAMES
- $(XMLTOK_SHLIB): $(TARGET_MODS:%=%.osh)
- $(XMLTOK_SHLIB): LIBOBJECTS = $(TARGET_MODS:%=%.osh)
-@@ -103,6 +104,6 @@ nametab.h: $(GENNMTAB)
- $(GENNMTAB):
-       $(MAKE) -C $(dir $@) $(notdir $@)
--xmltok.o xmltok.osh: nametab.h
-+xmltok.o xmltok.osh: nametab.h xmltok_impl.c
--include Makefile.depend
-+include depend.mk
-diff --git a/libs/xmlrpc-c/lib/expat/xmltok/Makefile.depend b/libs/xmlrpc-c/lib/expat/xmltok/Makefile.depend
-deleted file mode 100644
-index e69de29..0000000
-diff --git a/libs/xmlrpc-c/lib/expat/xmltok/nametab.h b/libs/xmlrpc-c/lib/expat/xmltok/nametab.h
-deleted file mode 100644
-index b05e62c..0000000
---- a/libs/xmlrpc-c/lib/expat/xmltok/nametab.h
-+++ /dev/null
-@@ -1,150 +0,0 @@
--static const unsigned namingBitmap[] = {
--0x00000000, 0x00000000, 0x00000000, 0x00000000,
--0x00000000, 0x00000000, 0x00000000, 0x00000000,
--0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
--0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
--0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE,
--0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF,
--0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF,
--0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF,
--0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
--0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000,
--0x00000000, 0x00000000, 0x00000000, 0x00000000,
--0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
--0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
--0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
--0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
--0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF,
--0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000,
--0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060,
--0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003,
--0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003,
--0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000,
--0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001,
--0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003,
--0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000,
--0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003,
--0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003,
--0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003,
--0x00000000, 0x00000000, 0x00000000, 0x00000000,
--0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000,
--0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000,
--0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF,
--0x00000000, 0x00000000, 0x00000000, 0x00000000,
--0x00000000, 0x00000000, 0x00000000, 0x00000000,
--0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF,
--0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB,
--0x40000000, 0xF580C900, 0x00000007, 0x02010800,
--0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
--0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF,
--0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
--0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
--0x00000000, 0x00004C40, 0x00000000, 0x00000000,
--0x00000007, 0x00000000, 0x00000000, 0x00000000,
--0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF,
--0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF,
--0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000,
--0x00000000, 0x00000000, 0x00000000, 0x00000000,
--0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
--0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000,
--0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
--0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
--0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE,
--0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF,
--0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
--0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000,
--0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003,
--0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
--0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
--0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
--0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
--0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF,
--0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF,
--0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF,
--0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF,
--0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF,
--0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0,
--0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1,
--0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3,
--0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80,
--0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3,
--0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3,
--0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3,
--0x00000000, 0x00000000, 0x00000000, 0x00000000,
--0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000,
--0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000,
--0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF,
--0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000,
--0x00000000, 0x00000000, 0x00000000, 0x00000000,
--0x00000000, 0x00000000, 0x1FFF0000, 0x00000002,
--0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF,
--0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF,
--};
--static const unsigned char nmstrtPages[] = {
--0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00,
--0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
--0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
--0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--};
--static const unsigned char namePages[] = {
--0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00,
--0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
--0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
--0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
--0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
--};
-diff --git a/libs/xmlrpc-c/lib/expat/xmltok/xmlrole.h b/libs/xmlrpc-c/lib/expat/xmltok/xmlrole.h
-index 3cccb83..523b3da 100644
---- a/libs/xmlrpc-c/lib/expat/xmltok/xmlrole.h
-+++ b/libs/xmlrpc-c/lib/expat/xmltok/xmlrole.h
-@@ -3,9 +3,10 @@ Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
- See the file copying.txt for copying permission.
- */
--#ifndef XmlRole_INCLUDED
--#define XmlRole_INCLUDED 1
-+#ifndef XMLROLE_H_INCLUDED
-+#define XMLROLE_H_INCLUDED
-+#include "xmlrpc-c/c_util.h"
- #include "xmltok.h"
- #ifdef __cplusplus
-@@ -80,10 +81,10 @@ typedef struct prolog_state {
-   int documentEntity;
- } PROLOG_STATE;
--XMLTOKAPI void
-+XMLRPC_DLLEXPORT void
- xmlrpc_XmlPrologStateInit(PROLOG_STATE * const state);
--XMLTOKAPI void
-+XMLRPC_DLLEXPORT void
- xmlrpc_XmlPrologStateInitExternalEntity(PROLOG_STATE * const state);
- #define XmlTokenRole(state, tok, ptr, end, enc) \
-diff --git a/libs/xmlrpc-c/lib/expat/xmltok/xmltok.c b/libs/xmlrpc-c/lib/expat/xmltok/xmltok.c
-index 9eb8284..969ac23 100644
---- a/libs/xmlrpc-c/lib/expat/xmltok/xmltok.c
-+++ b/libs/xmlrpc-c/lib/expat/xmltok/xmltok.c
-@@ -4,6 +4,7 @@ See the file copying.txt for copying permission.
- */
- #include "xmlrpc_config.h"
-+#include "bool.h"
- #include "xmldef.h"
- #include "xmltok.h"
- #include "nametab.h"
-@@ -357,31 +358,48 @@ static const struct normal_encoding internal_utf8_encoding = {
-   STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
- };
--static
--void latin1_toUtf8(const ENCODING *enc ATTR_UNUSED,
--                 const char **fromP, const char *fromLim,
--                 char **toP, const char *toLim)
--{
--  for (;;) {
--    unsigned char c;
--    if (*fromP == fromLim)
--      break;
--    c = (unsigned char)**fromP;
--    if (c & 0x80) {
--      if (toLim - *toP < 2)
--      break;
--      *(*toP)++ = ((c >> 6) | UTF8_cval2);
--      *(*toP)++ = ((c & 0x3f) | 0x80);
--      (*fromP)++;
--    }
--    else {
--      if (*toP == toLim)
--      break;
--      *(*toP)++ = *(*fromP)++;
-+
-+
-+static void
-+latin1_toUtf8(const ENCODING * const enc ATTR_UNUSED,
-+              const char **    const fromP,
-+              const char *     const fromLim,
-+              char **          const toP,
-+              const char *     const toLim) {
-+/*----------------------------------------------------------------------------
-+   Convert the Latin1 string that starts at *fromP and ends at 'fromLim'
-+   to UTF8 in the buffer that starts at *toP and ends at 'toLim'.
-+
-+   Go from left to right and stop when the output buffer is full.
-+
-+   Note that the buffer can be full while still having a byte left in it
-+   because a Latin1 character may require two bytes of the output buffer.
-+
-+   Leave *fromP and *toP pointing after the last character converted.
-+-----------------------------------------------------------------------------*/
-+    bool bufferIsFull;
-+
-+    for (bufferIsFull = false; *fromP != fromLim && !bufferIsFull;) {
-+        unsigned char const c = (unsigned char)**fromP;
-+        if (c & 0x80) {
-+            if (toLim - *toP < 2)
-+                bufferIsFull = true;
-+            else {
-+                *(*toP)++ = ((c >> 6) | UTF8_cval2);
-+                *(*toP)++ = ((c & 0x3f) | 0x80);
-+                ++(*fromP);
-+            }
-+        } else {
-+            if (*toP == toLim)
-+                bufferIsFull = true;
-+            else
-+                *(*toP)++ = *(*fromP)++;
-+        }
-     }
--  }
- }
-+
-+
- static
- void latin1_toUtf16(const ENCODING *enc ATTR_UNUSED,
-                   const char **fromP, const char *fromLim,
-diff --git a/libs/xmlrpc-c/lib/expat/xmltok/xmltok.dsp b/libs/xmlrpc-c/lib/expat/xmltok/xmltok.dsp
-deleted file mode 100644
-index 58a70ef..0000000
---- a/libs/xmlrpc-c/lib/expat/xmltok/xmltok.dsp
-+++ /dev/null
-@@ -1,259 +0,0 @@
--# Microsoft Developer Studio Project File - Name="xmltok" - Package Owner=<4>
--# Microsoft Developer Studio Generated Build File, Format Version 6.00
--# ** DO NOT EDIT **
--
--# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
--# TARGTYPE "Win32 (x86) Static Library" 0x0104
--
--CFG=xmltok - 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 "xmltok.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 "xmltok.mak" CFG="xmltok - Win32 Release"
--!MESSAGE 
--!MESSAGE Possible choices for configuration are:
--!MESSAGE 
--!MESSAGE "xmltok - Win32 Release" (based on "Win32 (x86) Static Library")
--!MESSAGE "xmltok - Win32 Debug" (based on "Win32 (x86) Static Library")
--!MESSAGE "xmltok - Win32 Release DLL" (based on "Win32 (x86) Dynamic-Link Library")
--!MESSAGE "xmltok - Win32 Debug DLL" (based on "Win32 (x86) Dynamic-Link Library")
--!MESSAGE 
--
--# Begin Project
--# PROP AllowPerConfigDependencies 0
--# PROP Scc_ProjName "xmltok"
--# PROP Scc_LocalPath ".."
--
--!IF  "$(CFG)" == "xmltok - 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\xmltok"
--# PROP Intermediate_Dir "Release\xmltok"
--# PROP Target_Dir "."
--LINK32=link.exe -lib
--MTL=midl.exe
--CPP=cl.exe
--# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /YX /FD /c
--# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\.." /D "NDEBUG" /D "XML_NS" /D XMLTOKAPI=__declspec(dllexport) /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "_MBCS" /D "_LIB" /YX /FD /c
--RSC=rc.exe
--# 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
--
--!ELSEIF  "$(CFG)" == "xmltok - 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\xmltok"
--# PROP Intermediate_Dir "Debug\xmltok"
--# PROP Target_Dir "."
--LINK32=link.exe -lib
--MTL=midl.exe
--CPP=cl.exe
--# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
--# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\.." /D "_DEBUG" /D XMLTOKAPI=__declspec(dllexport) /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "XML_NS" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
--RSC=rc.exe
--# 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
--
--!ELSEIF  "$(CFG)" == "xmltok - Win32 Release DLL"
--
--# PROP BASE Use_MFC 0
--# PROP BASE Use_Debug_Libraries 0
--# PROP BASE Output_Dir ".\ReleaseDLL"
--# PROP BASE Intermediate_Dir ".\ReleaseDLL"
--# PROP BASE Target_Dir "."
--# PROP Use_MFC 0
--# PROP Use_Debug_Libraries 0
--# PROP Output_Dir "ReleaseDLL\xmltok"
--# PROP Intermediate_Dir "ReleaseDLL\xmltok"
--# PROP Ignore_Export_Lib 0
--# PROP Target_Dir "."
--CPP=cl.exe
--# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
--# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\.." /D "NDEBUG" /D "XML_NS" /D XMLTOKAPI=__declspec(dllexport) /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /YX /FD /c
--MTL=midl.exe
--# ADD BASE MTL /nologo /D "NDEBUG" /win32
--# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
--RSC=rc.exe
--# ADD BASE RSC /l 0x809 /d "NDEBUG"
--# ADD RSC /l 0x809 /d "NDEBUG"
--BSC32=bscmake.exe
--# ADD BASE BSC32 /nologo
--# ADD BSC32 /nologo
--LINK32=link.exe
--# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
--# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /entry:"DllMain" /subsystem:windows /dll /machine:I386 /out:"..\..\xmltok.dll" /link50compat
--# SUBTRACT LINK32 /pdb:none
--
--!ELSEIF  "$(CFG)" == "xmltok - Win32 Debug DLL"
--
--# PROP BASE Use_MFC 0
--# PROP BASE Use_Debug_Libraries 1
--# PROP BASE Output_Dir ".\DebugDLL"
--# PROP BASE Intermediate_Dir ".\DebugDLL"
--# PROP BASE Target_Dir "."
--# PROP Use_MFC 0
--# PROP Use_Debug_Libraries 1
--# PROP Output_Dir "DebugDLL\xmltok"
--# PROP Intermediate_Dir "DebugDLL\xmltok"
--# PROP Ignore_Export_Lib 0
--# PROP Target_Dir "."
--CPP=cl.exe
--# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
--# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\.." /D "_DEBUG" /D XMLTOKAPI=__declspec(dllexport) /D "WIN32" /D "_WINDOWS" /D "XML_DTD" /D "XML_NS" /YX /FD /c
--MTL=midl.exe
--# ADD BASE MTL /nologo /D "_DEBUG" /win32
--# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
--RSC=rc.exe
--# ADD BASE RSC /l 0x809 /d "_DEBUG"
--# ADD RSC /l 0x809 /d "_DEBUG"
--BSC32=bscmake.exe
--# ADD BASE BSC32 /nologo
--# ADD BSC32 /nologo
--LINK32=link.exe
--# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
--# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"..\..\xmltokD.dll"
--
--!ENDIF 
--
--# Begin Target
--
--# Name "xmltok - Win32 Release"
--# Name "xmltok - Win32 Debug"
--# Name "xmltok - Win32 Release DLL"
--# Name "xmltok - Win32 Debug DLL"
--# Begin Group "Source Files"
--
--# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
--# Begin Source File
--
--SOURCE=.\dllmain.c
--
--!IF  "$(CFG)" == "xmltok - Win32 Release"
--
--# PROP Exclude_From_Build 1
--
--!ELSEIF  "$(CFG)" == "xmltok - Win32 Debug"
--
--# PROP Exclude_From_Build 1
--
--!ELSEIF  "$(CFG)" == "xmltok - Win32 Release DLL"
--
--!ELSEIF  "$(CFG)" == "xmltok - Win32 Debug DLL"
--
--!ENDIF 
--
--# End Source File
--# Begin Source File
--
--SOURCE=..\gennmtab\gennmtab.c
--
--!IF  "$(CFG)" == "xmltok - Win32 Release"
--
--# PROP Ignore_Default_Tool 1
--
--!ELSEIF  "$(CFG)" == "xmltok - Win32 Debug"
--
--# PROP Ignore_Default_Tool 1
--
--!ELSEIF  "$(CFG)" == "xmltok - Win32 Release DLL"
--
--!ELSEIF  "$(CFG)" == "xmltok - Win32 Debug DLL"
--
--!ENDIF 
--
--# End Source File
--# Begin Source File
--
--SOURCE=.\xmlrole.c
--# End Source File
--# Begin Source File
--
--SOURCE=.\xmltok.c
--# End Source File
--# Begin Source File
--
--SOURCE=.\xmltok_impl.c
--# PROP BASE Exclude_From_Build 1
--# PROP Exclude_From_Build 1
--# End Source File
--# Begin Source File
--
--SOURCE=.\xmltok_ns.c
--# PROP Exclude_From_Build 1
--# End Source File
--# End Group
--# Begin Group "Header Files"
--
--# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
--# Begin Source File
--
--SOURCE=.\asciitab.h
--# End Source File
--# Begin Source File
--
--SOURCE=.\iasciitab.h
--# End Source File
--# Begin Source File
--
--SOURCE=.\latin1tab.h
--# End Source File
--# Begin Source File
--
--SOURCE=.\nametab.h
--# End Source File
--# Begin Source File
--
--SOURCE=.\utf8tab.h
--# End Source File
--# Begin Source File
--
--SOURCE=.\xmldef.h
--# End Source File
--# Begin Source File
--
--SOURCE=.\xmlrole.h
--# End Source File
--# Begin Source File
--
--SOURCE=.\xmltok.h
--# End Source File
--# Begin Source File
--
--SOURCE=.\xmltok_impl.h
--# End Source File
--# End Group
--# Begin Group "Resource Files"
--
--# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
--# End Group
--# End Target
--# End Project
-diff --git a/libs/xmlrpc-c/lib/expat/xmltok/xmltok.h b/libs/xmlrpc-c/lib/expat/xmltok/xmltok.h
-index 453568f..e24a78c 100644
---- a/libs/xmlrpc-c/lib/expat/xmltok/xmltok.h
-+++ b/libs/xmlrpc-c/lib/expat/xmltok/xmltok.h
-@@ -3,17 +3,15 @@ Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
- See the file copying.txt for copying permission.
- */
--#ifndef XmlTok_INCLUDED
--#define XmlTok_INCLUDED 1
-+#ifndef XMLTOK_H_INCLUDED
-+#define XMLTOK_H_INCLUDED
-+
-+#include "xmlrpc-c/c_util.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
--#ifndef XMLTOKAPI
--#define XMLTOKAPI /* as nothing */
--#endif
--
- /* The following token may be returned by XmlContentTok */
- #define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be start of
-                                     illegal ]]> sequence */
-@@ -130,7 +128,7 @@ struct encoding {
-                 const char *, const char *);
-   int (*nameMatchesAscii)(const ENCODING *,
-                         const char *, const char *, const char *);
--  int (*nameLength)(const ENCODING *, const char *);
-+  size_t (*nameLength)(const ENCODING *, const char *);
-   const char *(*skipS)(const ENCODING *, const char *);
-   int (*getAtts)(const ENCODING *enc, const char *ptr,
-                int attsMax, ATTRIBUTE *atts);
-@@ -242,7 +240,8 @@ typedef struct {
-   const ENCODING **encPtr;
- } INIT_ENCODING;
--XMLTOKAPI int
-+XMLRPC_DLLEXPORT
-+int
- xmlrpc_XmlParseXmlDecl(int               const isGeneralTextEntity,
-                        const ENCODING *  const enc,
-                        const char *      const ptr,
-@@ -253,34 +252,42 @@ xmlrpc_XmlParseXmlDecl(int               const isGeneralTextEntity,
-                        const ENCODING ** const namedEncodingPtr,
-                        int *             const standalonePtr);
--XMLTOKAPI const ENCODING *
-+XMLRPC_DLLEXPORT
-+const ENCODING *
- xmlrpc_XmlGetUtf8InternalEncoding(void);
--XMLTOKAPI const ENCODING *
-+XMLRPC_DLLEXPORT
-+const ENCODING *
- xmlrpc_XmlGetUtf16InternalEncoding(void);
--XMLTOKAPI int
-+XMLRPC_DLLEXPORT
-+int
- xmlrpc_XmlInitEncoding(INIT_ENCODING *   const p,
-                        const ENCODING ** const encPtr,
-                        const char *      const name);
--XMLTOKAPI int
-+XMLRPC_DLLEXPORT
-+int
- xmlrpc_XmlUtf8Encode(int    const c,
-                      char * const buf);
--XMLTOKAPI int
-+XMLRPC_DLLEXPORT
-+int
- xmlrpc_XmlUtf16Encode(int              const charNum,
-                       unsigned short * const buf);
--XMLTOKAPI int
-+XMLRPC_DLLEXPORT
-+int
- xmlrpc_XmlSizeOfUnknownEncoding(void);
--XMLTOKAPI ENCODING *
-+XMLRPC_DLLEXPORT
-+ENCODING *
- xmlrpc_XmlInitUnknownEncoding(void * const mem,
-                               int *  const table,
-                               int (*convert)(void *userData, const char *p),
-                               void * const userData);
-+XMLRPC_DLLEXPORT
- int
- xmlrpc_XmlParseXmlDeclNS(int               const isGeneralTextEntity,
-                          const ENCODING *  const enc,
-@@ -292,17 +299,21 @@ xmlrpc_XmlParseXmlDeclNS(int               const isGeneralTextEntity,
-                          const ENCODING ** const namedEncodingPtr,
-                          int *             const standalonePtr);
-+XMLRPC_DLLEXPORT
- int
- xmlrpc_XmlInitEncodingNS(INIT_ENCODING *   const p,
-                          const ENCODING ** const encPtr,
-                          const char *      const name);
-+XMLRPC_DLLEXPORT
- const ENCODING *
- xmlrpc_XmlGetUtf8InternalEncodingNS(void);
-+XMLRPC_DLLEXPORT
- const ENCODING *
- xmlrpc_XmlGetUtf16InternalEncodingNS(void);
-+XMLRPC_DLLEXPORT
- ENCODING *
- xmlrpc_XmlInitUnknownEncodingNS(void * const mem,
-                                 int *  const table,
-diff --git a/libs/xmlrpc-c/lib/expat/xmltok/xmltok_impl.c b/libs/xmlrpc-c/lib/expat/xmltok/xmltok_impl.c
-index cc9bc59..2bbc8db 100644
---- a/libs/xmlrpc-c/lib/expat/xmltok/xmltok_impl.c
-+++ b/libs/xmlrpc-c/lib/expat/xmltok/xmltok_impl.c
-@@ -26,7 +26,7 @@ See the file copying.txt for copying permission.
-   case BT_MALFORM: \
-   case BT_TRAIL: \
-     *(nextTokPtr) = (ptr); \
--    return XML_TOK_INVALID;
-+    return XML_TOK_INVALID
- #define CHECK_NAME_CASE(n, enc, ptr, end, nextTokPtr) \
-    case BT_LEAD ## n: \
-@@ -99,7 +99,7 @@ int PREFIX(scanComment)(const ENCODING *enc, const char *ptr, const char *end,
-     ptr += MINBPC(enc);
-     while (ptr != end) {
-       switch (BYTE_TYPE(enc, ptr)) {
--      INVALID_CASES(ptr, nextTokPtr)
-+          INVALID_CASES(ptr, nextTokPtr);
-       case BT_MINUS:
-       if ((ptr += MINBPC(enc)) == end)
-         return XML_TOK_PARTIAL;
-@@ -244,7 +244,7 @@ int PREFIX(scanPi)(const ENCODING *enc, const char *ptr, const char *end,
-       ptr += MINBPC(enc);
-       while (ptr != end) {
-         switch (BYTE_TYPE(enc, ptr)) {
--        INVALID_CASES(ptr, nextTokPtr)
-+        INVALID_CASES(ptr, nextTokPtr);
-       case BT_QUEST:
-         ptr += MINBPC(enc);
-         if (ptr == end)
-@@ -345,7 +345,7 @@ int PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr, const char *en
-   case BT_LF:
-     *nextTokPtr = ptr + MINBPC(enc);
-     return XML_TOK_DATA_NEWLINE;
--  INVALID_CASES(ptr, nextTokPtr)
-+  INVALID_CASES(ptr, nextTokPtr);
-   default:
-     ptr += MINBPC(enc);
-     break;
-@@ -598,7 +598,7 @@ int PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end,
-         if (t == open)
-           break;
-         switch (t) {
--        INVALID_CASES(ptr, nextTokPtr)
-+        INVALID_CASES(ptr, nextTokPtr);
-         case BT_AMP:
-           {
-             int tok = PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, &ptr);
-@@ -768,103 +768,179 @@ int PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end,
-   return XML_TOK_PARTIAL;
- }
--static
--int PREFIX(contentTok)(const ENCODING *enc, const char *ptr, const char *end,
--                     const char **nextTokPtr)
--{
--  if (ptr == end)
--    return XML_TOK_NONE;
--  if (MINBPC(enc) > 1) {
--    size_t n = end - ptr;
--    if (n & (MINBPC(enc) - 1)) {
--      n &= ~(MINBPC(enc) - 1);
--      if (n == 0)
--      return XML_TOK_PARTIAL;
--      end = ptr + n;
--    }
--  }
--  switch (BYTE_TYPE(enc, ptr)) {
--  case BT_LT:
--    return PREFIX(scanLt)(enc, ptr + MINBPC(enc), end, nextTokPtr);
--  case BT_AMP:
--    return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
--  case BT_CR:
--    ptr += MINBPC(enc);
--    if (ptr == end)
--      return XML_TOK_TRAILING_CR;
--    if (BYTE_TYPE(enc, ptr) == BT_LF)
--      ptr += MINBPC(enc);
--    *nextTokPtr = ptr;
--    return XML_TOK_DATA_NEWLINE;
--  case BT_LF:
--    *nextTokPtr = ptr + MINBPC(enc);
--    return XML_TOK_DATA_NEWLINE;
--  case BT_RSQB:
--    ptr += MINBPC(enc);
--    if (ptr == end)
--      return XML_TOK_TRAILING_RSQB;
--    if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB))
--      break;
--    ptr += MINBPC(enc);
--    if (ptr == end)
--      return XML_TOK_TRAILING_RSQB;
--    if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
--      ptr -= MINBPC(enc);
--      break;
--    }
--    *nextTokPtr = ptr;
--    return XML_TOK_INVALID;
--  INVALID_CASES(ptr, nextTokPtr)
--  default:
--    ptr += MINBPC(enc);
--    break;
--  }
--  while (ptr != end) {
--    switch (BYTE_TYPE(enc, ptr)) {
-+
-+
- #define LEAD_CASE(n) \
-     case BT_LEAD ## n: \
--      if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \
--      *nextTokPtr = ptr; \
--      return XML_TOK_DATA_CHARS; \
--      } \
--      ptr += n; \
--      break;
--    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
--#undef LEAD_CASE
--    case BT_RSQB:
--      if (ptr + MINBPC(enc) != end) {
--       if (!CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_RSQB)) {
--         ptr += MINBPC(enc);
--         break;
--       }
--       if (ptr + 2*MINBPC(enc) != end) {
--         if (!CHAR_MATCHES(enc, ptr + 2*MINBPC(enc), ASCII_GT)) {
--           ptr += MINBPC(enc);
--           break;
--         }
--         *nextTokPtr = ptr + 2*MINBPC(enc);
--         return XML_TOK_INVALID;
--       }
--      }
--      /* fall through */
--    case BT_AMP:
--    case BT_LT:
--    case BT_NONXML:
--    case BT_MALFORM:
--    case BT_TRAIL:
--    case BT_CR:
--    case BT_LF:
--      *nextTokPtr = ptr;
--      return XML_TOK_DATA_CHARS;
--    default:
--      ptr += MINBPC(enc);
--      break;
-+        if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \
-+            *nextTokPtr = ptr; \
-+            return XML_TOK_DATA_CHARS; \
-+        } \
-+        ptr += n; \
-+        break
-+
-+
-+
-+static void
-+PREFIX(chopToWholeCharacters)(const char *  const inputStart,
-+                              const char *  const inputEnd,
-+                              const char ** const choppedEndP) {
-+
-+    if (MINBPC(enc) > 1) {
-+        size_t const length = inputEnd - inputStart;
-+        if (length & (MINBPC(enc) - 1)) {
-+            size_t const roundedLen = length & ~(MINBPC(enc) - 1);
-+            *choppedEndP = inputStart + roundedLen;
-+        } else
-+            *choppedEndP = inputEnd;
-+    } else
-+        *choppedEndP = inputEnd;
-+}
-+
-+
-+
-+static void
-+PREFIX(processBtRsqb)(const ENCODING * const enc ATTR_UNUSED,
-+                      const char *     const start,
-+                      const char *     const end,
-+                      unsigned int *   const countP,
-+                      bool *           const invalidP) {
-+
-+    if (start + MINBPC(enc) < end) {
-+        if (!CHAR_MATCHES(enc, start + MINBPC(enc), ASCII_RSQB)) {
-+            *countP = MINBPC(enc);
-+            *invalidP = false;
-+        } else {
-+            if (start + 2*MINBPC(enc) < end) {
-+                if (!CHAR_MATCHES(enc, start + 2*MINBPC(enc), ASCII_GT)) {
-+                    *countP = MINBPC(enc);
-+                    *invalidP = false;
-+                } else {
-+                    *countP = 2 * MINBPC(enc);
-+                    *invalidP = true;
-+                }
-+            } else {
-+                *countP   = 0;
-+                *invalidP = false;
-+            }
-+        }
-+    } else {
-+        *countP = 0;
-+        *invalidP = false;
-     }
--  }
--  *nextTokPtr = ptr;
--  return XML_TOK_DATA_CHARS;
- }
-+
-+
-+static int
-+PREFIX(contentTok)(const ENCODING * const enc,
-+                   const char *     const inputStart,
-+                   const char *     const inputEnd,
-+                   const char **    const nextTokPtr) {
-+/*----------------------------------------------------------------------------
-+   Parse off a token from the string that starts at 'inputStart' and ends at
-+   'inputEnd'.  Return the class of that token.
-+
-+   Return *nextTokPtr pointing just after the parsed-off token in the string.
-+
-+   Sometimes, there is no token we can parse, so our return value is a
-+   disposition code indicating that situation and *nextTokPtr points to the
-+   beginning of the string.
-+-----------------------------------------------------------------------------*/
-+    if (inputEnd == inputStart) {
-+        *nextTokPtr = inputStart;
-+        return XML_TOK_NONE;
-+    } else {
-+        const char * ptr;
-+        const char * end;
-+            /* The virtual end of the string; we look at only whole
-+               characters; e.g. if there are 2 bytes per character and the
-+               buffer is 9 bytes, we look at only the first 8 and 'end' points
-+               after the 8th byte.
-+            */
-+        PREFIX(chopToWholeCharacters)(inputStart, inputEnd, &end);
-+
-+        if (end == inputStart) {
-+            *nextTokPtr = inputStart;
-+            return XML_TOK_PARTIAL;
-+        }
-+        ptr = inputStart;  /* Start at the beginning */
-+
-+        switch (BYTE_TYPE(enc, ptr)) {
-+        case BT_LT:
-+            return PREFIX(scanLt)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-+        case BT_AMP:
-+            return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-+        case BT_CR:
-+            ptr += MINBPC(enc);
-+            if (ptr == end)
-+                return XML_TOK_TRAILING_CR;
-+            if (BYTE_TYPE(enc, ptr) == BT_LF)
-+                ptr += MINBPC(enc);
-+            *nextTokPtr = ptr;
-+            return XML_TOK_DATA_NEWLINE;
-+        case BT_LF:
-+            *nextTokPtr = ptr + MINBPC(enc);
-+            return XML_TOK_DATA_NEWLINE;
-+        case BT_RSQB:
-+            ptr += MINBPC(enc);
-+            if (ptr == end)
-+                return XML_TOK_TRAILING_RSQB;
-+            if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB))
-+                break;
-+            ptr += MINBPC(enc);
-+            if (ptr == end)
-+                return XML_TOK_TRAILING_RSQB;
-+            if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
-+                ptr -= MINBPC(enc);
-+                break;
-+            }
-+            *nextTokPtr = ptr;
-+            return XML_TOK_INVALID;
-+            INVALID_CASES(ptr, nextTokPtr);
-+        default:
-+            ptr += MINBPC(enc);
-+            break;
-+        }
-+        while (ptr < end) {
-+            switch (BYTE_TYPE(enc, ptr)) {
-+                LEAD_CASE(2);
-+                LEAD_CASE(3);
-+                LEAD_CASE(4);
-+            case BT_RSQB: {
-+                bool invalid;
-+                unsigned int count;
-+                PREFIX(processBtRsqb)(enc, ptr, end, &count, &invalid);
-+                ptr += count;
-+                if (invalid) {
-+                    *nextTokPtr = ptr;
-+                    return XML_TOK_INVALID;
-+                }
-+            }
-+            /* fall through */
-+            case BT_AMP:
-+            case BT_LT:
-+            case BT_NONXML:
-+            case BT_MALFORM:
-+            case BT_TRAIL:
-+            case BT_CR:
-+            case BT_LF:
-+                *nextTokPtr = ptr;
-+                return XML_TOK_DATA_CHARS;
-+            default:
-+                ptr += MINBPC(enc);
-+                break;
-+            }
-+        }
-+        *nextTokPtr = ptr;
-+        return XML_TOK_DATA_CHARS;
-+    }
-+}
-+
-+#undef LEAD_CASE
-+
-+
-+
- /* ptr points to character following "%" */
- static
-@@ -931,7 +1007,7 @@ int PREFIX(scanLit)(int open, const ENCODING *enc,
-   while (ptr != end) {
-     int t = BYTE_TYPE(enc, ptr);
-     switch (t) {
--    INVALID_CASES(ptr, nextTokPtr)
-+    INVALID_CASES(ptr, nextTokPtr);
-     case BT_QUOT:
-     case BT_APOS:
-       ptr += MINBPC(enc);
-@@ -1305,7 +1381,7 @@ int PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, const char *e
-   }
-   while (ptr != end) {
-     switch (BYTE_TYPE(enc, ptr)) {
--    INVALID_CASES(ptr, nextTokPtr)
-+    INVALID_CASES(ptr, nextTokPtr);
-     case BT_LT:
-       if ((ptr += MINBPC(enc)) == end)
-       return XML_TOK_PARTIAL;
-@@ -1664,30 +1740,38 @@ int PREFIX(nameMatchesAscii)(const ENCODING * enc ATTR_UNUSED,
-   return ptr1 == end1;
- }
--static
--int PREFIX(nameLength)(const ENCODING *enc, const char *ptr)
--{
--  const char *start = ptr;
--  for (;;) {
--    switch (BYTE_TYPE(enc, ptr)) {
--#define LEAD_CASE(n) \
--    case BT_LEAD ## n: ptr += n; break;
--    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
--#undef LEAD_CASE
--    case BT_NONASCII:
--    case BT_NMSTRT:
--    case BT_COLON:
--    case BT_HEX:
--    case BT_DIGIT:
--    case BT_NAME:
--    case BT_MINUS:
--      ptr += MINBPC(enc);
--      break;
--    default:
--      return ptr - start;
-+
-+
-+#define LEAD_CASE(n) case BT_LEAD ## n: ptr += n; break
-+
-+static size_t
-+PREFIX(nameLength)(const ENCODING * const enc,
-+                   const char *     const start) {
-+
-+    const char * ptr;
-+
-+    for (ptr = start;;) {
-+        switch (BYTE_TYPE(enc, ptr)) {
-+        LEAD_CASE(2);
-+        LEAD_CASE(3);
-+        LEAD_CASE(4);
-+        case BT_NONASCII:
-+        case BT_NMSTRT:
-+        case BT_COLON:
-+        case BT_HEX:
-+        case BT_DIGIT:
-+        case BT_NAME:
-+        case BT_MINUS:
-+            ptr += MINBPC(enc);
-+            break;
-+        default:
-+            return ptr - start;
-+        }
-     }
--  }
- }
-+#undef LEAD_CASE
-+
-+
- static
- const char *PREFIX(skipS)(const ENCODING *enc, const char *ptr)
-@@ -1705,40 +1789,49 @@ const char *PREFIX(skipS)(const ENCODING *enc, const char *ptr)
-   }
- }
--static
--void PREFIX(updatePosition)(const ENCODING *enc,
--                          const char *ptr,
--                          const char *end,
--                          POSITION *pos)
--{
--  while (ptr != end) {
--    switch (BYTE_TYPE(enc, ptr)) {
-+
-+
- #define LEAD_CASE(n) \
-     case BT_LEAD ## n: \
-       ptr += n; \
--      break;
--    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
--#undef LEAD_CASE
--    case BT_LF:
--      pos->columnNumber = (unsigned)-1;
--      pos->lineNumber++;
--      ptr += MINBPC(enc);
--      break;
--    case BT_CR:
--      pos->lineNumber++;
--      ptr += MINBPC(enc);
--      if (ptr != end && BYTE_TYPE(enc, ptr) == BT_LF)
--      ptr += MINBPC(enc);
--      pos->columnNumber = (unsigned)-1;
--      break;
--    default:
--      ptr += MINBPC(enc);
--      break;
-+      break
-+
-+static void
-+PREFIX(updatePosition)(const ENCODING * const enc,
-+                       const char *     const start,
-+                       const char *     const end,
-+                       POSITION *       const posP) {
-+
-+    const char * ptr;
-+
-+    for (ptr = start; ptr < end;) {
-+        switch (BYTE_TYPE(enc, ptr)) {
-+        LEAD_CASE(2);
-+        LEAD_CASE(3);
-+        LEAD_CASE(4);
-+        case BT_LF:
-+            posP->columnNumber = (unsigned)-1;
-+            ++posP->lineNumber;
-+            ptr += MINBPC(enc);
-+            break;
-+        case BT_CR:
-+            ++posP->lineNumber;
-+            ptr += MINBPC(enc);
-+            if (ptr != end && BYTE_TYPE(enc, ptr) == BT_LF)
-+                ptr += MINBPC(enc);
-+            posP->columnNumber = (unsigned)-1;
-+            break;
-+        default:
-+            ptr += MINBPC(enc);
-+            break;
-+        }
-+        ++posP->columnNumber;
-     }
--    pos->columnNumber++;
--  }
- }
-+#undef LEAD_CASE
-+
-+
- #undef DO_LEAD_CASE
- #undef MULTIBYTE_CASES
- #undef INVALID_CASES
-diff --git a/libs/xmlrpc-c/lib/expat/xmlwf/.cvsignore b/libs/xmlrpc-c/lib/expat/xmlwf/.cvsignore
-deleted file mode 100644
-index f3c7a7c..0000000
---- a/libs/xmlrpc-c/lib/expat/xmlwf/.cvsignore
-+++ /dev/null
-@@ -1 +0,0 @@
--Makefile
-diff --git a/libs/xmlrpc-c/lib/expat/xmlwf/xmlfile.c b/libs/xmlrpc-c/lib/expat/xmlwf/xmlfile.c
-index 5b3b978..8675790 100644
---- a/libs/xmlrpc-c/lib/expat/xmlwf/xmlfile.c
-+++ b/libs/xmlrpc-c/lib/expat/xmlwf/xmlfile.c
-@@ -17,7 +17,7 @@ See the file copying.txt for copying permission.
- #include <io.h>
- #endif
--#ifdef _POSIX_SOURCE
-+#ifdef _XOPEN_SOURCE 600
- #include <unistd.h>
- #endif
-diff --git a/libs/xmlrpc-c/lib/libutil/Makefile b/libs/xmlrpc-c/lib/libutil/Makefile
-index 7c75a37..5e53b47 100644
---- a/libs/xmlrpc-c/lib/libutil/Makefile
-+++ b/libs/xmlrpc-c/lib/libutil/Makefile
-@@ -1,7 +1,9 @@
- ###############################################################################
- # This directory builds libxmlrpc_util, which contains utility
--# functions that are used by the Xmlprc-c # libraries, and also
--# directly by Xmlrpc-c programs.
-+# functions that are used by the Xmlprc-c libraries, and also
-+# directly by Xmlrpc-c programs.  Some of them are documented for use
-+# by Xmlrpc-c users, as facilities of the libxmlrpc library (which
-+# prerequires libxmlrpc_util).
- #
- # The functions in this library are characterized by being general purpose
- # programming functions, such as one might wish were in the standard C
-@@ -29,11 +31,13 @@ SHARED_LIBS_TO_INSTALL := libxmlrpc_util
- TARGET_MODS = \
-   asprintf \
-+  base64 \
-   error \
-   make_printable \
-   memblock \
-   select \
-   sleep \
-+  string_number \
-   time \
-   utf8 \
-@@ -43,8 +47,6 @@ MAJ=3
- include $(SRCDIR)/common.mk
--CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
--
- INCLUDES = -I$(BLDDIR) -Isrcdir \
-            -I$(BLDDIR)/include -Isrcdir/include -Isrcdir/lib/util/include
-@@ -53,17 +55,13 @@ UTIL_SHLIB = $(call shlibfn,libxmlrpc_util)
- UTIL_SHLIBLE = $(call shliblefn,libxmlrpc_util)
- #UTIL_SHLIBLE is e.g. libxmlrpc_util.so
--ifneq ($(SHARED_LIB_TYPE),NONE)
--  TARGET_SHARED_LIBS := $(UTIL_SHLIB) $(UTIL_SHLIBLE)
--  endif
--
- # This 'common.mk' dependency makes sure the symlinks get built before
- # this make file is used for anything.
- $(SRCDIR)/common.mk: srcdir blddir
- .PHONY: all
--all: libxmlrpc_util.a $(TARGET_SHARED_LIBS) $(TARGET_SHARED_LE_LIBS)
-+all: libxmlrpc_util.a $(TARGET_SHARED_LIBRARIES) $(TARGET_SHARED_LE_LIBS)
- # Rule for this is in common.mk, courtesy of TARGET_LIBRARY_NAMES:
- $(UTIL_SHLIB): $(TARGET_MODS:%=%.osh)
-@@ -92,4 +90,4 @@ distclean: clean distclean-common
- .PHONY: dep
- dep: dep-common
--include Makefile.depend
-+include depend.mk
-diff --git a/libs/xmlrpc-c/lib/libutil/asprintf.c b/libs/xmlrpc-c/lib/libutil/asprintf.c
-index 9e5a614..b525230 100644
---- a/libs/xmlrpc-c/lib/libutil/asprintf.c
-+++ b/libs/xmlrpc-c/lib/libutil/asprintf.c
-@@ -1,10 +1,61 @@
--//#define _GNU_SOURCE
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
-+#ifndef _GNU_SOURCE
-+      #define _GNU_SOURCE  /* But only when HAVE_ASPRINTF */
-+#endif
-+#include <stdarg.h>
-+
- #include <stdarg.h>
- #include <stdio.h>
- #include <stdlib.h>
-+#include <limits.h>
- #include "xmlrpc_config.h"  /* For HAVE_ASPRINTF, __inline__ */
- #include "xmlrpc-c/string_int.h"
-+#include "bool.h"
-+
-+
-+
-+static __inline__ void
-+newVsnprintf(char *       const buffer,
-+             size_t       const bufferSize,
-+             const char * const fmt,
-+             va_list            varargs,
-+             size_t *     const formattedSizeP) {
-+/*----------------------------------------------------------------------------
-+   This is vsnprintf() with the new behavior, where not fitting in the buffer
-+   is not a failure.
-+
-+   Unfortunately, we can't practically return the size of the formatted string
-+   if the C library has old vsnprintf() and the formatted string doesn't fit
-+   in the buffer, so in that case we just return something larger than the
-+   buffer.
-+-----------------------------------------------------------------------------*/
-+    if (bufferSize > INT_MAX/2) {
-+        /* There's a danger we won't be able to coerce the return value
-+           of XMLRPC_VSNPRINTF to an integer (which we have to do because,
-+           while for POSIX its return value is ssize_t, on Windows it is int),
-+           or return double the buffer size.
-+        */
-+        *formattedSizeP = 0;
-+    } else {
-+        int rc;
-+
-+        rc = XMLRPC_VSNPRINTF(buffer, bufferSize, fmt, varargs);
-+
-+        if (rc < 0) {
-+            /* We have old vsnprintf() (or Windows) and the formatted value
-+               doesn't fit in the buffer, but we don't know how big a buffer it
-+               needs.
-+            */
-+            *formattedSizeP = bufferSize * 2;
-+        } else {
-+            /* Either the string fits in the buffer or we have new vsnprintf()
-+               which tells us how big the string is regardless.
-+            */
-+            *formattedSizeP = rc;
-+        }
-+    }
-+}
-@@ -15,29 +66,24 @@ simpleVasprintf(char **      const retvalP,
- /*----------------------------------------------------------------------------
-    This is a poor man's implementation of vasprintf(), of GNU fame.
- -----------------------------------------------------------------------------*/
--    size_t const initialSize = 4096;
-     char * result;
--
--    result = malloc(initialSize);
--    if (result != NULL) {
--        size_t bytesNeeded;
--        bytesNeeded = XMLRPC_VSNPRINTF(result, initialSize, fmt, varargs);
--        if (bytesNeeded > initialSize) {
--            free(result);
--            result = malloc(bytesNeeded);
--            if (result != NULL)
--                XMLRPC_VSNPRINTF(result, bytesNeeded, fmt, varargs);
--        } else if (bytesNeeded == initialSize) {
--            if (result[initialSize-1] != '\0') {
--                /* This is one of those old systems where vsnprintf()
--                   returns the number of bytes it used, instead of the
--                   number that it needed, and it in fact needed more than
--                   we gave it.  Rather than mess with this highly unlikely
--                   case (old system and string > 4095 characters), we just
--                   treat this like an out of memory failure.
--                */
-+    size_t bufferSize;
-+    bool outOfMemory;
-+
-+    for (result = NULL, bufferSize = 4096, outOfMemory = false;
-+         !result && !outOfMemory;
-+        ) {
-+
-+        result = malloc(bufferSize);
-+        if (!result)
-+            outOfMemory = true;
-+        else {
-+            size_t bytesNeeded;
-+            newVsnprintf(result, bufferSize, fmt, varargs, &bytesNeeded);
-+            if (bytesNeeded > bufferSize) {
-                 free(result);
-                 result = NULL;
-+                bufferSize = bytesNeeded;
-             }
-         }
-     }
-@@ -46,7 +92,28 @@ simpleVasprintf(char **      const retvalP,
--const char * const xmlrpc_strsol = "[insufficient memory to build string]";
-+static const char * const xmlrpc_strsol =
-+    "[insufficient memory to build string]";
-+
-+
-+
-+bool
-+xmlrpc_strnomem(const char * const string) {
-+/*----------------------------------------------------------------------------
-+   The string 'string' was generated by a function in this file because it
-+   couldn't get enough memory to generate the string that it was supposed to
-+   generate.  I.e. a preceding call to a string function failed.
-+-----------------------------------------------------------------------------*/
-+    return string == xmlrpc_strsol;
-+}
-+
-+
-+
-+const char *
-+xmlrpc_strnomemval() {
-+
-+    return xmlrpc_strsol;
-+}
-@@ -71,7 +138,7 @@ xmlrpc_vasprintf(const char ** const retvalP,
--void GNU_PRINTF_ATTR(2,3)
-+void XMLRPC_PRINTF_ATTR(2,3)
- xmlrpc_asprintf(const char ** const retvalP, const char * const fmt, ...) {
-     va_list varargs;  /* mysterious structure used by variable arg facility */
-@@ -86,12 +153,13 @@ xmlrpc_asprintf(const char ** const retvalP, const char * const fmt, ...) {
- const char *
--xmlrpc_strdupnull(const char * const string) {
-+xmlrpc_strdupsol(const char * const string) {
--    if (string)
--        return strdup(string);
--    else
--        return NULL;
-+    const char * retvalOrNull;
-+
-+    retvalOrNull = strdup(string);
-+
-+    return retvalOrNull ? retvalOrNull : xmlrpc_strsol;
- }
-@@ -105,6 +173,17 @@ xmlrpc_strfree(const char * const string) {
-+const char *
-+xmlrpc_strdupnull(const char * const string) {
-+
-+    if (string)
-+        return strdup(string);
-+    else
-+        return NULL;
-+}
-+
-+
-+
- void
- xmlrpc_strfreenull(const char * const string) {
-diff --git a/libs/xmlrpc-c/lib/libutil/base64.c b/libs/xmlrpc-c/lib/libutil/base64.c
-new file mode 100644
-index 0000000..9376eee
---- /dev/null
-+++ b/libs/xmlrpc-c/lib/libutil/base64.c
-@@ -0,0 +1,49 @@
-+#include <string.h>
-+
-+#include "int.h"
-+#include "xmlrpc-c/base64_int.h"
-+
-+
-+
-+void
-+xmlrpc_base64Encode(const char * const chars,
-+                    char *       const base64) {
-+
-+    /* Conversion table. */
-+    static char tbl[64] = {
-+        'A','B','C','D','E','F','G','H',
-+        'I','J','K','L','M','N','O','P',
-+        'Q','R','S','T','U','V','W','X',
-+        'Y','Z','a','b','c','d','e','f',
-+        'g','h','i','j','k','l','m','n',
-+        'o','p','q','r','s','t','u','v',
-+        'w','x','y','z','0','1','2','3',
-+        '4','5','6','7','8','9','+','/'
-+    };
-+
-+    unsigned int i;
-+    uint32_t length;
-+    char * p;
-+    const char * s;
-+    
-+    length = strlen(chars);  /* initial value */
-+    s = &chars[0];  /* initial value */
-+    p = &base64[0];  /* initial value */
-+    /* Transform the 3x8 bits to 4x6 bits, as required by base64. */
-+    for (i = 0; i < length; i += 3) {
-+        *p++ = tbl[s[0] >> 2];
-+        *p++ = tbl[((s[0] & 3) << 4) + (s[1] >> 4)];
-+        *p++ = tbl[((s[1] & 0xf) << 2) + (s[2] >> 6)];
-+        *p++ = tbl[s[2] & 0x3f];
-+        s += 3;
-+    }
-+    
-+    /* Pad the result if necessary... */
-+    if (i == length + 1)
-+        *(p - 1) = '=';
-+    else if (i == length + 2)
-+        *(p - 1) = *(p - 2) = '=';
-+    
-+    /* ...and zero-terminate it. */
-+    *p = '\0';
-+}
-diff --git a/libs/xmlrpc-c/lib/libutil/error.c b/libs/xmlrpc-c/lib/libutil/error.c
-index fd964d0..ff3bbe1 100644
---- a/libs/xmlrpc-c/lib/libutil/error.c
-+++ b/libs/xmlrpc-c/lib/libutil/error.c
-@@ -1,5 +1,7 @@
- /* Copyright information is at end of file */
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
-+
- #include "xmlrpc_config.h"
- #include <stdlib.h>
-@@ -86,7 +88,7 @@ void
- xmlrpc_set_fault_formatted_v(xmlrpc_env * const envP,
-                              int          const code,
-                              const char * const format,
--                             va_list      const args) {
-+                             va_list            args) {
-     const char * faultDescription;
-diff --git a/libs/xmlrpc-c/lib/libutil/make_printable.c b/libs/xmlrpc-c/lib/libutil/make_printable.c
-index fc94f78..444a733 100644
---- a/libs/xmlrpc-c/lib/libutil/make_printable.c
-+++ b/libs/xmlrpc-c/lib/libutil/make_printable.c
-@@ -1,4 +1,4 @@
--//#define _GNU_SOURCE
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
- #include <stdarg.h>
- #include <string.h>
-diff --git a/libs/xmlrpc-c/lib/libutil/memblock.c b/libs/xmlrpc-c/lib/libutil/memblock.c
-index d79d4ca..f0119a8 100644
---- a/libs/xmlrpc-c/lib/libutil/memblock.c
-+++ b/libs/xmlrpc-c/lib/libutil/memblock.c
-@@ -6,6 +6,7 @@
- #include <string.h>
- #include <ctype.h>
-+#include "mallocvar.h"
- #include "xmlrpc-c/util_int.h"
- #include "xmlrpc-c/util.h"
-@@ -19,30 +20,30 @@
- xmlrpc_mem_block * 
--xmlrpc_mem_block_new(xmlrpc_env * const env, 
-+xmlrpc_mem_block_new(xmlrpc_env * const envP, 
-                      size_t       const size) {
--    xmlrpc_mem_block* block;
-+    xmlrpc_mem_block * block;
--    XMLRPC_ASSERT_ENV_OK(env);
--
--    block = (xmlrpc_mem_block*) malloc(sizeof(xmlrpc_mem_block));
--    XMLRPC_FAIL_IF_NULL(block, env, XMLRPC_INTERNAL_ERROR,
--                        "Can't allocate memory block");
-+    XMLRPC_ASSERT_ENV_OK(envP);
--    xmlrpc_mem_block_init(env, block, size);
--    XMLRPC_FAIL_IF_FAULT(env);
-+    MALLOCVAR(block);
-+    
-+    if (block == NULL)
-+        xmlrpc_faultf(envP, "Can't allocate memory block");
-+    else {
-+        xmlrpc_mem_block_init(envP, block, size);
--                     cleanup:
--    if (env->fault_occurred) {
--        if (block)
-+        if (envP->fault_occurred) {
-             free(block);
--        return NULL;
--    } else {
--        return block;
-+            block = NULL;
-+        }
-     }
-+    return block;
- }
-+
-+
- /* Destroy an existing xmlrpc_mem_block, and everything it contains. */
- void
- xmlrpc_mem_block_free(xmlrpc_mem_block * const blockP) {
-@@ -74,7 +75,7 @@ xmlrpc_mem_block_init(xmlrpc_env *       const envP,
-     blockP->_block = (void*) malloc(blockP->_allocated);
-     if (!blockP->_block)
-         xmlrpc_faultf(envP, "Can't allocate %u-byte memory block",
--                      blockP->_allocated);
-+                      (unsigned)blockP->_allocated);
- }
-@@ -170,19 +171,15 @@ xmlrpc_mem_block_append(xmlrpc_env *       const envP,
-                         const void *       const data, 
-                         size_t             const len) {
--    int size;
-+    size_t const originalSize = blockP->_size;
-     XMLRPC_ASSERT_ENV_OK(envP);
-     XMLRPC_ASSERT(blockP != NULL);
--    size = blockP->_size;
--    xmlrpc_mem_block_resize(envP, blockP, size + len);
--    XMLRPC_FAIL_IF_FAULT(envP);
--
--    memcpy(((unsigned char*) blockP->_block) + size, data, len);
--
-- cleanup:
--    return;
-+    xmlrpc_mem_block_resize(envP, blockP, originalSize + len);
-+    if (!envP->fault_occurred) {
-+        memcpy(((unsigned char*) blockP->_block) + originalSize, data, len);
-+    }
- }
-diff --git a/libs/xmlrpc-c/lib/libutil/select.c b/libs/xmlrpc-c/lib/libutil/select.c
-index 8999884..6a390d4 100644
---- a/libs/xmlrpc-c/lib/libutil/select.c
-+++ b/libs/xmlrpc-c/lib/libutil/select.c
-@@ -1,5 +1,7 @@
- #define _XOPEN_SOURCE 600  /* Get pselect() in <sys/select.h> */
-+#include "xmlrpc_config.h"
-+
- #ifdef WIN32
- #include <winsock.h>
- #else
-@@ -8,12 +10,12 @@
-    in this order appears to work on all.
- */
- #include <sys/time.h>
-+#if HAVE_SYS_SELECT_H
- #include <sys/select.h>
-+#endif
- #endif 
- #include <signal.h>
--#include "xmlrpc_config.h"
--
- #include "xmlrpc-c/select_int.h"
-diff --git a/libs/xmlrpc-c/lib/libutil/string_number.c b/libs/xmlrpc-c/lib/libutil/string_number.c
-new file mode 100644
-index 0000000..1c284af
---- /dev/null
-+++ b/libs/xmlrpc-c/lib/libutil/string_number.c
-@@ -0,0 +1,46 @@
-+/*============================================================================
-+                                string_number
-+==============================================================================
-+  This file contains utilities for dealing with text string representation
-+  of numbers.
-+============================================================================*/
-+#include <stdlib.h>
-+#include <string.h>
-+#include <errno.h>
-+
-+#include <xmlrpc-c/base.h>
-+#include <xmlrpc-c/util.h>
-+#include <xmlrpc-c/string_int.h>
-+#include "xmlrpc_config.h"
-+#include "int.h"
-+
-+#include <xmlrpc-c/string_number.h>
-+
-+
-+
-+void
-+xmlrpc_parse_int64(xmlrpc_env *   const envP,
-+                   const char *   const str,
-+                   xmlrpc_int64 * const i64P) {
-+
-+    xmlrpc_int64 i64val;
-+
-+    char * tail;
-+
-+    errno = 0;
-+    i64val = XMLRPC_STRTOLL(str, &tail, 10);
-+
-+    if (errno == ERANGE)
-+        xmlrpc_faultf(envP, "Number cannot be represented in 64 bits.  "
-+                      "Must be in the range "
-+                      "[%" XMLRPC_PRId64 " - %" XMLRPC_PRId64 "]",
-+                      XMLRPC_INT64_MIN, XMLRPC_INT64_MAX);
-+    else if (errno != 0)
-+        xmlrpc_faultf(envP, "unexpected error: "
-+                      "strtoll() failed with errno %d (%s)",
-+                      errno, strerror(errno));
-+    else if (tail[0] != '\0')
-+        xmlrpc_faultf(envP, "contains non-numerical junk: '%s'", tail);
-+    else
-+        *i64P = i64val;
-+}
-diff --git a/libs/xmlrpc-c/lib/libutil/utf8.c b/libs/xmlrpc-c/lib/libutil/utf8.c
-index d0de07e..77e436d 100644
---- a/libs/xmlrpc-c/lib/libutil/utf8.c
-+++ b/libs/xmlrpc-c/lib/libutil/utf8.c
-@@ -38,6 +38,7 @@
- **    http://www.cl.cam.ac.uk/~mgk25/unicode.html
- */
-+#include <assert.h>
- #include "int.h"
- #include "xmlrpc_config.h"
-@@ -51,31 +52,33 @@
- **  UTF-8 data.
- */
--/* The number of bytes in a UTF-8 sequence starting with the character used
--** as the array index.  A zero entry indicates an illegal initial byte.
--** This table was generated using a Perl script and information from the
--** UTF-8 standard.
--**
--** Fredrik Lundh's UTF-8 decoder Python 2.0 uses a similar table.  But
--** since Python 2.0 has the icky CNRI license, I regenerated this
--** table from scratch and wrote my own decoder. */
--static unsigned char utf8_seq_length[256] = {
--    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
--    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
--    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
--    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
--    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
--    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
--    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
--    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
--    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
--    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
--    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
--    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
--    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
--    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
--    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
--    4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 0, 0
-+static unsigned char utf8SeqLength[256] = {
-+
-+  /* utf8SeqLength[B] is the number of bytes in a UTF-8 sequence that starts
-+     with byte B.  Except zero indicates an illegal initial byte.
-+
-+     Fredrik Lundh's UTF-8 decoder Python 2.0 uses a similar table.  But since
-+     Python 2.0 has the icky CNRI license, I generated this table from scratch
-+     and wrote my own decoder.
-+  */
-+
-+          /* 0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  */
-+  /* 0 */    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-+  /* 1 */    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-+  /* 2 */    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-+  /* 3 */    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-+  /* 4 */    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-+  /* 5 */    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-+  /* 6 */    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-+  /* 7 */    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-+  /* 8 */    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+  /* 9 */    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+  /* A */    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+  /* B */    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-+  /* C */    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+  /* D */    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+  /* E */    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-+  /* F */    4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 0, 0
- };
- /* The minimum legal character value for a UTF-8 sequence of the given
-@@ -118,14 +121,129 @@ static uint32_t const utf8_min_char_for_length[] = {
- #if HAVE_UNICODE_WCHAR
-+static void
-+validateContinuation(xmlrpc_env * const envP,
-+                     char         const c) {
-+
-+    if (!IS_CONTINUATION(c))
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_INVALID_UTF8_ERROR,
-+            "UTF-8 multibyte sequence contains character 0x%02x, "
-+            "which does not indicate continuation.", c);
-+}
-+
-+
-+
-+static void
-+validateUtf16(xmlrpc_env * const envP,
-+              wchar_t      const wc) {
-+
-+    if (wc > UCS2_MAX_LEGAL_CHARACTER)
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_INVALID_UTF8_ERROR,
-+            "UCS-2 characters > U+FFFD are illegal.  String contains 0x%04x",
-+            (unsigned)wc);
-+    else if (UTF16_FIRST_SURROGATE <= wc && wc <= UTF16_LAST_SURROGATE)
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_INVALID_UTF8_ERROR,
-+            "UTF-16 surrogates may not appear in UTF-8 data.  "
-+            "String contains %04x", (unsigned)wc);
-+}
-+
-+
-+
-+/* Microsoft Visual C in debug mode produces code that complains about
-+   returning an undefined value from xmlrpc_datetime_new_str().  It's a bogus
-+   complaint, because this function is defined to return nothing meaningful
-+   those cases.  So we disable the check.
-+*/
-+#pragma runtime_checks("u", off)
-+
-+static void
-+decodeMultibyte(xmlrpc_env * const envP,
-+                const char * const utf8_seq,
-+                size_t       const length,
-+                wchar_t *    const wcP) {
-+/*----------------------------------------------------------------------------
-+   Decode the multibyte UTF-8 sequence which is 'length' characters
-+   at 'utf8_data'.
-+
-+   Return the character in UTF-16 format as *wcP.
-+-----------------------------------------------------------------------------*/
-+    wchar_t wc;
-+
-+    assert(utf8_seq[0] & 0x80); /* High bit set: this is multibyte seq */
-+
-+    switch (length) {
-+    case 2:
-+        /* 110xxxxx 10xxxxxx */
-+        validateContinuation(envP, utf8_seq[1]);
-+
-+        if (!envP->fault_occurred)
-+            wc = ((((wchar_t) (utf8_seq[0] & 0x1F)) <<  6) |
-+                  (((wchar_t) (utf8_seq[1] & 0x3F))));
-+        break;
-+                
-+    case 3:
-+        /* 1110xxxx 10xxxxxx 10xxxxxx */
-+        validateContinuation(envP, utf8_seq[1]);
-+        if (!envP->fault_occurred) {
-+            validateContinuation(envP, utf8_seq[2]);
-+            if (!envP->fault_occurred)
-+                wc = ((((wchar_t) (utf8_seq[0] & 0x0F)) << 12) |
-+                      (((wchar_t) (utf8_seq[1] & 0x3F)) <<  6) |
-+                      (((wchar_t) (utf8_seq[2] & 0x3F))));
-+        }
-+        break;
-+
-+    case 4:
-+        /* 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */
-+    case 5:
-+        /* 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */
-+    case 6:
-+        /* 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */
-+        /* This would require more than 16 bits in UTF-16, so
-+           it can't be represented in UCS-2, so it's beyond
-+           our capability.  Characters in the BMP fit in 16
-+           bits.
-+        */
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_INVALID_UTF8_ERROR,
-+            "UTF-8 string contains a character not in the "
-+            "Basic Multilingual Plane (first byte 0x%02x)",
-+            utf8_seq[0]);
-+        break;
-+
-+    default:
-+        xmlrpc_faultf(envP,
-+                      "Internal error: Impossible UTF-8 sequence length %u",
-+                      (unsigned)length);
-+    }
-+
-+    if (!envP->fault_occurred)
-+        validateUtf16(envP, wc);
-+
-+    if (!envP->fault_occurred)
-+        if ((uint32_t)wc < utf8_min_char_for_length[length])
-+            xmlrpc_env_set_fault_formatted(
-+                envP, XMLRPC_INVALID_UTF8_ERROR,
-+                "Overlong UTF-8 sequence not allowed");
-+
-+    *wcP = wc;
-+}
-+
-+#pragma runtime_checks("u", restore)
-+
-+
-+
- static void 
--decode_utf8(xmlrpc_env * const envP,
--            const char * const utf8_data,
--            size_t       const utf8_len,
--            wchar_t *    const ioBuff,
--            size_t *     const outBuffLenP) {
-+decodeUtf8(xmlrpc_env * const envP,
-+           const char * const utf8_data,
-+           size_t       const utf8_len,
-+           wchar_t *    const ioBuff,
-+           size_t *     const outBuffLenP) {
- /*----------------------------------------------------------------------------
--  Decode to UCS-2 (or validates as UTF-8 that can be decoded to UCS-2)
-+  Decode to UCS-2 (or validate as UTF-8 that can be decoded to UCS-2)
-   a UTF-8 string.  To validate, set ioBuff and outBuffLenP to NULL.
-   To decode, allocate a sufficiently large buffer, pass it as ioBuff,
-   and pass a pointer as as outBuffLenP.  The data will be written to
-@@ -134,132 +252,60 @@ decode_utf8(xmlrpc_env * const envP,
-   We assume that wchar_t holds a single UCS-2 character in native-endian
-   byte ordering.
- -----------------------------------------------------------------------------*/
--    size_t i, length, out_pos;
--    char init, con1, con2;
--    wchar_t wc;
-+    size_t utf8Cursor;
-+    size_t outPos;
-     XMLRPC_ASSERT_ENV_OK(envP);
-     XMLRPC_ASSERT_PTR_OK(utf8_data);
--    XMLRPC_ASSERT((!ioBuff && !outBuffLenP) ||
--                  (ioBuff && outBuffLenP));
-+    XMLRPC_ASSERT((!ioBuff && !outBuffLenP) || (ioBuff && outBuffLenP));
-+
-+    for (utf8Cursor = 0, outPos = 0;
-+         utf8Cursor < utf8_len && !envP->fault_occurred;
-+        ) {
--    /* Suppress GCC warning about possibly undefined variable. */
--    wc = 0;
-+        char const init = utf8_data[utf8Cursor];
-+            /* Initial byte of the UTF-8 sequence */
-+
-+        wchar_t wc;
--    i = 0;
--    out_pos = 0;
--    while (i < utf8_len) {
--        init = utf8_data[i];
-         if ((init & 0x80) == 0x00) {
-             /* Convert ASCII character to wide character. */
-             wc = init;
--            i++;
-+            ++utf8Cursor;
-         } else {
-             /* Look up the length of this UTF-8 sequence. */
--            length = utf8_seq_length[(unsigned char) init];
--            
--            /* Check to make sure we have enough bytes to convert. */
--            if (i + length > utf8_len)
--                XMLRPC_FAIL(envP, XMLRPC_INVALID_UTF8_ERROR,
--                            "Truncated UTF-8 sequence");
--            
--            /* Decode a multibyte UTF-8 sequence. */
--            switch (length) {
--            case 0:
--                XMLRPC_FAIL(envP, XMLRPC_INVALID_UTF8_ERROR,
--                            "Invalid UTF-8 initial byte");
--                
--            case 2:
--                /* 110xxxxx 10xxxxxx */
--                con1 = utf8_data[i+1];
--                if (!IS_CONTINUATION(con1))
--                    XMLRPC_FAIL(envP, XMLRPC_INVALID_UTF8_ERROR,
--                                "UTF-8 sequence too short");
--                wc = ((((wchar_t) (init & 0x1F)) <<  6) |
--                      (((wchar_t) (con1 & 0x3F))));
--                break;
--                
--            case 3:
--                /* 1110xxxx 10xxxxxx 10xxxxxx */
--                con1 = utf8_data[i+1];
--                con2 = utf8_data[i+2];
--                if (!IS_CONTINUATION(con1) || !IS_CONTINUATION(con2))
--                    XMLRPC_FAIL(envP, XMLRPC_INVALID_UTF8_ERROR,
--                                "UTF-8 sequence too short");
--                wc = ((((wchar_t) (init & 0x0F)) << 12) |
--                      (((wchar_t) (con1 & 0x3F)) <<  6) |
--                      (((wchar_t) (con2 & 0x3F))));
--                break;
--                
--            case 4:
--                /* 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */
--            case 5:
--                /* 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */
--            case 6:
--                /* 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */
--                /* This would require more than 16 bits in UTF-16, so
--                   it can't be represented in UCS-2, so it's beyond
--                   our capability.  Characters in the BMP fit in 16
--                   bits.
--                */
-+            size_t const length = utf8SeqLength[(unsigned char) init];
-+
-+            if (length == 0)
-                 xmlrpc_env_set_fault_formatted(
-                     envP, XMLRPC_INVALID_UTF8_ERROR,
--                    "UTF-8 string contains a character not in the "
--                    "Basic Multilingual Plane (first byte %08x)",
--                    init);
--                goto cleanup;
--                
--            default:
--                XMLRPC_ASSERT("Error in UTF-8 decoder tables");
-+                    "Unrecognized UTF-8 initial byte value 0x%02x", init);
-+            else {
-+                /* Make sure we have enough bytes to convert. */
-+                if (utf8Cursor + length > utf8_len) {
-+                    xmlrpc_env_set_fault_formatted(
-+                        envP, XMLRPC_INVALID_UTF8_ERROR,
-+                        "Invalid UTF-8 sequence indicates a %u-byte sequence "
-+                        "when only %u bytes are left in the string",
-+                        (unsigned)length, (unsigned)(utf8_len - utf8Cursor));
-+                } else {
-+                    decodeMultibyte(envP, &utf8_data[utf8Cursor], length, &wc);
-+                    
-+                    /* Advance to the end of the sequence. */
-+                    utf8Cursor += length;
-+                }
-             }
--            
--            /* Advance to the end of the sequence. */
--            i += length;
--            
--            /* Check for illegal UCS-2 characters. */
--            if (wc > UCS2_MAX_LEGAL_CHARACTER)
--                XMLRPC_FAIL(envP, XMLRPC_INVALID_UTF8_ERROR,
--                            "UCS-2 characters > U+FFFD are illegal");
--            
--            /* Check for UTF-16 surrogates. */
--            if (UTF16_FIRST_SURROGATE <= wc && wc <= UTF16_LAST_SURROGATE)
--                XMLRPC_FAIL(envP, XMLRPC_INVALID_UTF8_ERROR,
--                            "UTF-16 surrogates may not appear in UTF-8 data");
--            
--            /* Check for overlong sequences. */
--            if ((uint32_t)wc < utf8_min_char_for_length[length])
--                XMLRPC_FAIL(envP, XMLRPC_INVALID_UTF8_ERROR,
--                            "Overlong UTF-8 sequence not allowed");
-         }
--        
--        /* If we have a buffer, write our character to it. */
--        if (ioBuff) {
--            ioBuff[out_pos++] = wc;
-+
-+        if (!envP->fault_occurred) {
-+            /* If we have a buffer, write our character to it. */
-+            if (ioBuff)
-+                ioBuff[outPos++] = wc;
-         }
-     }
--    
--    /* Record the number of characters we found. */
--    if (outBuffLenP)
--        *outBuffLenP = out_pos;
--    
--            cleanup:
--    if (envP->fault_occurred) {
--        if (outBuffLenP)
--            *outBuffLenP = 0;
--    }
--}
--
--
--void 
--xmlrpc_validate_utf8(xmlrpc_env * const env,
--                     const char * const utf8_data,
--                     size_t       const utf8_len) {
--/*----------------------------------------------------------------------------
--   Validate that a string is valid UTF-8.
-------------------------------------------------------------------------------*/
--
--    decode_utf8(env, utf8_data, utf8_len, NULL, NULL);
-+    if (outBuffLenP)
-+        *outBuffLenP = envP->fault_occurred ? 0 : outPos;
- }
-@@ -286,9 +332,9 @@ xmlrpc_utf8_to_wcs(xmlrpc_env * const envP,
-     wcsP = XMLRPC_MEMBLOCK_NEW(wchar_t, envP, utf8_len);
-     if (!envP->fault_occurred) {
-         /* Decode the UTF-8 data. */
--        decode_utf8(envP, utf8_data, utf8_len,
--                    XMLRPC_MEMBLOCK_CONTENTS(wchar_t, wcsP),
--                    &wcs_length);
-+        decodeUtf8(envP, utf8_data, utf8_len,
-+                   XMLRPC_MEMBLOCK_CONTENTS(wchar_t, wcsP),
-+                   &wcs_length);
-         if (!envP->fault_occurred) {
-             /* We can't have overrun our buffer. */
-             XMLRPC_ASSERT(wcs_length <= utf8_len);
-@@ -329,7 +375,8 @@ xmlrpc_wcs_to_utf8(xmlrpc_env *    const envP,
-     utf8P = XMLRPC_MEMBLOCK_NEW(char, envP, estimate);
-     if (!envP->fault_occurred) {
--        unsigned char * const buffer = XMLRPC_MEMBLOCK_CONTENTS(char, utf8P);
-+        unsigned char * const buffer =
-+            XMLRPC_MEMBLOCK_CONTENTS(unsigned char, utf8P);
-         size_t bytesUsed;
-         size_t i;
-@@ -401,13 +448,12 @@ xmlrpc_force_to_utf8(char * const buffer) {
-     char * p;
-     for (p = &buffer[0]; *p;) {
--        uint const length = utf8_seq_length[(unsigned char) *p];
-+        unsigned int const length = utf8SeqLength[(unsigned char) *p];
-         bool forceDel;
-         uint32_t decoded;
--        forceDel = false;
--        decoded  = 0;  /* suppress compiler warning; valid when !forceDel */
-+        forceDel = false;  /* initial value */
-         switch (length) {
-         case 1:
-@@ -482,7 +528,7 @@ xmlrpc_force_to_xml_chars(char * const buffer) {
-     char * p;
-     for (p = &buffer[0]; *p;) {
--        uint const length = utf8_seq_length[(unsigned char) *p];
-+        unsigned int const length = utf8SeqLength[(unsigned char) *p];
-         if (length == 1) {
-             if (*p < 0x20 && *p != '\r' && *p != '\n' && *p != '\t')
-@@ -505,7 +551,31 @@ xmlrpc_force_to_xml_chars(char * const buffer) {
-+void 
-+xmlrpc_validate_utf8(xmlrpc_env * const envP,
-+                     const char * const utf8_data,
-+                     size_t       const utf8_len) {
-+/*----------------------------------------------------------------------------
-+   Validate that a string is valid UTF-8.
-+-----------------------------------------------------------------------------*/
-+    xmlrpc_env env;
-+    xmlrpc_env_init(&env);
--
--
-+#if HAVE_UNICODE_WCHAR
-+    decodeUtf8(&env, utf8_data, utf8_len, NULL, NULL);
-+#else
-+    /* We don't have a convenient way to validate, so we just fake it and
-+       call it valid.
-+    */
-+#endif
-+
-+    if (env.fault_occurred) {
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_INVALID_UTF8_ERROR,
-+            "%" XMLRPC_PRId64 "-byte "
-+            "supposed UTF-8 string is not valid UTF-8.  %s",
-+            (XMLRPC_INT64)utf8_len, env.fault_string);
-+    }
-+    xmlrpc_env_clean(&env);
-+}
-diff --git a/libs/xmlrpc-c/lib/libwww_transport/Makefile b/libs/xmlrpc-c/lib/libwww_transport/Makefile
-index 1bb362c..c8c51fa 100644
---- a/libs/xmlrpc-c/lib/libwww_transport/Makefile
-+++ b/libs/xmlrpc-c/lib/libwww_transport/Makefile
-@@ -22,15 +22,18 @@ OMIT_LIBWWW_TRANSPORT_RULE=Y
- include $(SRCDIR)/common.mk
--LIBWWW_INCLUDES := $(shell libwww-config --cflags)
-+# This 'common.mk' dependency makes sure the symlinks get built before
-+# this make file is used for anything.
-+
-+$(SRCDIR)/common.mk: srcdir blddir
--CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
-+LIBWWW_INCLUDES := $(shell libwww-config --cflags)
- INCLUDES = \
-   -I$(BLDDIR) \
-   -I$(BLDDIR)/include \
--  -I$(SRCDIR)/include \
--  -I$(SRCDIR)/lib/util/include \
-+  -Isrcdir/include \
-+  -Isrcdir/lib/util/include \
-   $(LIBWWW_INCLUDES)
- .PHONY: clean
-@@ -51,8 +54,8 @@ install:
- .PHONY: dep
- dep: dep-common
--include Makefile.depend
-+include depend.mk
--# Need this dependency for those who don't use Makefile.depend.
-+# Need this dependency for those who don't use depend.mk.
- # Without it, version.h doesn't get created.
- xmlrpc_libwww_transport.o xmlrpc_libwww_transport.osh: version.h
-diff --git a/libs/xmlrpc-c/lib/libwww_transport/Makefile.depend b/libs/xmlrpc-c/lib/libwww_transport/Makefile.depend
-deleted file mode 100644
-index e69de29..0000000
-diff --git a/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.c b/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.c
-index 10866c1..1a0fcc7 100644
---- a/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.c
-+++ b/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.c
-@@ -884,6 +884,7 @@ sendRequest(xmlrpc_env *                     const envP,
-             const xmlrpc_server_info *       const serverP,
-             xmlrpc_mem_block *               const xmlP,
-             xmlrpc_transport_asynch_complete       complete,
-+            xmlrpc_transport_progress              progress ATTR_UNUSED,
-             struct xmlrpc_call_info *        const callInfoP) {
- /*----------------------------------------------------------------------------
-    Initiate an XML-RPC rpc asynchronously.  Don't wait for it to go to
-diff --git a/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.h b/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.h
-deleted file mode 100644
-index 66d8048..0000000
---- a/libs/xmlrpc-c/lib/libwww_transport/xmlrpc_libwww_transport.h
-+++ /dev/null
-@@ -1,8 +0,0 @@
--#ifndef XMLRPC_LIBWWW_TRANSPORT_H
--#define XMLRPC_LIBWWW_TRANSPORT_H
--
--#include "xmlrpc-c/transport.h"
--
--extern struct xmlrpc_client_transport_ops xmlrpc_libwww_transport_ops;
--
--#endif
-diff --git a/libs/xmlrpc-c/lib/util/Makefile b/libs/xmlrpc-c/lib/util/Makefile
-index a061b2e..d79b905 100644
---- a/libs/xmlrpc-c/lib/util/Makefile
-+++ b/libs/xmlrpc-c/lib/util/Makefile
-@@ -33,6 +33,11 @@ OMIT_UTILS_RULE = Y
- include $(SRCDIR)/common.mk
-+# This 'common.mk' dependency makes sure the symlinks get built before
-+# this make file is used for anything.
-+
-+$(SRCDIR)/common.mk: srcdir blddir
-+
- LIBOBJS = \
-   casprintf.o \
-   cmdline_parser.o \
-@@ -44,17 +49,15 @@ LIBOBJS = \
- .PHONY: all
- all: $(LIBOBJS)
--INCLUDES = -I$(SRCDIR)/$(SUBDIR)/include -I$(BLDDIR)
--
--CFLAGS = $(CFLAGS_COMMON) $(INCLUDES) $(CFLAGS_PERSONAL) $(CADD)
-+INCLUDES = -Isrcdir/$(SUBDIR)/include -I$(BLDDIR)
- %.o:%.c
--      $(CC) -c $(CFLAGS) $<
-+      $(CC) -c $(CFLAGS_ALL) $<
- %.o:%.cpp
--      $(CXX) -c $(CFLAGS) $<
-+      $(CXX) -c $(CXXFLAGS_ALL) $<
--include Makefile.depend
-+include depend.mk
- .PHONY: clean distclean
- clean: clean-common
-diff --git a/libs/xmlrpc-c/lib/util/Makefile.depend b/libs/xmlrpc-c/lib/util/Makefile.depend
-deleted file mode 100644
-index e69de29..0000000
-diff --git a/libs/xmlrpc-c/lib/util/casprintf.c b/libs/xmlrpc-c/lib/util/casprintf.c
-index 959e4ce..0a26f4d 100644
---- a/libs/xmlrpc-c/lib/util/casprintf.c
-+++ b/libs/xmlrpc-c/lib/util/casprintf.c
-@@ -1,43 +1,87 @@
--//#define _GNU_SOURCE
-+#ifndef _GNU_SOURCE
-+      #define _GNU_SOURCE   /* But only when HAVE_ASPRINTF */
-+#endif
-+
- #include <stdarg.h>
- #include <stdio.h>
- #include <stdlib.h>
-+#include <limits.h>
- #include "xmlrpc_config.h"  /* For HAVE_ASPRINTF, __inline__ */
-+#include "bool.h"
- #include "casprintf.h"
- static __inline__ void
-+newVsnprintf(char *       const buffer,
-+             size_t       const bufferSize,
-+             const char * const fmt,
-+             va_list            varargs,
-+             size_t *     const formattedSizeP) {
-+/*----------------------------------------------------------------------------
-+   This is vsnprintf() with the new behavior, where not fitting in the buffer
-+   is not a failure.
-+
-+   Unfortunately, we can't practically return the size of the formatted string
-+   if the C library has old vsnprintf() and the formatted string doesn't fit
-+   in the buffer, so in that case we just return something larger than the
-+   buffer.
-+-----------------------------------------------------------------------------*/
-+    if (bufferSize > INT_MAX/2) {
-+        /* There's a danger we won't be able to coerce the return value
-+           of XMLRPC_VSNPRINTF to an integer (which we have to do because,
-+           while for POSIX its return value is ssize_t, on Windows it is int),
-+           or return double the buffer size.
-+        */
-+        *formattedSizeP = 0;
-+    } else {
-+        int rc;
-+
-+        rc = XMLRPC_VSNPRINTF(buffer, bufferSize, fmt, varargs);
-+
-+        if (rc < 0) {
-+            /* We have old vsnprintf() (or Windows) and the formatted value
-+               doesn't fit in the buffer, but we don't know how big a buffer it
-+               needs.
-+            */
-+            *formattedSizeP = bufferSize * 2;
-+        } else {
-+            /* Either the string fits in the buffer or we have new vsnprintf()
-+               which tells us how big the string is regardless.
-+            */
-+            *formattedSizeP = rc;
-+        }
-+    }
-+}
-+
-+
-+
-+static __inline__ void
- simpleVasprintf(char **      const retvalP,
-                 const char * const fmt,
-                 va_list            varargs) {
- /*----------------------------------------------------------------------------
-    This is a poor man's implementation of vasprintf(), of GNU fame.
- -----------------------------------------------------------------------------*/
--    size_t const initialSize = 4096;
-     char * result;
--
--    result = malloc(initialSize);
--    if (result != NULL) {
--        size_t bytesNeeded;
--        bytesNeeded = XMLRPC_VSNPRINTF(result, initialSize, fmt, varargs);
--        if (bytesNeeded > initialSize) {
--            free(result);
--            result = malloc(bytesNeeded);
--            if (result != NULL)
--                XMLRPC_VSNPRINTF(result, bytesNeeded, fmt, varargs);
--        } else if (bytesNeeded == initialSize) {
--            if (result[initialSize-1] != '\0') {
--                /* This is one of those old systems where vsnprintf()
--                   returns the number of bytes it used, instead of the
--                   number that it needed, and it in fact needed more than
--                   we gave it.  Rather than mess with this highly unlikely
--                   case (old system and string > 4095 characters), we just
--                   treat this like an out of memory failure.
--                */
-+    size_t bufferSize;
-+    bool outOfMemory;
-+
-+    for (result = NULL, bufferSize = 4096, outOfMemory = false;
-+         !result && !outOfMemory;
-+        ) {
-+
-+        result = malloc(bufferSize);
-+        if (!result)
-+            outOfMemory = true;
-+        else {
-+            size_t bytesNeeded;
-+            newVsnprintf(result, bufferSize, fmt, varargs, &bytesNeeded);
-+            if (bytesNeeded > bufferSize) {
-                 free(result);
-                 result = NULL;
-+                bufferSize = bytesNeeded;
-             }
-         }
-     }
-diff --git a/libs/xmlrpc-c/lib/util/cmdline_parser.c b/libs/xmlrpc-c/lib/util/cmdline_parser.c
-index 37caadb..cc33d8d 100644
---- a/libs/xmlrpc-c/lib/util/cmdline_parser.c
-+++ b/libs/xmlrpc-c/lib/util/cmdline_parser.c
-@@ -1,3 +1,5 @@
-+#define _XOPEN_SOURCE 600 /* Make sure <string.h> has strdup() */
-+
- #include "xmlrpc_config.h"  /* prereq for mallocvar.h -- defines __inline__ */
- #include <sys/types.h>
-diff --git a/libs/xmlrpc-c/lib/util/include/int.h b/libs/xmlrpc-c/lib/util/include/int.h
-index 253ea34..3c7b216 100644
---- a/libs/xmlrpc-c/lib/util/include/int.h
-+++ b/libs/xmlrpc-c/lib/util/include/int.h
-@@ -11,6 +11,14 @@
-    long long mask= ULL(1) << 33;
- */
-+/* 'uint' is quite convenient, but there's no simple way have it everywhere.
-+   Some systems have it in the base system (e.g. GNU C library has it in
-+   <sys/types.h>, and others (e.g. Solaris - 08.12.02) don't.  Since we
-+   can't define it unless we know it's not defined already, and we don't
-+   want to burden the reader with a special Xmlrpc-c name such as xuint,
-+   we just use standard "unsigned int" instead.
-+*/
-+
- #ifdef _MSC_VER
- #  define PRId64 "I64d"
- #  define PRIu64 "I64u"
-@@ -33,9 +41,6 @@ typedef __int64           int64_t;
- #ifndef uint64_t
- typedef unsigned __int64  uint64_t;
- #endif
--#ifndef uint
--typedef unsigned int      uint;
--#endif
- #ifndef uint8_t
- typedef unsigned char     uint8_t;
- #endif
-@@ -44,6 +49,11 @@ typedef unsigned char     uint8_t;
- #define LL(x) x ## i64
- #define ULL(x) x ## u64
-+#elif defined(__INTERIX)
-+#  include <stdint.h>
-+#  define PRId64 "I64d"
-+#  define PRIu64 "I64u"
-+
- #else
-   /* Not Microsoft compiler */
-   #include <inttypes.h>
-diff --git a/libs/xmlrpc-c/lib/util/include/mallocvar.h b/libs/xmlrpc-c/lib/util/include/mallocvar.h
-index 5dd9fc9..12ca9d9 100644
---- a/libs/xmlrpc-c/lib/util/include/mallocvar.h
-+++ b/libs/xmlrpc-c/lib/util/include/mallocvar.h
-@@ -18,7 +18,7 @@
- static __inline__ void
- mallocProduct(void **      const resultP, 
-               unsigned int const factor1,
--              unsigned int const factor2) {
-+              size_t       const factor2) {
- /*----------------------------------------------------------------------------
-    malloc a space whose size in bytes is the product of 'factor1' and
-    'factor2'.  But if that size cannot be represented as an unsigned int,
-@@ -102,7 +102,7 @@ do { \
- #define MALLOCVAR(varName) \
--    if (varName = malloc(sizeof(*varName))) memset(varName, 0, sizeof(*varName))
-+    varName = malloc(sizeof(*varName))
- #define MALLOCVAR_NOFAIL(varName) \
-     do {if ((varName = malloc(sizeof(*varName))) == NULL) abort();} while(0)
-diff --git a/libs/xmlrpc-c/lib/util/include/pthreadx.h b/libs/xmlrpc-c/lib/util/include/pthreadx.h
-index 3ec8f2a..bf5a45f 100644
---- a/libs/xmlrpc-c/lib/util/include/pthreadx.h
-+++ b/libs/xmlrpc-c/lib/util/include/pthreadx.h
-@@ -26,10 +26,12 @@
- #ifndef PTHREADX_H_INCLUDED
- #define PTHREADX_H_INCLUDED
--#ifndef WIN32
-+#include "xmlrpc_config.h"
-+
-+#if HAVE_PTHREAD
- #  define _REENTRANT
- #  include <pthread.h>
--#elif defined (WIN32)
-+#elif HAVE_WINDOWS_THREAD
- #include <windows.h>
- #ifdef __cplusplus
-@@ -52,11 +54,7 @@ struct {
-     int attrs; /* currently unused. placeholder. */
- } pthread_mutexattr_t;
--/* We make pthread_func identical to a Windows thread start function
--   so we can use Windows thread functions to implement these pthread
--   functions directly.
--*/
--typedef unsigned (WINAPI pthread_func)(void *);
-+typedef void * pthread_func(void *);
- extern int pthread_create(pthread_t *            const new_thread_ID,
-                           const pthread_attr_t * const attr,
-@@ -75,6 +73,10 @@ extern int pthread_mutex_destroy(pthread_mutex_t * const mp);
- #ifdef __cplusplus
- }
- #endif
--#endif  /* WIN32 */
-+#else  /* HAVE_WINDOWS_THREAD */
-+  #error "You don't have any thread facility.  (According to "
-+  #error "HAVE_PTHREAD and HAVE_WINDOWS_THREAD macros defined in "
-+  #error "xmlrpc_config.h)"
-+#endif
- #endif
-diff --git a/libs/xmlrpc-c/lib/util/include/sstring.h b/libs/xmlrpc-c/lib/util/include/sstring.h
-deleted file mode 100644
-index c493cf2..0000000
---- a/libs/xmlrpc-c/lib/util/include/sstring.h
-+++ /dev/null
-@@ -1,15 +0,0 @@
--#ifndef SSTRING_H_INCLUDED
--#define SSTRING_H_INCLUDED
--
--/* This file contains string functions that are cognizant of the
--   declared size of the destination data structure.
--*/
--
--
--/* Copy string pointed by B to array A with size checking.  */
--#define SSTRCPY(A,B) \
--      (strncpy((A), (B), sizeof(A)), *((A)+sizeof(A)-1) = '\0')
--#define SSTRCMP(A,B) \
--      (strncmp((A), (B), sizeof(A)))
--
--#endif
-diff --git a/libs/xmlrpc-c/lib/util/include/stdargx.h b/libs/xmlrpc-c/lib/util/include/stdargx.h
-index ee54464..0441f54 100644
---- a/libs/xmlrpc-c/lib/util/include/stdargx.h
-+++ b/libs/xmlrpc-c/lib/util/include/stdargx.h
-@@ -56,7 +56,7 @@ init_va_listx(va_listx * const argsxP,
- #if VA_LIST_IS_ARRAY
-     /* 'args' is NOT a va_list.  It is a pointer to the first element of a
-        'va_list', which is the same address as a pointer to the va_list
--       itself.
-+       itself.  (That's what happens when you pass an array in C).
-     */
-     memcpy(&argsxP->v, args, sizeof(argsxP->v));
- #else
-diff --git a/libs/xmlrpc-c/lib/util/pthreadx_win32.c b/libs/xmlrpc-c/lib/util/pthreadx_win32.c
-index 6a8446a..91e3f37 100644
---- a/libs/xmlrpc-c/lib/util/pthreadx_win32.c
-+++ b/libs/xmlrpc-c/lib/util/pthreadx_win32.c
-@@ -25,31 +25,65 @@
- #include "xmlrpc_config.h"
--#ifdef WIN32
-+#include <process.h>
--#include "pthreadx.h"
-+#include "mallocvar.h"
--#include <process.h>
-+#include "pthreadx.h"
- #undef PACKAGE
- #undef VERSION
-+struct winStartArg {
-+    pthread_func * func;
-+    void *         arg;
-+};
-+
-+
-+
-+static unsigned int __stdcall 
-+winThreadStart(void * const arg) {
-+/*----------------------------------------------------------------------------
-+   This is a thread start/root function for the Windows threading facility
-+   (i.e. this can be an argument to _beginthreadex()).
-+
-+   All we do is call the real start/root function, which expects to be
-+   called in the pthread format.
-+-----------------------------------------------------------------------------*/
-+    struct winStartArg * const winStartArgP = arg;
-+
-+    winStartArgP->func(winStartArgP->arg);
-+
-+    free(winStartArgP);
-+
-+    return 0;
-+}
-+
-+
-+
- int
--pthread_create(pthread_t *            const new_thread_ID,
-+pthread_create(pthread_t *            const newThreadIdP,
-                const pthread_attr_t * const attr,
-                pthread_func *               func,
-                void *                 const arg) {
-     HANDLE hThread;
-     DWORD dwThreadID;
-+    struct winStartArg * winStartArgP;
-+
-+    MALLOCVAR_NOFAIL(winStartArgP);
--    hThread = (HANDLE) _beginthreadex (
--        NULL, 0, func, (LPVOID)arg, CREATE_SUSPENDED, &dwThreadID);
-+    winStartArgP->func = func;
-+    winStartArgP->arg  = arg;
--    SetThreadPriority (hThread, THREAD_PRIORITY_NORMAL); 
--    ResumeThread (hThread);
-+    hThread = (HANDLE) _beginthreadex(
-+        NULL, 0, &winThreadStart, (LPVOID)winStartArgP, CREATE_SUSPENDED,
-+        &dwThreadID);
--    *new_thread_ID = hThread;
-+    SetThreadPriority(hThread, THREAD_PRIORITY_NORMAL); 
-+    ResumeThread(hThread);
-+
-+    *newThreadIdP = hThread;
-     return hThread ? 0 : -1;
- }
-@@ -119,5 +153,3 @@ pthread_mutex_destroy(pthread_mutex_t * const mp) {
-     DeleteCriticalSection(mp);
-     return 0;
- }
--
--#endif
-diff --git a/libs/xmlrpc-c/lib/util/string_parser.c b/libs/xmlrpc-c/lib/util/string_parser.c
-index 32879f5..3c1fdf5 100644
---- a/libs/xmlrpc-c/lib/util/string_parser.c
-+++ b/libs/xmlrpc-c/lib/util/string_parser.c
-@@ -50,7 +50,7 @@ interpretUll(const char *  const string,
-         
-         errno = 0;  /* So we can tell if strtoull() overflowed */
--        *ullP = strtoull(strippedString, &tail, 10);
-+        *ullP = XMLRPC_STRTOULL(strippedString, &tail, 10);
-         
-         if (tail[0] != '\0')
-             casprintf(errorP, "Non-digit stuff in string: %s", tail);
-@@ -80,7 +80,7 @@ interpretLl(const char *  const string,
-         
-         errno = 0;  /* So we can tell if strtoll() overflowed */
--        *llP = strtoll(string, &tail, 10);
-+        *llP = XMLRPC_STRTOLL(string, &tail, 10);
-         
-         if (tail[0] != '\0')
-             casprintf(errorP, "Non-digit stuff in string: %s", tail);
-@@ -94,9 +94,9 @@ interpretLl(const char *  const string,
- void
--interpretUint(const char *  const string,
--              uint *        const uintP,
--              const char ** const errorP) {
-+interpretUint(const char *   const string,
-+              unsigned int * const uintP,
-+              const char **  const errorP) {
-     /* strtoul() does a lousy job of dealing with invalid numbers.  A null
-        string is just zero; a negative number is a large positive one; a
-diff --git a/libs/xmlrpc-c/lib/util/stripcaseeq.c b/libs/xmlrpc-c/lib/util/stripcaseeq.c
-index 348a868..861da10 100644
---- a/libs/xmlrpc-c/lib/util/stripcaseeq.c
-+++ b/libs/xmlrpc-c/lib/util/stripcaseeq.c
-@@ -1,4 +1,3 @@
--//#define _GNU_SOURCE
- #include <ctype.h>
- #include "bool.h"
-diff --git a/libs/xmlrpc-c/lib/wininet_transport/Makefile b/libs/xmlrpc-c/lib/wininet_transport/Makefile
-index 648c6c3..1b24efc 100644
---- a/libs/xmlrpc-c/lib/wininet_transport/Makefile
-+++ b/libs/xmlrpc-c/lib/wininet_transport/Makefile
-@@ -22,13 +22,16 @@ OMIT_WININET_TRANSPORT_RULE=Y
- include $(SRCDIR)/common.mk
--CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
-+# This 'common.mk' dependency makes sure the symlinks get built before
-+# this make file is used for anything.
-+
-+$(SRCDIR)/common.mk: srcdir blddir
- INCLUDES = \
-   -I$(BLDDIR) \
-   -I$(BLDDIR)/include \
--  -I$(SRCDIR)/include \
--  -I$(SRCDIR)/lib/util/include \
-+  -Isrcdir/include \
-+  -Isrcdir/lib/util/include \
- .PHONY: clean
- clean: clean-common
-@@ -48,8 +51,8 @@ install:
- .PHONY: dep
- dep: dep-common
--include Makefile.depend
-+include depend.mk
--# Need this dependency for those who don't use Makefile.depend.
-+# Need this dependency for those who don't use depend.mk.
- # Without it, version.h doesn't get created.
- xmlrpc_wininet_transport.o xmlrpc_wininet_transport.osh: version.h
-diff --git a/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.c b/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.c
-index d81c6ea..b5efb93 100644
---- a/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.c
-+++ b/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.c
-@@ -398,6 +398,15 @@ performWinInetTransaction(
-         XMLRPC_FAIL(envP, XMLRPC_INTERNAL_ERROR,
-                     "Could not set Content-Type.");
-+    {
-+        /* By default, a request times out after 30 seconds.  We don't want
-+           it to timeout at all, since we don't know what the user is doing.
-+        */
-+        DWORD dwTimeOut = 0x7FFFFFFF;  /* Approximation of infinity */
-+        InternetSetOption(winInetTransactionP->hHttpRequest,
-+                          INTERNET_OPTION_RECEIVE_TIMEOUT,
-+                          &dwTimeOut, sizeof(dwTimeOut));
-+    }
- Again:
-     /* Send the requested XML remote procedure command */ 
-     succeeded = HttpSendRequest(winInetTransactionP->hHttpRequest, NULL, 0, 
-@@ -558,17 +567,22 @@ Again:
--static unsigned __stdcall 
-+static void *
- doAsyncRpc(void * const arg) {
-+
-     rpc * const rpcP = arg;
-+
-     xmlrpc_env env;
-     xmlrpc_env_init(&env);
-+
-     performWinInetTransaction(&env, rpcP->winInetTransactionP,
-                               rpcP->clientTransportP );
-+
-     rpcP->complete(rpcP->callInfoP, rpcP->responseXmlP, env);
-+
-     xmlrpc_env_clean(&env);
--    return 0;
-+    return NULL;
- }
-@@ -837,6 +851,7 @@ sendRequest(xmlrpc_env *                     const envP,
-             const xmlrpc_server_info *       const serverP,
-             xmlrpc_mem_block *               const callXmlP,
-             xmlrpc_transport_asynch_complete       complete,
-+            xmlrpc_transport_progress              progress,
-             struct xmlrpc_call_info *        const callInfoP) {
- /*----------------------------------------------------------------------------
-    Initiate an XML-RPC rpc asynchronously.  Don't wait for it to go to
-diff --git a/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.h b/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.h
-deleted file mode 100644
-index d9f2b39..0000000
---- a/libs/xmlrpc-c/lib/wininet_transport/xmlrpc_wininet_transport.h
-+++ /dev/null
-@@ -1,8 +0,0 @@
--#ifndef XMLRPC_WININET_TRANSPORT_H
--#define XMLRPC_WININET_TRANSPORT_H
--
--#include "xmlrpc-c/transport.h"
--
--extern struct xmlrpc_client_transport_ops xmlrpc_wininet_transport_ops;
--
--#endif
-diff --git a/libs/xmlrpc-c/ltconfig b/libs/xmlrpc-c/ltconfig
-deleted file mode 100755
-index a01334f..0000000
---- a/libs/xmlrpc-c/ltconfig
-+++ /dev/null
-@@ -1,3078 +0,0 @@
--#! /bin/sh
--
--# ltconfig - Create a system-specific libtool.
--# Copyright (C) 1996-1999 Free Software Foundation, Inc.
--# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
--#
--# 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 2 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, write to the Free Software
--# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--#
--# 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.
--
--# A lot of this script is taken from autoconf-2.10.
--
--# Check that we are running under the correct shell.
--SHELL=${CONFIG_SHELL-/bin/sh}
--echo=echo
--if test "X$1" = X--no-reexec; then
--  # Discard the --no-reexec flag, and continue.
--  shift
--elif test "X$1" = X--fallback-echo; then
--  # Avoid inline document here, it may be left over
--  :
--elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
--  # Yippee, $echo works!
--  :
--else
--  # Restart under the correct shell.
--  exec "$SHELL" "$0" --no-reexec ${1+"$@"}
--fi
--
--if test "X$1" = X--fallback-echo; then
--  # used as fallback echo
--  shift
--  cat <<EOF
--$*
--EOF
--  exit 0
--fi
--
--# Find the correct PATH separator.  Usually this is `:', but
--# DJGPP uses `;' like DOS.
--if test "X${PATH_SEPARATOR+set}" != Xset; then
--  UNAME=${UNAME-`uname 2>/dev/null`}
--  case X$UNAME in
--    *-DOS) PATH_SEPARATOR=';' ;;
--    *)     PATH_SEPARATOR=':' ;;
--  esac
--fi
--
--# The HP-UX ksh and POSIX shell print the target directory to stdout
--# if CDPATH is set.
--if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
--
--if test "X${echo_test_string+set}" != Xset; then
--  # find a string as large as possible, as long as the shell can cope with it
--  for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
--    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
--    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
--       echo_test_string="`eval $cmd`" &&
--       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then
--      break
--    fi
--  done
--fi
--
--if test "X`($echo '\t') 2>/dev/null`" != 'X\t' ||
--   test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then
--  # The Solaris, AIX, and Digital Unix default echo programs unquote
--  # backslashes.  This makes it impossible to quote backslashes using
--  #   echo "$something" | sed 's/\\/\\\\/g'
--  #
--  # So, first we look for a working echo in the user's PATH.
--
--  IFS="${IFS=         }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
--  for dir in $PATH /usr/ucb; do
--    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
--       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
--       test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
--      echo="$dir/echo"
--      break
--    fi
--  done
--  IFS="$save_ifs"
--
--  if test "X$echo" = Xecho; then
--    # We didn't find a better echo, so look for alternatives.
--    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
--       test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
--      # This shell has a builtin print -r that does the trick.
--      echo='print -r'
--    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
--       test "X$CONFIG_SHELL" != X/bin/ksh; then
--      # If we have ksh, try running ltconfig again with it.
--      ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}"
--      export ORIGINAL_CONFIG_SHELL
--      CONFIG_SHELL=/bin/ksh
--      export CONFIG_SHELL
--      exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"}
--    else
--      # Try using printf.
--      echo='printf "%s\n"'
--      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
--       test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
--      # Cool, printf works
--      :
--      elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' &&
--         test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
--      CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL"
--      export CONFIG_SHELL
--      SHELL="$CONFIG_SHELL"
--      export SHELL
--      echo="$CONFIG_SHELL $0 --fallback-echo"
--      elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' &&
--         test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
--      echo="$CONFIG_SHELL $0 --fallback-echo"
--      else
--      # maybe with a smaller string...
--      prev=:
--
--      for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
--        if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then
--          break
--        fi
--        prev="$cmd"
--      done
--
--      if test "$prev" != 'sed 50q "$0"'; then
--        echo_test_string=`eval $prev`
--        export echo_test_string
--        exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"}
--      else
--        # Oops.  We lost completely, so just stick with echo.
--        echo=echo
--      fi
--      fi
--    fi
--  fi
--fi
--
--# Sed substitution that helps us do robust quoting.  It backslashifies
--# metacharacters that are still active within double-quoted strings.
--Xsed='sed -e s/^X//'
--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'
--
--# The name of this program.
--progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'`
--
--# Constants:
--PROGRAM=ltconfig
--PACKAGE=libtool
--VERSION=1.3.4
--TIMESTAMP=" (1.385.2.196 1999/12/07 21:47:57)"
--ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
--ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
--rm="rm -f"
--
--help="Try \`$progname --help' for more information."
--
--# Global variables:
--default_ofile=libtool
--can_build_shared=yes
--enable_shared=yes
--# All known linkers require a `.a' archive for static linking (except M$VC,
--# which needs '.lib').
--enable_static=yes
--enable_fast_install=yes
--enable_dlopen=unknown
--enable_win32_dll=no
--ltmain=
--silent=
--srcdir=
--ac_config_guess=
--ac_config_sub=
--host=
--nonopt=
--ofile="$default_ofile"
--verify_host=yes
--with_gcc=no
--with_gnu_ld=no
--need_locks=yes
--ac_ext=c
--objext=o
--libext=a
--exeext=
--cache_file=
--
--old_AR="$AR"
--old_CC="$CC"
--old_CFLAGS="$CFLAGS"
--old_CPPFLAGS="$CPPFLAGS"
--old_LDFLAGS="$LDFLAGS"
--old_LD="$LD"
--old_LN_S="$LN_S"
--old_LIBS="$LIBS"
--old_NM="$NM"
--old_RANLIB="$RANLIB"
--old_DLLTOOL="$DLLTOOL"
--old_OBJDUMP="$OBJDUMP"
--old_AS="$AS"
--
--# Parse the command line options.
--args=
--prev=
--for option
--do
--  case "$option" in
--  -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
--  *) optarg= ;;
--  esac
--
--  # If the previous option needs an argument, assign it.
--  if test -n "$prev"; then
--    eval "$prev=\$option"
--    prev=
--    continue
--  fi
--
--  case "$option" in
--  --help) cat <<EOM
--Usage: $progname [OPTION]... [HOST [LTMAIN]]
--
--Generate a system-specific libtool script.
--
--    --debug                enable verbose shell tracing
--    --disable-shared       do not build shared libraries
--    --disable-static       do not build static libraries
--    --disable-fast-install do not optimize for fast installation
--    --enable-dlopen        enable dlopen support
--    --enable-win32-dll     enable building dlls on win32 hosts
--    --help                 display this help and exit
--    --no-verify            do not verify that HOST is a valid host type
---o, --output=FILE          specify the output file [default=$default_ofile]
--    --quiet                same as \`--silent'
--    --silent               do not print informational messages
--    --srcdir=DIR           find \`config.guess' in DIR
--    --version              output version information and exit
--    --with-gcc             assume that the GNU C compiler will be used
--    --with-gnu-ld          assume that the C compiler uses the GNU linker
--    --disable-lock         disable file locking
--    --cache-file=FILE      configure cache file
--
--LTMAIN is the \`ltmain.sh' shell script fragment or \`ltmain.c' program
--that provides basic libtool functionality.
--
--HOST is the canonical host system name [default=guessed].
--EOM
--  exit 0
--  ;;
--
--  --debug)
--    echo "$progname: enabling shell trace mode"
--    set -x
--    ;;
--
--  --disable-shared) enable_shared=no ;;
--
--  --disable-static) enable_static=no ;;
--
--  --disable-fast-install) enable_fast_install=no ;;
--
--  --enable-dlopen) enable_dlopen=yes ;;
--
--  --enable-win32-dll) enable_win32_dll=yes ;;
--
--  --quiet | --silent) silent=yes ;;
--
--  --srcdir) prev=srcdir ;;
--  --srcdir=*) srcdir="$optarg" ;;
--
--  --no-verify) verify_host=no ;;
--
--  --output | -o) prev=ofile ;;
--  --output=*) ofile="$optarg" ;;
--
--  --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"; exit 0 ;;
--
--  --with-gcc) with_gcc=yes ;;
--  --with-gnu-ld) with_gnu_ld=yes ;;
--
--  --disable-lock) need_locks=no ;;
--
--  --cache-file=*) cache_file="$optarg" ;;
--
--  -*)
--    echo "$progname: unrecognized option \`$option'" 1>&2
--    echo "$help" 1>&2
--    exit 1
--    ;;
--
--  *)
--    if test -z "$ltmain"; then
--      ltmain="$option"
--    elif test -z "$host"; then
--# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1
--#      if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then
--#        echo "$progname: warning \`$option' is not a valid host type" 1>&2
--#      fi
--      host="$option"
--    else
--      echo "$progname: too many arguments" 1>&2
--      echo "$help" 1>&2
--      exit 1
--    fi ;;
--  esac
--done
--
--if test -z "$ltmain"; then
--  echo "$progname: you must specify a LTMAIN file" 1>&2
--  echo "$help" 1>&2
--  exit 1
--fi
--
--if test ! -f "$ltmain"; then
--  echo "$progname: \`$ltmain' does not exist" 1>&2
--  echo "$help" 1>&2
--  exit 1
--fi
--
--# Quote any args containing shell metacharacters.
--ltconfig_args=
--for arg
--do
--  case "$arg" in
--  *" "*|*"    "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
--  ltconfig_args="$ltconfig_args '$arg'" ;;
--  *) ltconfig_args="$ltconfig_args $arg" ;;
--  esac
--done
--
--# A relevant subset of AC_INIT.
--
--# File descriptor usage:
--# 0 standard input
--# 1 file creation
--# 2 errors and warnings
--# 3 some systems may open it to /dev/tty
--# 4 used on the Kubota Titan
--# 5 compiler messages saved in config.log
--# 6 checking for... messages and results
--if test "$silent" = yes; then
--  exec 6>/dev/null
--else
--  exec 6>&1
--fi
--exec 5>>./config.log
--
--# NLS nuisances.
--# Only set LANG and LC_ALL to C if already set.
--# These must not be set unconditionally because not all systems understand
--# e.g. LANG=C (notably SCO).
--if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi
--if test "X${LANG+set}"   = Xset; then LANG=C;   export LANG;   fi
--
--if test -n "$cache_file" && test -r "$cache_file"; then
--  echo "loading cache $cache_file within ltconfig"
--  . $cache_file
--fi
--
--if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
--  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
--  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
--    ac_n= ac_c='
--' ac_t='      '
--  else
--    ac_n=-n ac_c= ac_t=
--  fi
--else
--  ac_n= ac_c='\c' ac_t=
--fi
--
--if test -z "$srcdir"; then
--  # Assume the source directory is the same one as the path to LTMAIN.
--  srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'`
--  test "$srcdir" = "$ltmain" && srcdir=.
--fi
--
--trap "$rm conftest*; exit 1" 1 2 15
--if test "$verify_host" = yes; then
--  # Check for config.guess and config.sub.
--  ac_aux_dir=
--  for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
--    if test -f $ac_dir/config.guess; then
--      ac_aux_dir=$ac_dir
--      break
--    fi
--  done
--  if test -z "$ac_aux_dir"; then
--    echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2
--    echo "$help" 1>&2
--    exit 1
--  fi
--  ac_config_guess=$ac_aux_dir/config.guess
--  ac_config_sub=$ac_aux_dir/config.sub
--
--  # Make sure we can run config.sub.
--  if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then :
--  else
--    echo "$progname: cannot run $ac_config_sub" 1>&2
--    echo "$help" 1>&2
--    exit 1
--  fi
--
--  echo $ac_n "checking host system type""... $ac_c" 1>&6
--
--  host_alias=$host
--  case "$host_alias" in
--  "")
--    if host_alias=`$SHELL $ac_config_guess`; then :
--    else
--      echo "$progname: cannot guess host type; you must specify one" 1>&2
--      echo "$help" 1>&2
--      exit 1
--    fi ;;
--  esac
--  host=`$SHELL $ac_config_sub $host_alias`
--  echo "$ac_t$host" 1>&6
--
--  # Make sure the host verified.
--  test -z "$host" && exit 1
--
--elif test -z "$host"; then
--  echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2
--  echo "$help" 1>&2
--  exit 1
--else
--  host_alias=$host
--fi
--
--# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
--case "$host_os" in
--linux-gnu*) ;;
--linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
--esac
--
--host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
--host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
--host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
--
--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
--
--# Determine commands to create old-style static archives.
--old_archive_cmds='$AR cru $oldlib$oldobjs'
--old_postinstall_cmds='chmod 644 $oldlib'
--old_postuninstall_cmds=
--
--# Set a sane default for `AR'.
--test -z "$AR" && AR=ar
--
--# Set a sane default for `OBJDUMP'.
--test -z "$OBJDUMP" && OBJDUMP=objdump
--
--# If RANLIB is not set, then run the test.
--if test "${RANLIB+set}" != "set"; then
--  result=no
--
--  echo $ac_n "checking for ranlib... $ac_c" 1>&6
--  IFS="${IFS=         }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
--  for dir in $PATH; do
--    test -z "$dir" && dir=.
--    if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then
--      RANLIB="ranlib"
--      result="ranlib"
--      break
--    fi
--  done
--  IFS="$save_ifs"
--
--  echo "$ac_t$result" 1>&6
--fi
--
--if test -n "$RANLIB"; then
--  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
--  old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
--fi
--
--# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin.
--test -z "$DLLTOOL" && DLLTOOL=dlltool
--test -z "$OBJDUMP" && OBJDUMP=objdump
--test -z "$AS" && AS=as
--
--# Check to see if we are using GCC.
--if test "$with_gcc" != yes || test -z "$CC"; then
--  # If CC is not set, then try to find GCC or a usable CC.
--  if test -z "$CC"; then
--    echo $ac_n "checking for gcc... $ac_c" 1>&6
--    IFS="${IFS=       }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
--    for dir in $PATH; do
--      test -z "$dir" && dir=.
--      if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then
--      CC="gcc"
--      break
--      fi
--    done
--    IFS="$save_ifs"
--
--    if test -n "$CC"; then
--      echo "$ac_t$CC" 1>&6
--    else
--      echo "$ac_t"no 1>&6
--    fi
--  fi
--
--  # Not "gcc", so try "cc", rejecting "/usr/ucb/cc".
--  if test -z "$CC"; then
--    echo $ac_n "checking for cc... $ac_c" 1>&6
--    IFS="${IFS=       }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
--    cc_rejected=no
--    for dir in $PATH; do
--      test -z "$dir" && dir=.
--      if test -f $dir/cc || test -f $dir/cc$ac_exeext; then
--      if test "$dir/cc" = "/usr/ucb/cc"; then
--        cc_rejected=yes
--        continue
--      fi
--      CC="cc"
--      break
--      fi
--    done
--    IFS="$save_ifs"
--    if test $cc_rejected = yes; then
--      # We found a bogon in the path, so make sure we never use it.
--      set dummy $CC
--      shift
--      if test $# -gt 0; then
--      # We chose a different compiler from the bogus one.
--      # However, it has the same name, so the bogon will be chosen
--      # first if we set CC to just the name; use the full file name.
--      shift
--      set dummy "$dir/cc" "$@"
--      shift
--      CC="$@"
--      fi
--    fi
--
--    if test -n "$CC"; then
--      echo "$ac_t$CC" 1>&6
--    else
--      echo "$ac_t"no 1>&6
--    fi
--
--    if test -z "$CC"; then
--      echo "$progname: error: no acceptable cc found in \$PATH" 1>&2
--      exit 1
--    fi
--  fi
--
--  # Now see if the compiler is really GCC.
--  with_gcc=no
--  echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6
--  echo "$progname:581: checking whether we are using GNU C" >&5
--
--  $rm conftest.c
--  cat > conftest.c <<EOF
--#ifdef __GNUC__
--  yes;
--#endif
--EOF
--  if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:589: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
--    with_gcc=yes
--  fi
--  $rm conftest.c
--  echo "$ac_t$with_gcc" 1>&6
--fi
--
--# Allow CC to be a program name with arguments.
--set dummy $CC
--compiler="$2"
--
--echo $ac_n "checking for object suffix... $ac_c" 1>&6
--$rm conftest*
--echo 'int i = 1;' > conftest.c
--echo "$progname:603: checking for object suffix" >& 5
--if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then
--  # Append any warnings to the config.log.
--  cat conftest.err 1>&5
--
--  for ac_file in conftest.*; do
--    case $ac_file in
--    *.c) ;;
--    *) objext=`echo $ac_file | sed -e s/conftest.//` ;;
--    esac
--  done
--else
--  cat conftest.err 1>&5
--  echo "$progname: failed program was:" >&5
--  cat conftest.c >&5
--fi
--$rm conftest*
--echo "$ac_t$objext" 1>&6
--
--echo $ac_n "checking for executable suffix... $ac_c" 1>&6
--if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
--  echo $ac_n "(cached) $ac_c" 1>&6
--else
--  ac_cv_exeext="no"
--  $rm conftest*
--  echo 'main () { return 0; }' > conftest.c
--  echo "$progname:629: checking for executable suffix" >& 5
--  if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then
--    # Append any warnings to the config.log.
--    cat conftest.err 1>&5
--
--    for ac_file in conftest.*; do
--      case $ac_file in
--      *.c | *.err | *.$objext ) ;;
--      *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;;
--      esac
--    done
--  else
--    cat conftest.err 1>&5
--    echo "$progname: failed program was:" >&5
--    cat conftest.c >&5
--  fi
--  $rm conftest*
--fi
--if test "X$ac_cv_exeext" = Xno; then
--  exeext=""
--else
--  exeext="$ac_cv_exeext"
--fi
--echo "$ac_t$ac_cv_exeext" 1>&6
--
--echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6
--pic_flag=
--special_shlib_compile_flags=
--wl=
--link_static_flag=
--no_builtin_flag=
--
--if test "$with_gcc" = yes; then
--  wl='-Wl,'
--  link_static_flag='-static'
--
--  case "$host_os" in
--  beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
--    # PIC is the default for these OSes.
--    ;;
--  aix*)
--    # Below there is a dirty hack to force normal static linking with -ldl
--    # The problem is because libdl dynamically linked with both libc and
--    # libC (AIX C++ library), which obviously doesn't included in libraries
--    # list by gcc. This cause undefined symbols with -static flags.
--    # This hack allows C programs to be linked with "-static -ldl", but
--    # we not sure about C++ programs.
--    link_static_flag="$link_static_flag ${wl}-lC"
--    ;;
--  cygwin* | mingw* | os2*)
--    # We can build DLLs from non-PIC.
--    ;;
--  amigaos*)
--    # FIXME: we need at least 68020 code to build shared libraries, but
--    # adding the `-m68020' flag to GCC prevents building anything better,
--    # like `-m68040'.
--    pic_flag='-m68020 -resident32 -malways-restore-a4'
--    ;;
--  sysv4*MP*)
--    if test -d /usr/nec; then
--       pic_flag=-Kconform_pic
--    fi
--    ;;
--  *)
--    pic_flag='-fPIC'
--    ;;
--  esac
--else
--  # PORTME Check for PIC flags for the system compiler.
--  case "$host_os" in
--  aix3* | aix4*)
--    # All AIX code is PIC.
--    link_static_flag='-bnso -bI:/lib/syscalls.exp'
--    ;;
--
--  hpux9* | hpux10* | hpux11*)
--    # Is there a better link_static_flag that works with the bundled CC?
--    wl='-Wl,'
--    link_static_flag="${wl}-a ${wl}archive"
--    pic_flag='+Z'
--    ;;
--
--  irix5* | irix6*)
--    wl='-Wl,'
--    link_static_flag='-non_shared'
--    # PIC (with -KPIC) is the default.
--    ;;
--
--  cygwin* | mingw* | os2*)
--    # We can build DLLs from non-PIC.
--    ;;
--
--  osf3* | osf4* | osf5*)
--    # All OSF/1 code is PIC.
--    wl='-Wl,'
--    link_static_flag='-non_shared'
--    ;;
--
--  sco3.2v5*)
--    pic_flag='-Kpic'
--    link_static_flag='-dn'
--    special_shlib_compile_flags='-belf'
--    ;;
--
--  solaris*)
--    pic_flag='-KPIC'
--    link_static_flag='-Bstatic'
--    wl='-Wl,'
--    ;;
--
--  sunos4*)
--    pic_flag='-PIC'
--    link_static_flag='-Bstatic'
--    wl='-Qoption ld '
--    ;;
--
--  sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
--    pic_flag='-KPIC'
--    link_static_flag='-Bstatic'
--    wl='-Wl,'
--    ;;
--
--  uts4*)
--    pic_flag='-pic'
--    link_static_flag='-Bstatic'
--    ;;
--  sysv4*MP*)
--    if test -d /usr/nec ;then
--      pic_flag='-Kconform_pic'
--      link_static_flag='-Bstatic'
--    fi
--    ;;
--  *)
--    can_build_shared=no
--    ;;
--  esac
--fi
--
--if test -n "$pic_flag"; then
--  echo "$ac_t$pic_flag" 1>&6
--
--  # Check to make sure the pic_flag actually works.
--  echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6
--  $rm conftest*
--  echo "int some_variable = 0;" > conftest.c
--  save_CFLAGS="$CFLAGS"
--  CFLAGS="$CFLAGS $pic_flag -DPIC"
--  echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5
--  if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
--    # Append any warnings to the config.log.
--    cat conftest.err 1>&5
--    
--    case "$host_os" in
--    hpux9* | hpux10* | hpux11*)
--      # On HP-UX, both CC and GCC only warn that PIC is supported... then they
--      # create non-PIC objects.  So, if there were any warnings, we assume that
--      # PIC is not supported.
--      if test -s conftest.err; then
--      echo "$ac_t"no 1>&6
--      can_build_shared=no
--      pic_flag=
--      else
--      echo "$ac_t"yes 1>&6
--      pic_flag=" $pic_flag"
--      fi
--      ;;
--    *)
--      echo "$ac_t"yes 1>&6
--      pic_flag=" $pic_flag"
--      ;;
--    esac
--  else
--    # Append any errors to the config.log.
--    cat conftest.err 1>&5
--    can_build_shared=no
--    pic_flag=
--    echo "$ac_t"no 1>&6
--  fi
--  CFLAGS="$save_CFLAGS"
--  $rm conftest*
--else
--  echo "$ac_t"none 1>&6
--fi
--
--# Check to see if options -o and -c are simultaneously supported by compiler
--echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6
--$rm -r conftest 2>/dev/null
--mkdir conftest
--cd conftest
--$rm conftest*
--echo "int some_variable = 0;" > conftest.c
--mkdir out
--# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
--# that will create temporary files in the current directory regardless of
--# the output directory.  Thus, making CWD read-only will cause this test
--# to fail, enabling locking or at least warning the user not to do parallel
--# builds.
--chmod -w .
--save_CFLAGS="$CFLAGS"
--CFLAGS="$CFLAGS -o out/conftest2.o"
--echo "$progname:829: checking if $compiler supports -c -o file.o" >&5
--if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then
--
--  # The compiler can only warn and ignore the option if not recognized
--  # So say no if there are warnings
--    if test -s out/conftest.err; then
--      echo "$ac_t"no 1>&6
--      compiler_c_o=no
--    else
--      echo "$ac_t"yes 1>&6
--      compiler_c_o=yes
--    fi
--else
--  # Append any errors to the config.log.
--  cat out/conftest.err 1>&5
--  compiler_c_o=no
--  echo "$ac_t"no 1>&6
--fi
--CFLAGS="$save_CFLAGS"
--chmod u+w .
--$rm conftest* out/*
--rmdir out
--cd ..
--rmdir conftest
--$rm -r conftest 2>/dev/null
--
--if test x"$compiler_c_o" = x"yes"; then
--  # Check to see if we can write to a .lo
--  echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6
--  $rm conftest*
--  echo "int some_variable = 0;" > conftest.c
--  save_CFLAGS="$CFLAGS"
--  CFLAGS="$CFLAGS -c -o conftest.lo"
--  echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5
--if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then
--
--    # The compiler can only warn and ignore the option if not recognized
--    # So say no if there are warnings
--      if test -s conftest.err; then
--      echo "$ac_t"no 1>&6
--      compiler_o_lo=no
--      else
--      echo "$ac_t"yes 1>&6
--      compiler_o_lo=yes
--      fi
--  else
--    # Append any errors to the config.log.
--    cat conftest.err 1>&5
--    compiler_o_lo=no
--    echo "$ac_t"no 1>&6
--  fi
--  CFLAGS="$save_CFLAGS"
--  $rm conftest*
--else
--  compiler_o_lo=no
--fi
--
--# Check to see if we can do hard links to lock some files if needed
--hard_links="nottested"
--if test "$compiler_c_o" = no && test "$need_locks" != no; then
--  # do not overwrite the value of need_locks provided by the user
--  echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&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
--  echo "$ac_t$hard_links" 1>&6
--  $rm conftest*
--  if test "$hard_links" = no; then
--    echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2
--    need_locks=warn
--  fi
--else
--  need_locks=no
--fi
--
--if test "$with_gcc" = yes; then
--  # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
--  echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6
--  $rm conftest*
--  echo "int some_variable = 0;" > conftest.c
--  save_CFLAGS="$CFLAGS"
--  CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c"
--  echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
--  if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then
--
--    # The compiler can only warn and ignore the option if not recognized
--    # So say no if there are warnings
--      if test -s conftest.err; then
--      echo "$ac_t"no 1>&6
--      compiler_rtti_exceptions=no
--      else
--      echo "$ac_t"yes 1>&6
--      compiler_rtti_exceptions=yes
--      fi
--  else
--    # Append any errors to the config.log.
--    cat conftest.err 1>&5
--    compiler_rtti_exceptions=no
--    echo "$ac_t"no 1>&6
--  fi
--  CFLAGS="$save_CFLAGS"
--  $rm conftest*
--
--  if test "$compiler_rtti_exceptions" = "yes"; then
--    no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
--  else
--    no_builtin_flag=' -fno-builtin'
--  fi
--  
--fi
--
--# Check for any special shared library compilation flags.
--if test -n "$special_shlib_compile_flags"; then
--  echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2
--  if echo "$old_CC $old_CFLAGS " | egrep -e "[        ]$special_shlib_compile_flags[  ]" >/dev/null; then :
--  else
--    echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2
--    can_build_shared=no
--  fi
--fi
--
--echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6
--$rm conftest*
--echo 'main(){return(0);}' > conftest.c
--save_LDFLAGS="$LDFLAGS"
--LDFLAGS="$LDFLAGS $link_static_flag"
--echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5
--if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
--  echo "$ac_t$link_static_flag" 1>&6
--else
--  echo "$ac_t"none 1>&6
--  link_static_flag=
--fi
--LDFLAGS="$save_LDFLAGS"
--$rm conftest*
--
--if test -z "$LN_S"; then
--  # Check to see if we can use ln -s, or we need hard links.
--  echo $ac_n "checking whether ln -s works... $ac_c" 1>&6
--  $rm conftest.dat
--  if ln -s X conftest.dat 2>/dev/null; then
--    $rm conftest.dat
--    LN_S="ln -s"
--  else
--    LN_S=ln
--  fi
--  if test "$LN_S" = "ln -s"; then
--    echo "$ac_t"yes 1>&6
--  else
--    echo "$ac_t"no 1>&6
--  fi
--fi
--
--# Make sure LD is an absolute path.
--if test -z "$LD"; then
--  ac_prog=ld
--  if test "$with_gcc" = yes; then
--    # Check if gcc -print-prog-name=ld gives a path.
--    echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6
--    echo "$progname:991: checking for ld used by GCC" >&5
--    ac_prog=`($CC -print-prog-name=ld) 2>&5`
--    case "$ac_prog" in
--    # Accept absolute paths.
--    [\\/]* | [A-Za-z]:[\\/]*)
--      re_direlt='/[^/][^/]*/\.\./'
--      # Canonicalize the path 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 are not 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
--    echo $ac_n "checking for GNU ld... $ac_c" 1>&6
--    echo "$progname:1015: checking for GNU ld" >&5
--  else
--    echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
--    echo "$progname:1018: checking for non-GNU ld" >&5
--  fi
--
--  if test -z "$LD"; then
--    IFS="${IFS=       }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
--    for ac_dir in $PATH; do
--      test -z "$ac_dir" && ac_dir=.
--      if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
--      LD="$ac_dir/$ac_prog"
--      # Check to see if the program is GNU ld.  I'd rather use --version,
--      # but apparently some GNU ld's only accept -v.
--      # Break only if it was the GNU/non-GNU ld that we prefer.
--      if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
--        test "$with_gnu_ld" != no && break
--      else
--        test "$with_gnu_ld" != yes && break
--      fi
--      fi
--    done
--    IFS="$ac_save_ifs"
--  fi
--
--  if test -n "$LD"; then
--    echo "$ac_t$LD" 1>&6
--  else
--    echo "$ac_t"no 1>&6
--  fi
--
--  if test -z "$LD"; then
--    echo "$progname: error: no acceptable ld found in \$PATH" 1>&2
--    exit 1
--  fi
--fi
--
--# Check to see if it really is or is not GNU ld.
--echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6
--# I'd rather use --version here, but apparently some GNU ld's only accept -v.
--if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
--  with_gnu_ld=yes
--else
--  with_gnu_ld=no
--fi
--echo "$ac_t$with_gnu_ld" 1>&6
--
--# See if the linker supports building shared libraries.
--echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6
--
--allow_undefined_flag=
--no_undefined_flag=
--need_lib_prefix=unknown
--need_version=unknown
--# when you set need_version to no, make sure it does not cause -set_version
--# flags to be left without arguments
--archive_cmds=
--archive_expsym_cmds=
--old_archive_from_new_cmds=
--export_dynamic_flag_spec=
--whole_archive_flag_spec=
--thread_safe_flag_spec=
--hardcode_libdir_flag_spec=
--hardcode_libdir_separator=
--hardcode_direct=no
--hardcode_minus_L=no
--hardcode_shlibpath_var=unsupported
--runpath_var=
--always_export_symbols=no
--export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
--# 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 egrep regular expression 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_"
--# 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.
--
--case "$host_os" in
--cygwin* | mingw*)
--  # 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 "$with_gcc" != yes; then
--    with_gnu_ld=no
--  fi
--  ;;
--
--esac
--
--ld_shlibs=yes
--if test "$with_gnu_ld" = yes; then
--  # If archive_cmds runs LD, not CC, wlarc should be empty
--  wlarc='${wl}'
--
--  # See if GNU ld supports shared libraries.
--  case "$host_os" in
--  aix3* | aix4*)
--    # On AIX, the GNU linker is very broken
--    ld_shlibs=no
--    cat <<EOF 1>&2
--
--*** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH
--*** so that a non-GNU linker is found, and then restart.
--
--EOF
--    ;;
--
--  amigaos*)
--    archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)'
--    hardcode_libdir_flag_spec='-L$libdir'
--    hardcode_minus_L=yes
--
--    # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
--    # that the semantics of dynamic libraries on AmigaOS, at least up
--    # to version 4, is to share data among multiple programs linked
--    # with the same dynamic library.  Since this doesn't match the
--    # behavior of shared libraries on other platforms, we can use
--    # them.
--    ld_shlibs=no
--    ;;
--
--  beos*)
--    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
--      allow_undefined_flag=unsupported
--      # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
--      # support --undefined.  This deserves some investigation.  FIXME
--      archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
--    else
--      ld_shlibs=no
--    fi
--    ;;
--
--  cygwin* | mingw*)
--    # hardcode_libdir_flag_spec is actually meaningless, as there is
--    # no search path for DLLs.
--    hardcode_libdir_flag_spec='-L$libdir'
--    allow_undefined_flag=unsupported
--    always_export_symbols=yes
--
--    # Extract the symbol export list from an `--export-all' def file,
--    # then regenerate the def file from the symbol export list, so that
--    # the compiled dll only exports the symbol export list.
--    export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
--      test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
--      $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def  $objdir/$soname-ltdll.$objext $libobjs $convenience~
--      sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]* ; *//" < $objdir/$soname-def > $export_symbols'
--
--    archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~
--      _lt_hint=1;
--      for symbol in `cat $export_symbols`; do
--      echo "  \$symbol @ \$_lt_hint ; " >> $objdir/$soname-def;
--      _lt_hint=`expr 1 + \$_lt_hint`;
--      done~
--      test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
--      test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
--      $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
--      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
--      $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
--      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
--      $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts'
--
--      old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' 
--    ;;
--
--  netbsd*)
--    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
--      archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
--      archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--    else
--      archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib'
--      # can we support soname and/or expsyms with a.out? -oliva
--    fi
--    ;;
--
--  solaris* | sysv5*)
--    if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
--      ld_shlibs=no
--      cat <<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.
--
--EOF
--    elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
--      archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
--      archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--    else
--      ld_shlibs=no
--    fi
--    ;;      
--
--  sunos4*)
--    archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts'
--    wlarc=
--    hardcode_direct=yes
--    hardcode_shlibpath_var=no
--    ;;
--
--  *)
--    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
--      archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
--      archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
--    else
--      ld_shlibs=no
--    fi
--    ;;
--  esac
--
--  if test "$ld_shlibs" = yes; then
--    runpath_var=LD_RUN_PATH
--    hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
--    export_dynamic_flag_spec='${wl}--export-dynamic'
--    case $host_os in
--    cygwin* | mingw*)
--      # dlltool doesn't understand --whole-archive et. al.
--      whole_archive_flag_spec=
--      ;;
--    *)
--      # ancient GNU ld didn't support --whole-archive et. al.
--      if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
--        whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
--      else
--        whole_archive_flag_spec=
--      fi
--      ;;
--    esac
--  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 $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname'
--    # Note: this linker hardcodes the directories in LIBPATH if there
--    # are no directories specified by -L.
--    hardcode_minus_L=yes
--    if test "$with_gcc" = yes && test -z "$link_static_flag"; then
--      # Neither direct hardcoding nor static linking is supported with a
--      # broken collect2.
--      hardcode_direct=unsupported
--    fi
--    ;;
--
--  aix4*)
--    hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib'
--    hardcode_libdir_separator=':'
--    if test "$with_gcc" = yes; then
--      collect2name=`${CC} -print-prog-name=collect2`
--      if test -f "$collect2name" && \
--       strings "$collect2name" | grep resolve_lib_name >/dev/null
--      then
--      # We have reworked collect2
--      hardcode_direct=yes
--      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
--      shared_flag='-shared'
--    else
--      shared_flag='${wl}-bM:SRE'
--      hardcode_direct=yes
--    fi
--    allow_undefined_flag=' ${wl}-berok'
--    archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}'
--    archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}'
--    case "$host_os" in aix4.[01]|aix4.[01].*)
--      # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on
--      always_export_symbols=yes ;;
--    esac
--   ;;
--
--  amigaos*)
--    archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)'
--    hardcode_libdir_flag_spec='-L$libdir'
--    hardcode_minus_L=yes
--    # see comment about different semantics on the GNU ld section
--    ld_shlibs=no
--    ;;
--
--  cygwin* | mingw*)
--    # 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.
--    hardcode_libdir_flag_spec=' '
--    allow_undefined_flag=unsupported
--    # Tell ltmain to make .lib files, not .a files.
--    libext=lib
--    # FIXME: Setting linknames here is a bad hack.
--    archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''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'
--    fix_srcfile_path='`cygpath -w $srcfile`'
--    ;;
--
--  freebsd1*)
--    ld_shlibs=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 $linkopts /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 $linkopts'
--    hardcode_direct=yes
--    hardcode_minus_L=yes
--    hardcode_shlibpath_var=no
--    ;;
--
--  # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
--  freebsd*)
--    archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts'
--    hardcode_libdir_flag_spec='-R$libdir'
--    hardcode_direct=yes
--    hardcode_shlibpath_var=no
--    ;;
--
--  hpux9* | hpux10* | hpux11*)
--    case "$host_os" in
--    hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;;
--    *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;;
--    esac
--    hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
--    hardcode_libdir_separator=:
--    hardcode_direct=yes
--    hardcode_minus_L=yes # Not in the search PATH, but as the default
--                       # location of the library.
--    export_dynamic_flag_spec='${wl}-E'
--    ;;
--
--  irix5* | irix6*)
--    if test "$with_gcc" = yes; then
--      archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
--    else
--      archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
--    fi
--    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
--    hardcode_libdir_separator=:
--    ;;
--
--  netbsd*)
--    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
--      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'  # a.out
--    else
--      archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts'      # ELF
--    fi
--    hardcode_libdir_flag_spec='${wl}-R$libdir'
--    hardcode_direct=yes
--    hardcode_shlibpath_var=no
--    ;;
--
--  openbsd*)
--    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'
--    hardcode_libdir_flag_spec='-R$libdir'
--    hardcode_direct=yes
--    hardcode_shlibpath_var=no
--    ;;
--
--  os2*)
--    hardcode_libdir_flag_spec='-L$libdir'
--    hardcode_minus_L=yes
--    allow_undefined_flag=unsupported
--    archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def'
--    old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def'
--    ;;
--
--  osf3*)
--    if test "$with_gcc" = yes; then
--      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
--      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
--    else
--      allow_undefined_flag=' -expect_unresolved \*'
--      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
--    fi
--    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
--    hardcode_libdir_separator=:
--    ;;
--
--  osf4* | osf5*)  # As osf3* with the addition of the -msym flag
--    if test "$with_gcc" = yes; then
--      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
--      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
--    else
--      allow_undefined_flag=' -expect_unresolved \*'
--      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
--    fi
--    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
--    hardcode_libdir_separator=:
--    ;;
--
--  sco3.2v5*)
--    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
--    hardcode_shlibpath_var=no
--    runpath_var=LD_RUN_PATH
--    hardcode_runpath_var=yes
--    ;;
--
--  solaris*)
--    no_undefined_flag=' -z text'
--    # $CC -shared without GNU ld will not create a library from C++
--    # object files and a static libstdc++, better avoid it by now
--    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts'
--    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 $linkopts~$rm $lib.exp'
--    hardcode_libdir_flag_spec='-R$libdir'
--    hardcode_shlibpath_var=no
--    case "$host_os" in
--    solaris2.[0-5] | solaris2.[0-5].*) ;;
--    *) # Supported since Solaris 2.6 (maybe 2.5.1?)
--      whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
--    esac
--    ;;
--
--  sunos4*)
--    archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts'
--    hardcode_libdir_flag_spec='-L$libdir'
--    hardcode_direct=yes
--    hardcode_minus_L=yes
--    hardcode_shlibpath_var=no
--    ;;
--
--  sysv4)
--    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
--    runpath_var='LD_RUN_PATH'
--    hardcode_shlibpath_var=no
--    hardcode_direct=no #Motorola manual says yes, but my tests say they lie 
--    ;;  
--
--  sysv4.3*)
--    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
--    hardcode_shlibpath_var=no
--    export_dynamic_flag_spec='-Bexport'
--    ;;
--
--  sysv5*)
--    no_undefined_flag=' -z text'
--    # $CC -shared without GNU ld will not create a library from C++
--    # object files and a static libstdc++, better avoid it by now
--    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts'
--    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 $linkopts~$rm $lib.exp'
--    hardcode_libdir_flag_spec=
--    hardcode_shlibpath_var=no
--    runpath_var='LD_RUN_PATH'
--    ;;
--
--  uts4*)
--    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
--    hardcode_libdir_flag_spec='-L$libdir'
--    hardcode_shlibpath_var=no
--    ;;
--
--  dgux*)
--    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
--    hardcode_libdir_flag_spec='-L$libdir'
--    hardcode_shlibpath_var=no
--    ;;
--
--  sysv4*MP*)
--    if test -d /usr/nec; then
--      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
--      hardcode_shlibpath_var=no
--      runpath_var=LD_RUN_PATH
--      hardcode_runpath_var=yes
--      ld_shlibs=yes
--    fi
--    ;;
--
--  sysv4.2uw2*)
--    archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts'
--    hardcode_direct=yes
--    hardcode_minus_L=no
--    hardcode_shlibpath_var=no
--    hardcode_runpath_var=yes
--    runpath_var=LD_RUN_PATH
--    ;;
--
--  unixware7*)
--    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
--    runpath_var='LD_RUN_PATH'
--    hardcode_shlibpath_var=no
--    ;;
--
--  *)
--    ld_shlibs=no
--    ;;
--  esac
--fi
--echo "$ac_t$ld_shlibs" 1>&6
--test "$ld_shlibs" = no && can_build_shared=no
--
--if test -z "$NM"; then
--  echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6
--  case "$NM" in
--  [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path.
--  *)
--    IFS="${IFS=       }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
--    for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do
--      test -z "$ac_dir" && ac_dir=.
--      if test -f $ac_dir/nm || test -f $ac_dir/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
--      if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
--        NM="$ac_dir/nm -B"
--        break
--      elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
--        NM="$ac_dir/nm -p"
--        break
--      else
--        NM=${NM="$ac_dir/nm"} # keep the first match, but
--        continue # so that we can try to find one that supports BSD flags
--      fi
--      fi
--    done
--    IFS="$ac_save_ifs"
--    test -z "$NM" && NM=nm
--    ;;
--  esac
--  echo "$ac_t$NM" 1>&6
--fi
--
--# Check for command to grab the raw symbol name followed by C symbol from nm.
--echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6
--
--# 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]*\)'
--
--# Transform the above into a raw symbol and a C symbol.
--symxfrm='\1 \2\3 \3'
--
--# Transform an extracted symbol line into a proper C declaration
--global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
--
--# Define system-specific variables.
--case "$host_os" in
--aix*)
--  symcode='[BCDT]'
--  ;;
--cygwin* | mingw*)
--  symcode='[ABCDGISTW]'
--  ;;
--hpux*) # Its linker distinguishes data from code symbols
--  global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'"
--  ;;
--irix*)
--  symcode='[BCDEGRST]'
--  ;;
--solaris*)
--  symcode='[BDT]'
--  ;;
--sysv4)
--  symcode='[DFNSTU]'
--  ;;
--esac
--
--# If we're using GNU nm, then use its standard symbol codes.
--if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
--  symcode='[ABCDGISTW]'
--fi
--
--# Try without a prefix undercore, then with it.
--for ac_symprfx in "" "_"; do
--
--  # Write the raw and C identifiers.
--  global_symbol_pipe="sed -n -e 's/^.*[       ]\($symcode\)[  ][      ]*\($ac_symprfx\)$sympat$/$symxfrm/p'"
--
--  # Check to see that the pipe works correctly.
--  pipe_works=no
--  $rm conftest*
--  cat > conftest.c <<EOF
--#ifdef __cplusplus
--extern "C" {
--#endif
--char nm_test_var;
--void nm_test_func(){}
--#ifdef __cplusplus
--}
--#endif
--main(){nm_test_var='a';nm_test_func();return(0);}
--EOF
--
--  echo "$progname:1635: checking if global_symbol_pipe works" >&5
--  if { (eval echo $progname:1636: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then
--    # Now try to grab the symbols.
--    nlist=conftest.nm
--    if { echo "$progname:1639: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && 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 egrep ' nm_test_var$' "$nlist" >/dev/null; then
--      if egrep ' nm_test_func$' "$nlist" >/dev/null; then
--        cat <<EOF > conftest.c
--#ifdef __cplusplus
--extern "C" {
--#endif
--
--EOF
--        # Now generate the symbol file.
--        eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c'
--
--        cat <<EOF >> conftest.c
--#if defined (__STDC__) && __STDC__
--# define lt_ptr_t void *
--#else
--# define lt_ptr_t char *
--# define const
--#endif
--
--/* The mapping between symbol names and symbols. */
--const struct {
--  const char *name;
--  lt_ptr_t address;
--}
--lt_preloaded_symbols[] =
--{
--EOF
--        sed 's/^. \(.*\) \(.*\)$/  {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c
--        cat <<\EOF >> conftest.c
--  {0, (lt_ptr_t) 0}
--};
--
--#ifdef __cplusplus
--}
--#endif
--EOF
--        # Now try linking the two files.
--        mv conftest.$objext conftstm.$objext
--        save_LIBS="$LIBS"
--        save_CFLAGS="$CFLAGS"
--        LIBS="conftstm.$objext"
--        CFLAGS="$CFLAGS$no_builtin_flag"
--        if { (eval echo $progname:1691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
--          pipe_works=yes
--        else
--          echo "$progname: failed program was:" >&5
--          cat conftest.c >&5
--        fi
--        LIBS="$save_LIBS"
--      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 $global_symbol_pipe" >&5
--    fi
--  else
--    echo "$progname: failed program was:" >&5
--    cat conftest.c >&5
--  fi
--  $rm conftest* conftst*
--
--  # Do not use the global_symbol_pipe unless it works.
--  if test "$pipe_works" = yes; then
--    break
--  else
--    global_symbol_pipe=
--  fi
--done
--if test "$pipe_works" = yes; then
--  echo "${ac_t}ok" 1>&6
--else
--  echo "${ac_t}failed" 1>&6
--fi
--
--if test -z "$global_symbol_pipe"; then
--  global_symbol_to_cdecl=
--fi
--
--# Check hardcoding attributes.
--echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6
--hardcode_action=
--if test -n "$hardcode_libdir_flag_spec" || \
--   test -n "$runpath_var"; then
--
--  # We can hardcode non-existant 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 "$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
--echo "$ac_t$hardcode_action" 1>&6
--
--
--reload_flag=
--reload_cmds='$LD$reload_flag -o $output$reload_objs'
--echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6
--# PORTME Some linkers may need a different reload flag.
--reload_flag='-r'
--echo "$ac_t$reload_flag" 1>&6
--test -n "$reload_flag" && reload_flag=" $reload_flag"
--
--# PORTME Fill in your ld.so characteristics
--library_names_spec=
--libname_spec='lib$name'
--soname_spec=
--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"
--sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
--file_magic_cmd=
--file_magic_test_file=
--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 egrep 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.
--echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6
--case "$host_os" in
--aix3*)
--  version_type=linux
--  library_names_spec='${libname}${release}.so$versuffix $libname.a'
--  shlibpath_var=LIBPATH
--
--  # AIX has no versioning support, so we append a major version to the name.
--  soname_spec='${libname}${release}.so$major'
--  ;;
--
--aix4*)
--  version_type=linux
--  # AIX 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.
--  # We preserve .a as extension for shared libraries though AIX4.2
--  # and later linker supports .so
--  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a'
--  shlibpath_var=LIBPATH
--  deplibs_check_method=pass_all
--  ;;
--
--amigaos*)
--  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=`$echo "X$lib" | $Xsed -e '\''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'
--  ;;
--
--beos*)
--  library_names_spec='${libname}.so'
--  dynamic_linker="$host_os ld.so"
--  shlibpath_var=LIBRARY_PATH
--  deplibs_check_method=pass_all
--  lt_cv_dlopen="load_add_on"
--  lt_cv_dlopen_libs=
--  lt_cv_dlopen_self=yes
--  ;;
--
--bsdi4*)
--  version_type=linux
--  need_version=no
--  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
--  soname_spec='${libname}${release}.so$major'
--  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
--  shlibpath_var=LD_LIBRARY_PATH
--  deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
--  file_magic_cmd=/usr/bin/file
--  file_magic_test_file=/shlib/libc.so
--  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"
--  export_dynamic_flag_spec=-rdynamic
--  # 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*)
--  version_type=windows
--  need_version=no
--  need_lib_prefix=no
--  if test "$with_gcc" = yes; then
--    library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a'
--  else
--    library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
--  fi
--  dynamic_linker='Win32 ld.exe'
--  deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
--  file_magic_cmd='${OBJDUMP} -f'
--  # FIXME: first we should search . and the directory the executable is in
--  shlibpath_var=PATH
--  lt_cv_dlopen="LoadLibrary"
--  lt_cv_dlopen_libs=
--  ;;
--
--freebsd1*)
--  dynamic_linker=no
--  ;;
--  
--freebsd*)
--  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
--  version_type=freebsd-$objformat
--  case "$version_type" in
--    freebsd-elf*)
--      deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
--      file_magic_cmd=/usr/bin/file
--      file_magic_test_file=`echo /usr/lib/libc.so*`
--      library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
--      need_version=no
--      need_lib_prefix=no
--      ;;
--    freebsd-*)
--      deplibs_check_method=unknown
--      library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
--      need_version=yes
--      ;;
--  esac
--  shlibpath_var=LD_LIBRARY_PATH
--  case "$host_os" in
--  freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*)
--    shlibpath_overrides_runpath=yes
--    ;;
--  *) # from 3.2 on
--    shlibpath_overrides_runpath=no
--    ;;
--  esac
--  ;;
--
--gnu*)
--  version_type=linux
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
--  soname_spec='${libname}${release}.so$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  ;;
--
--hpux9* | hpux10* | hpux11*)
--  # Give a soname corresponding to the major version so that dld.sl refuses to
--  # link against other versions.
--  dynamic_linker="$host_os dld.sl"
--  version_type=sunos
--  need_lib_prefix=no
--  need_version=no
--  shlibpath_var=SHLIB_PATH
--  shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
--  library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
--  soname_spec='${libname}${release}.sl$major'
--  # HP-UX runs *really* slowly unless shared libraries are mode 555.
--  postinstall_cmds='chmod 555 $lib'
--  ;;
--
--irix5* | irix6*)
--  version_type=irix
--  need_lib_prefix=no
--  need_version=no
--  soname_spec='${libname}${release}.so.$major'
--  library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so'
--  case "$host_os" in
--  irix5*)
--    libsuff= shlibsuff=
--    # this will be overridden with pass_all, but let us keep it just in case
--    deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
--    ;;
--  *)
--    case "$LD" in # libtool.m4 will add one of these switches to LD
--    *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
--    *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
--    *-64|*"-64 ") 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}"
--  file_magic_cmd=/usr/bin/file
--  file_magic_test_file=`echo /lib${libsuff}/libc.so*`
--  deplibs_check_method='pass_all'
--  ;;
--
--# No shared lib support for Linux oldld, aout, or coff.
--linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
--  dynamic_linker=no
--  ;;
--
--# This must be Linux ELF.
--linux-gnu*)
--  version_type=linux
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
--  soname_spec='${libname}${release}.so$major'
--  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=no
--  deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
--  file_magic_cmd=/usr/bin/file
--  file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
--
--  if test -f /lib/ld.so.1; then
--    dynamic_linker='GNU ld.so'
--  else
--    # Only the GNU ld.so supports shared libraries on MkLinux.
--    case "$host_cpu" in
--    powerpc*) dynamic_linker=no ;;
--    *) dynamic_linker='Linux ld.so' ;;
--    esac
--  fi
--  ;;
--
--netbsd*)
--  version_type=sunos
--  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
--    library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
--    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
--    dynamic_linker='NetBSD (a.out) ld.so'
--  else
--    library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
--    soname_spec='${libname}${release}.so$major'
--    dynamic_linker='NetBSD ld.elf_so'
--  fi
--  shlibpath_var=LD_LIBRARY_PATH
--  ;;
--
--openbsd*)
--  version_type=sunos
--  if test "$with_gnu_ld" = yes; then
--    need_lib_prefix=no
--    need_version=no
--  fi
--  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
--  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
--  shlibpath_var=LD_LIBRARY_PATH
--  ;;
--
--os2*)
--  libname_spec='$name'
--  need_lib_prefix=no
--  library_names_spec='$libname.dll $libname.a'
--  dynamic_linker='OS/2 ld.exe'
--  shlibpath_var=LIBPATH
--  ;;
--
--osf3* | osf4* | osf5*)
--  version_type=osf
--  need_version=no
--  soname_spec='${libname}${release}.so'
--  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
--  shlibpath_var=LD_LIBRARY_PATH
--  # this will be overridden with pass_all, but let us keep it just in case
--  deplibs_check_method='file_magic COFF format alpha shared library'
--  file_magic_cmd=/usr/bin/file
--  file_magic_test_file=/shlib/libc.so
--  deplibs_check_method='pass_all'
--  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"
--  ;;
--
--sco3.2v5*)
--  version_type=osf
--  soname_spec='${libname}${release}.so$major'
--  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
--  shlibpath_var=LD_LIBRARY_PATH
--  ;;
--
--solaris*)
--  version_type=linux
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
--  soname_spec='${libname}${release}.so$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  shlibpath_overrides_runpath=yes
--  # ldd complains unless libraries are executable
--  postinstall_cmds='chmod +x $lib'
--  deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib"
--  file_magic_cmd=/usr/bin/file
--  file_magic_test_file=/lib/libc.so
--  ;;
--
--sunos4*)
--  version_type=sunos
--  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$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.2uw2* | sysv4.3* | sysv5*)
--  version_type=linux
--  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
--  soname_spec='${libname}${release}.so$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  case "$host_vendor" in
--    ncr)
--      deplibs_check_method='pass_all'
--      ;;
--    motorola)
--      need_lib_prefix=no
--      need_version=no
--      shlibpath_overrides_runpath=no
--      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
--      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]'
--      file_magic_cmd=/usr/bin/file
--      file_magic_test_file=`echo /usr/lib/libc.so*`
--      ;;
--  esac
--  ;;
--
--uts4*)
--  version_type=linux
--  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
--  soname_spec='${libname}${release}.so$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  ;;
--
--dgux*)
--  version_type=linux
--  need_lib_prefix=no
--  need_version=no
--  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
--  soname_spec='${libname}${release}.so$major'
--  shlibpath_var=LD_LIBRARY_PATH
--  ;;
--
--sysv4*MP*)
--  if test -d /usr/nec ;then
--    version_type=linux
--    library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
--    soname_spec='$libname.so.$major'
--    shlibpath_var=LD_LIBRARY_PATH
--  fi
--  ;;
--
--*)
--  dynamic_linker=no
--  ;;
--esac
--echo "$ac_t$dynamic_linker" 1>&6
--test "$dynamic_linker" = no && can_build_shared=no
--
--# Report the final consequences.
--echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6
--
--# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in
--# configure.in, otherwise build static only libraries.
--case "$host_os" in
--cygwin* | mingw* | os2*)
--  if test x$can_build_shared = xyes; then
--    test x$enable_win32_dll = xno && can_build_shared=no
--    echo "checking if package supports dlls... $can_build_shared" 1>&6
--  fi
--;;
--esac
--
--if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then
--  case "$deplibs_check_method" in
--  "file_magic "*)
--    file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
--    if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
--       egrep "$file_magic_regex" > /dev/null; then
--      :
--    else
--      cat <<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@gnu.org
--
--EOF
--    fi ;;
--  esac
--fi
--
--echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&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
--  ;;
--
--aix4*)
--  test "$enable_shared" = yes && enable_static=no
--  ;;
--esac
--
--echo "$ac_t$enable_shared" 1>&6
--
--# Make sure either enable_shared or enable_static is yes.
--test "$enable_shared" = yes || enable_static=yes
--
--echo "checking whether to build static libraries... $enable_static" 1>&6
--
--if test "$hardcode_action" = relink; 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
--
--echo $ac_n "checking for objdir... $ac_c" 1>&6
--rm -f .libs 2>/dev/null
--mkdir .libs 2>/dev/null
--if test -d .libs; then
--  objdir=.libs
--else
--  # MS-DOS does not allow filenames that begin with a dot.
--  objdir=_libs
--fi
--rmdir .libs 2>/dev/null
--echo "$ac_t$objdir" 1>&6
--
--if test "x$enable_dlopen" != xyes; then
--  enable_dlopen=unknown
--  enable_dlopen_self=unknown
--  enable_dlopen_self_static=unknown
--else
--if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then
--  lt_cv_dlopen=no lt_cv_dlopen_libs=
--echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
--echo "$progname:2212: checking for dlopen in -ldl" >&5
--ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
--  echo $ac_n "(cached) $ac_c" 1>&6
--else
--  ac_save_LIBS="$LIBS"
--LIBS="-ldl  $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 2220 "ltconfig"
--/* Override any gcc2 internal prototype to avoid an error.  */
--/* We use char because int might match the return type of a gcc2
--    builtin and then its argument prototype would still apply.  */
--#ifdef __cplusplus
--extern "C"
--#endif
--char dlopen();
--
--int main() {
--dlopen()
--; return 0; }
--EOF
--if { (eval echo $progname:2233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
--  rm -rf conftest*
--  eval "ac_cv_lib_$ac_lib_var=yes"
--else
--  echo "$progname: failed program was:" >&5
--  cat conftest.$ac_ext >&5
--  rm -rf conftest*
--  eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
--
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
--  echo "$ac_t""yes" 1>&6
--  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
--else
--  echo "$ac_t""no" 1>&6
--echo $ac_n "checking for dlopen""... $ac_c" 1>&6
--echo "$progname:2252: checking for dlopen" >&5
--if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
--  echo $ac_n "(cached) $ac_c" 1>&6
--else
--  cat > conftest.$ac_ext <<EOF
--#line 2257 "ltconfig"
--/* System header to define __stub macros and hopefully few prototypes,
--    which can conflict with char dlopen(); below.  */
--#include <assert.h>
--/* Override any gcc2 internal prototype to avoid an error.  */
--/* We use char because int might match the return type of a gcc2
--    builtin and then its argument prototype would still apply.  */
--#ifdef __cplusplus
--extern "C"
--#endif
--char dlopen();
--
--int main() {
--
--/* 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_dlopen) || defined (__stub___dlopen)
--choke me
--#else
--dlopen();
--#endif
--
--; return 0; }
--EOF
--if { (eval echo $progname:2282: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
--  rm -rf conftest*
--  eval "ac_cv_func_dlopen=yes"
--else
--  echo "$progname: failed program was:" >&5
--  cat conftest.$ac_ext >&5
--  rm -rf conftest*
--  eval "ac_cv_func_dlopen=no"
--fi
--rm -f conftest*
--fi
--if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
--  echo "$ac_t""yes" 1>&6
--  lt_cv_dlopen="dlopen"
--else
--  echo "$ac_t""no" 1>&6
--echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
--echo "$progname:2299: checking for dld_link in -ldld" >&5
--ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
--  echo $ac_n "(cached) $ac_c" 1>&6
--else
--  ac_save_LIBS="$LIBS"
--LIBS="-ldld  $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 2307 "ltconfig"
--/* Override any gcc2 internal prototype to avoid an error.  */
--/* We use char because int might match the return type of a gcc2
--    builtin and then its argument prototype would still apply.  */
--#ifdef __cplusplus
--extern "C"
--#endif
--char dld_link();
--
--int main() {
--dld_link()
--; return 0; }
--EOF
--if { (eval echo $progname:2320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
--  rm -rf conftest*
--  eval "ac_cv_lib_$ac_lib_var=yes"
--else
--  echo "$progname: failed program was:" >&5
--  cat conftest.$ac_ext >&5
--  rm -rf conftest*
--  eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
--
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
--  echo "$ac_t""yes" 1>&6
--  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
--else
--  echo "$ac_t""no" 1>&6
--echo $ac_n "checking for shl_load""... $ac_c" 1>&6
--echo "$progname:2339: checking for shl_load" >&5
--if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then
--  echo $ac_n "(cached) $ac_c" 1>&6
--else
--  cat > conftest.$ac_ext <<EOF
--#line 2344 "ltconfig"
--/* System header to define __stub macros and hopefully few prototypes,
--    which can conflict with char shl_load(); below.  */
--#include <assert.h>
--/* Override any gcc2 internal prototype to avoid an error.  */
--/* We use char because int might match the return type of a gcc2
--    builtin and then its argument prototype would still apply.  */
--#ifdef __cplusplus
--extern "C"
--#endif
--char shl_load();
--
--int main() {
--
--/* 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_shl_load) || defined (__stub___shl_load)
--choke me
--#else
--shl_load();
--#endif
--
--; return 0; }
--EOF
--if { (eval echo $progname:2369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
--  rm -rf conftest*
--  eval "ac_cv_func_shl_load=yes"
--else
--  echo "$progname: failed program was:" >&5
--  cat conftest.$ac_ext >&5
--  rm -rf conftest*
--  eval "ac_cv_func_shl_load=no"
--fi
--rm -f conftest*
--fi
--
--if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then
--  echo "$ac_t""yes" 1>&6
--  lt_cv_dlopen="shl_load"
--else
--  echo "$ac_t""no" 1>&6
--echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
--echo "$progname:2387: checking for shl_load in -ldld" >&5
--ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
--if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
--  echo $ac_n "(cached) $ac_c" 1>&6
--else
--  ac_save_LIBS="$LIBS"
--LIBS="-ldld  $LIBS"
--cat > conftest.$ac_ext <<EOF
--#line 2395 "ltconfig"
--#include "confdefs.h"
--/* Override any gcc2 internal prototype to avoid an error.  */
--/* We use char because int might match the return type of a gcc2
--    builtin and then its argument prototype would still apply.  */
--#ifdef __cplusplus
--extern "C"
--#endif
--char shl_load();
--
--int main() {
--shl_load()
--; return 0; }
--EOF
--if { (eval echo $progname:2409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
--  rm -rf conftest*
--  eval "ac_cv_lib_$ac_lib_var=yes"
--else
--  echo "$progname: failed program was:" >&5
--  cat conftest.$ac_ext >&5
--  rm -rf conftest*
--  eval "ac_cv_lib_$ac_lib_var=no"
--fi
--rm -f conftest*
--LIBS="$ac_save_LIBS"
--
--fi
--if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
--  echo "$ac_t""yes" 1>&6
--  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
--else
--  echo "$ac_t""no" 1>&6
--fi
--
--
--fi
--
--    
--fi
--
--  
--fi
--
--
--fi
--
--fi
--
--  if test "x$lt_cv_dlopen" != xno; then
--    enable_dlopen=yes
--  fi
--
--  case "$lt_cv_dlopen" in
--  dlopen)
--for ac_hdr in dlfcn.h; do
--ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
--echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
--echo "$progname:2452: checking for $ac_hdr" >&5
--if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
--  echo $ac_n "(cached) $ac_c" 1>&6
--else
--  cat > conftest.$ac_ext <<EOF
--#line 2457 "ltconfig"
--#include <$ac_hdr>
--int fnord = 0;
--EOF
--ac_try="$ac_compile >/dev/null 2>conftest.out"
--{ (eval echo $progname:2462: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
--ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
--if test -z "$ac_err"; then
--  rm -rf conftest*
--  eval "ac_cv_header_$ac_safe=yes"
--else
--  echo "$ac_err" >&5
--  echo "$progname: failed program was:" >&5
--  cat conftest.$ac_ext >&5
--  rm -rf conftest*
--  eval "ac_cv_header_$ac_safe=no"
--fi
--rm -f conftest*
--fi
--if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
--  echo "$ac_t""yes" 1>&6
--else
--  echo "$ac_t""no" 1>&6
--fi
--done
--
--    if test "x$ac_cv_header_dlfcn_h" = xyes; then
--      CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
--    fi
--    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
--    LIBS="$lt_cv_dlopen_libs $LIBS"
--
--  echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
--echo "$progname:2490: checking whether a program can dlopen itself" >&5
--if test "${lt_cv_dlopen_self+set}" = set; then
--  echo $ac_n "(cached) $ac_c" 1>&6
--else
--  if test "$cross_compiling" = yes; then
--    lt_cv_dlopen_self=cross
--  else
--    cat > conftest.c <<EOF
--#line 2498 "ltconfig"
--
--#if HAVE_DLFCN_H
--#include <dlfcn.h>
--#endif
--
--#include <stdio.h>
--
--#ifdef RTLD_GLOBAL
--# define LTDL_GLOBAL  RTLD_GLOBAL
--#else
--# ifdef DL_GLOBAL
--#  define LTDL_GLOBAL DL_GLOBAL
--# else
--#  define LTDL_GLOBAL 0
--# endif
--#endif
--
--/* We may have to define LTDL_LAZY_OR_NOW in the command line if we
--   find out it does not work in some platform. */
--#ifndef LTDL_LAZY_OR_NOW
--# ifdef RTLD_LAZY
--#  define LTDL_LAZY_OR_NOW    RTLD_LAZY
--# else
--#  ifdef DL_LAZY
--#   define LTDL_LAZY_OR_NOW   DL_LAZY
--#  else
--#   ifdef RTLD_NOW
--#    define LTDL_LAZY_OR_NOW  RTLD_NOW
--#   else
--#    ifdef DL_NOW
--#     define LTDL_LAZY_OR_NOW DL_NOW
--#    else
--#     define LTDL_LAZY_OR_NOW 0
--#    endif
--#   endif
--#  endif
--# endif
--#endif
--
--fnord() { int i=42;}
--main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
--    if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
--             if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } 
--
--EOF
--if { (eval echo $progname:2544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
--then
--  lt_cv_dlopen_self=yes
--else
--  echo "$progname: failed program was:" >&5
--  cat conftest.$ac_ext >&5
--  rm -fr conftest*
--  lt_cv_dlopen_self=no
--fi
--rm -fr conftest*
--fi
--
--fi
--
--echo "$ac_t""$lt_cv_dlopen_self" 1>&6
--
--  if test "$lt_cv_dlopen_self" = yes; then
--    LDFLAGS="$LDFLAGS $link_static_flag"
--  echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
--echo "$progname:2563: checking whether a statically linked program can dlopen itself" >&5
--if test "${lt_cv_dlopen_self_static+set}" = set; then
--  echo $ac_n "(cached) $ac_c" 1>&6
--else
--  if test "$cross_compiling" = yes; then
--    lt_cv_dlopen_self_static=cross
--  else
--    cat > conftest.c <<EOF
--#line 2571 "ltconfig"
--
--#if HAVE_DLFCN_H
--#include <dlfcn.h>
--#endif
--
--#include <stdio.h>
--
--#ifdef RTLD_GLOBAL
--# define LTDL_GLOBAL  RTLD_GLOBAL
--#else
--# ifdef DL_GLOBAL
--#  define LTDL_GLOBAL DL_GLOBAL
--# else
--#  define LTDL_GLOBAL 0
--# endif
--#endif
--
--/* We may have to define LTDL_LAZY_OR_NOW in the command line if we
--   find out it does not work in some platform. */
--#ifndef LTDL_LAZY_OR_NOW
--# ifdef RTLD_LAZY
--#  define LTDL_LAZY_OR_NOW    RTLD_LAZY
--# else
--#  ifdef DL_LAZY
--#   define LTDL_LAZY_OR_NOW   DL_LAZY
--#  else
--#   ifdef RTLD_NOW
--#    define LTDL_LAZY_OR_NOW  RTLD_NOW
--#   else
--#    ifdef DL_NOW
--#     define LTDL_LAZY_OR_NOW DL_NOW
--#    else
--#     define LTDL_LAZY_OR_NOW 0
--#    endif
--#   endif
--#  endif
--# endif
--#endif
--
--fnord() { int i=42;}
--main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
--    if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
--    if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } 
--
--EOF
--if { (eval echo $progname:2617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
--then
--  lt_cv_dlopen_self_static=yes
--else
--  echo "$progname: failed program was:" >&5
--  cat conftest.$ac_ext >&5
--  rm -fr conftest*
--  lt_cv_dlopen_self_static=no
--fi
--rm -fr conftest*
--fi
--
--fi
--
--echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6
--fi
--    ;;
--  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
--
--# Copy echo and quote the copy, instead of the original, because it is
--# used later.
--ltecho="$echo"
--if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then
--   ltecho="$CONFIG_SHELL \$0 --fallback-echo"
--fi
--LTSHELL="$SHELL"
--
--LTCONFIG_VERSION="$VERSION"
--
--# Only quote variables if we're using ltmain.sh.
--case "$ltmain" in
--*.sh)
--  # Now quote all the things that may contain metacharacters.
--  for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \
--    old_LD old_LDFLAGS old_LIBS \
--    old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \
--    AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \
--    reload_flag reload_cmds wl \
--    pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
--    thread_safe_flag_spec whole_archive_flag_spec libname_spec \
--    library_names_spec soname_spec \
--    RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
--    old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \
--    file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \
--    finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
--    hardcode_libdir_flag_spec hardcode_libdir_separator  \
--    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
--    compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
--
--    case "$var" in
--    reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
--    old_postinstall_cmds | old_postuninstall_cmds | \
--    export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
--    postinstall_cmds | postuninstall_cmds | \
--    finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
--      # Double-quote double-evaled strings.
--      eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
--      ;;
--    *)
--      eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
--      ;;
--    esac
--  done
--
--  case "$ltecho" in
--  *'\$0 --fallback-echo"')
--    ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
--    ;;
--  esac
--
--  trap "$rm \"$ofile\"; exit 1" 1 2 15
--  echo "creating $ofile"
--  $rm "$ofile"
--  cat <<EOF > "$ofile"
--#! $SHELL
--
--# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
--# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
--# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh.
--#
--# Copyright (C) 1996-1999 Free Software Foundation, Inc.
--# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
--#
--# This program 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.
--#
--# 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, write to the Free Software
--# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--#
--# 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.
--
--# Sed that helps us avoid accidentally triggering echo(1) options like -n.
--Xsed="sed -e s/^X//"
--
--# The HP-UX ksh and POSIX shell print the target directory to stdout
--# if CDPATH is set.
--if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
--
--### BEGIN LIBTOOL CONFIG
--EOF
--  cfgfile="$ofile"
--  ;;
--
--*)
--  # Double-quote the variables that need it (for aesthetics).
--  for var in old_CC old_CFLAGS old_CPPFLAGS \
--    old_LD old_LDFLAGS old_LIBS \
--    old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do
--    eval "$var=\\\"\$var\\\""
--  done
--
--  # Just create a config file.
--  cfgfile="$ofile.cfg"
--  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
--  echo "creating $cfgfile"
--  $rm "$cfgfile"
--  cat <<EOF > "$cfgfile"
--# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file.
--# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
--EOF
--  ;;
--esac
--
--cat <<EOF >> "$cfgfile"
--# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
--#
--# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\
--# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\
--# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\
--# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\
--#   $0$ltconfig_args
--#
--# Compiler and other test output produced by $progname, useful for
--# debugging $progname, is in ./config.log if it exists.
--
--# The version of $progname that generated this script.
--LTCONFIG_VERSION=$LTCONFIG_VERSION
--
--# Shell to use when invoking shell scripts.
--SHELL=$LTSHELL
--
--# Whether or not to build shared libraries.
--build_libtool_libs=$enable_shared
--
--# Whether or not to build static libraries.
--build_old_libs=$enable_static
--
--# Whether or not to optimize for fast installation.
--fast_install=$enable_fast_install
--
--# The host system.
--host_alias=$host_alias
--host=$host
--
--# An echo program that does not interpret backslashes.
--echo=$ltecho
--
--# The archiver.
--AR=$AR
--
--# The default C compiler.
--CC=$CC
--
--# The linker used to build libraries.
--LD=$LD
--
--# Whether we need hard or soft links.
--LN_S=$LN_S
--
--# A BSD-compatible nm program.
--NM=$NM
--
--# Used on cygwin: DLL creation program.
--DLLTOOL="$DLLTOOL"
--
--# Used on cygwin: object dumper.
--OBJDUMP="$OBJDUMP"
--
--# Used on cygwin: assembler.
--AS="$AS"
--
--# The name of the directory that contains temporary libtool files.
--objdir=$objdir
--
--# How to create reloadable object files.
--reload_flag=$reload_flag
--reload_cmds=$reload_cmds
--
--# How to pass a linker flag through the compiler.
--wl=$wl
--
--# Object file suffix (normally "o").
--objext="$objext"
--
--# Old archive suffix (normally "a").
--libext="$libext"
--
--# Executable file suffix (normally "").
--exeext="$exeext"
--
--# Additional compiler flags for building library objects.
--pic_flag=$pic_flag
--
--# Does compiler simultaneously support -c and -o options?
--compiler_c_o=$compiler_c_o
--
--# Can we write directly to a .lo ?
--compiler_o_lo=$compiler_o_lo
--
--# Must we lock files when doing compilation ?
--need_locks=$need_locks
--
--# 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
--
--# Whether dlopen is supported.
--dlopen=$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
--
--# Compiler flag to prevent dynamic linking.
--link_static_flag=$link_static_flag
--
--# Compiler flag to turn off builtin functions.
--no_builtin_flag=$no_builtin_flag
--
--# Compiler flag to allow reflexive dlopens.
--export_dynamic_flag_spec=$export_dynamic_flag_spec
--
--# Compiler flag to generate shared objects directly from archives.
--whole_archive_flag_spec=$whole_archive_flag_spec
--
--# Compiler flag to generate thread-safe objects.
--thread_safe_flag_spec=$thread_safe_flag_spec
--
--# Library versioning type.
--version_type=$version_type
--
--# Format of library name prefix.
--libname_spec=$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=$library_names_spec
--
--# The coded name of the library, if different from the real name.
--soname_spec=$soname_spec
--
--# Commands used to build and install an old-style archive.
--RANLIB=$RANLIB
--old_archive_cmds=$old_archive_cmds
--old_postinstall_cmds=$old_postinstall_cmds
--old_postuninstall_cmds=$old_postuninstall_cmds
--
--# Create an old-style archive from a shared archive.
--old_archive_from_new_cmds=$old_archive_from_new_cmds
--
--# Commands used to build and install a shared archive.
--archive_cmds=$archive_cmds
--archive_expsym_cmds=$archive_expsym_cmds
--postinstall_cmds=$postinstall_cmds
--postuninstall_cmds=$postuninstall_cmds
--
--# Method to check whether dependent libraries are shared objects.
--deplibs_check_method=$deplibs_check_method
--
--# Command to use when deplibs_check_method == file_magic.
--file_magic_cmd=$file_magic_cmd
--
--# Flag that allows shared libraries with undefined symbols to be built.
--allow_undefined_flag=$allow_undefined_flag
--
--# Flag that forces no undefined symbols.
--no_undefined_flag=$no_undefined_flag
--
--# Commands used to finish a libtool library installation in a directory.
--finish_cmds=$finish_cmds
--
--# Same as above, but a single script fragment to be evaled but not shown.
--finish_eval=$finish_eval
--
--# Take the output of nm and produce a listing of raw symbols and C names.
--global_symbol_pipe=$global_symbol_pipe
--
--# Transform the output of nm in a proper C declaration
--global_symbol_to_cdecl=$global_symbol_to_cdecl
--
--# This is the shared library runtime path variable.
--runpath_var=$runpath_var
--
--# This is the shared library path variable.
--shlibpath_var=$shlibpath_var
--
--# Is shlibpath searched before the hard-coded library search path?
--shlibpath_overrides_runpath=$shlibpath_overrides_runpath
--
--# How to hardcode a shared library path into an executable.
--hardcode_action=$hardcode_action
--
--# Flag to hardcode \$libdir into a binary during linking.
--# This must work even if \$libdir does not exist.
--hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec
--
--# Whether we need a single -rpath flag with a separated argument.
--hardcode_libdir_separator=$hardcode_libdir_separator
--
--# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
--# resulting binary.
--hardcode_direct=$hardcode_direct
--
--# 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
--
--# Compile-time system search path for libraries
--sys_lib_search_path_spec=$sys_lib_search_path_spec
--
--# Run-time system search path for libraries
--sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec
--
--# Fix the shell variable \$srcfile for the compiler.
--fix_srcfile_path="$fix_srcfile_path"
--
--# Set to yes if exported symbols are required.
--always_export_symbols=$always_export_symbols
--
--# The commands to list exported symbols.
--export_symbols_cmds=$export_symbols_cmds
--
--# Symbols that should not be listed in the preloaded symbols.
--exclude_expsyms=$exclude_expsyms
--
--# Symbols that must always be exported.
--include_expsyms=$include_expsyms
--
--EOF
--
--case "$ltmain" in
--*.sh)
--  echo '### END LIBTOOL CONFIG' >> "$ofile"
--  echo >> "$ofile"
--  case "$host_os" in
--  aix3*)
--    cat <<\EOF >> "$ofile"
--
--# 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
--EOF
--    ;;
--  esac
--
--  # Append the ltmain.sh script.
--  sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1)
--  # 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?
--
--  chmod +x "$ofile"
--  ;;
--
--*)
--  # Compile the libtool program.
--  echo "FIXME: would compile $ltmain"
--  ;;
--esac
--
--test -n "$cache_file" || exit 0
--
--# AC_CACHE_SAVE
--trap '' 1 2 15
--cat > confcache <<\EOF
--# 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.  It is not useful on other systems.
--# If it contains results you don't want to keep, you may remove or edit it.
--#
--# By default, configure uses ./config.cache as the cache file,
--# creating it if it does not exist already.  You can give configure
--# the --cache-file=FILE option to use a different cache file; that is
--# what configure does when it calls configure scripts in
--# subdirectories, so they share the cache.
--# Giving --cache-file=/dev/null disables caching, for debugging configure.
--# config.status only pays attention to the cache file if you give it the
--# --recheck option to rerun configure.
--#
--EOF
--# The following way of writing the cache mishandles newlines in values,
--# but we know of no workaround that is simple, portable, and efficient.
--# So, don't put newlines in cache variables' values.
--# 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.
--(set) 2>&1 |
--  case `(ac_space=' '; set | grep ac_space) 2>&1` in
--  *ac_space=\ *)
--    # `set' does not quote correctly, so add quotes (double-quote substitution
--    # turns \\\\ into \\, and sed turns \\ into \).
--    sed -n \
--      -e "s/'/'\\\\''/g" \
--      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
--    ;;
--  *)
--    # `set' quotes correctly as required by POSIX, so do not add quotes.
--    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
--    ;;
--  esac >> confcache
--if cmp -s $cache_file confcache; then
--  :
--else
--  if test -w $cache_file; then
--    echo "updating cache $cache_file"
--    cat confcache > $cache_file
--  else
--    echo "not updating unwritable cache $cache_file"
--  fi
--fi
--rm -f confcache
--
--exit 0
--
--# Local Variables:
--# mode:shell-script
--# sh-indentation:2
--# End:
-diff --git a/libs/xmlrpc-c/src/.cvsignore b/libs/xmlrpc-c/src/.cvsignore
-deleted file mode 100644
-index b808ac3..0000000
---- a/libs/xmlrpc-c/src/.cvsignore
-+++ /dev/null
-@@ -1,6 +0,0 @@
--Makefile
--rpctest
--rpctest.static
--cpptest
--efrpctest
--efrpctest_wrapper
-diff --git a/libs/xmlrpc-c/src/Makefile b/libs/xmlrpc-c/src/Makefile
-index 50514b2..36300e9 100644
---- a/libs/xmlrpc-c/src/Makefile
-+++ b/libs/xmlrpc-c/src/Makefile
-@@ -48,15 +48,18 @@ SHARED_LIBS_TO_INSTALL := $(TARGET_LIBRARY_NAMES)
- TRANSPORT_MODS =
- TRANSPORT_LIBDEP =
- ifeq ($(MUST_BUILD_WININET_CLIENT),yes)
--  TRANSPORT_MODS += $(BLDDIR)/lib/wininet_transport/xmlrpc_wininet_transport
-+  TRANSPORT_MODS += blddir/lib/wininet_transport/xmlrpc_wininet_transport
-   TRANSPORT_LIBDEP += $(shell wininet-config --libs)
- endif
- ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
--  TRANSPORT_MODS += $(BLDDIR)/lib/curl_transport/xmlrpc_curl_transport
-+  TRANSPORT_MODS += blddir/lib/curl_transport/xmlrpc_curl_transport
-+  TRANSPORT_MODS += blddir/lib/curl_transport/curltransaction
-+  TRANSPORT_MODS += blddir/lib/curl_transport/curlmulti
-+  TRANSPORT_MODS += blddir/lib/curl_transport/lock_pthread
-   TRANSPORT_LIBDEP += $(shell curl-config --libs)
- endif
- ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
--  TRANSPORT_MODS += $(BLDDIR)/lib/libwww_transport/xmlrpc_libwww_transport
-+  TRANSPORT_MODS += blddir/lib/libwww_transport/xmlrpc_libwww_transport
-   TRANSPORT_LIBDEP += $(shell libwww-config --libs)
- endif
-@@ -66,14 +69,18 @@ ifeq ($(ENABLE_LIBXML2_BACKEND),yes)
-   XML_PARSER_LIBDEP_DEP =
- else
-   XMLRPC_XML_PARSER = xmlrpc_expat
--  XML_PARSER_LIBDEP = -L$(BLDDIR)/lib/expat/xmlparse -lxmlrpc_xmlparse
--  XML_PARSER_LIBDEP_DEP = $(LIBXMLRPC_XMLPARSE)
-+  XML_PARSER_LIBDEP = \
-+    -Lblddir/lib/expat/xmlparse -lxmlrpc_xmlparse \
-+    -Lblddir/lib/expat/xmltok -lxmlrpc_xmltok
-+  XML_PARSER_LIBDEP_DEP = $(LIBXMLRPC_XMLPARSE) $(LIBXMLRPC_XMLTOK)
- endif
- # LIBxxx_OBJS is the list of object files that make up library libxxx.
- LIBXMLRPC_MODS = \
-         double \
-+      json \
-+      parse_datetime \
-       parse_value \
-         resource \
-       trace \
-@@ -130,7 +137,7 @@ all: \
- # Extra dependencies to make parallel make work in spite of all the submakes
- # (See top level make file for details)
- ifeq ($MUST_BUILD_CLIENT),yes)
--cpp/all: $(BLDDIR)/transport_config.h
-+cpp/all: $(BLDDIR)/transport_config.h $(TARGET_SHARED_LE_LIBS)
- endif
- #-----------------------------------------------------------------------------
-@@ -160,7 +167,7 @@ $(LIBXMLRPC_SERVER): \
-   $(call shliblefn, libxmlrpc)
- $(LIBXMLRPC_SERVER): LIBOBJECTS = $(LIBXMLRPC_SERVER_MODS:%=%.osh)
- $(LIBXMLRPC_SERVER): LIBDEP = \
--  -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util -L. -lxmlrpc
-+   -L. -lxmlrpc $(XML_PARSER_LIBDEP) -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
- LIBXMLRPC_SERVER_ABYSS = $(call shlibfn, libxmlrpc_server_abyss)
-@@ -172,10 +179,9 @@ $(LIBXMLRPC_SERVER_ABYSS): \
-   $(call shliblefn, libxmlrpc)
- $(LIBXMLRPC_SERVER_ABYSS): LIBOBJECTS = $(LIBXMLRPC_SERVER_ABYSS_MODS:%=%.osh)
- $(LIBXMLRPC_SERVER_ABYSS): LIBDEP = \
--  -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util \
-   -L. -lxmlrpc_server \
-   -L$(LIBXMLRPC_ABYSS_DIR) -lxmlrpc_abyss \
--  -lxmlrpc
-+  -L. -lxmlrpc $(XML_PARSER_LIBDEP) -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
- LIBXMLRPC_SERVER_CGI = $(call shlibfn, libxmlrpc_server_cgi)
-@@ -186,7 +192,8 @@ $(LIBXMLRPC_SERVER_CGI): \
-   $(call shliblefn, libxmlrpc)
- $(LIBXMLRPC_SERVER_CGI): LIBOBJECTS = $(LIBXMLRPC_SERVER_CGI_MODS:%=%.osh)
- $(LIBXMLRPC_SERVER_CGI): LIBDEP = \
--  -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util -L. -lxmlrpc_server -lxmlrpc
-+  -L. -lxmlrpc_server \
-+  -L. -lxmlrpc $(XML_PARSER_LIBDEP) -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
- LIBXMLRPC_CLIENT = $(call shlibfn, libxmlrpc_client)
-@@ -199,10 +206,8 @@ $(LIBXMLRPC_CLIENT): LIBOBJECTS = \
-   $(LIBXMLRPC_CLIENT_MODS:%=%.osh) \
-   $(TRANSPORT_MODS:%=%.osh)
- $(LIBXMLRPC_CLIENT): LIBDEP = \
--  -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util \
--  -L. -lxmlrpc \
--  $(TRANSPORT_LIBDEP)
--
-+  $(TRANSPORT_LIBDEP) \
-+  -L. -lxmlrpc $(XML_PARSER_LIBDEP) -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
- libxmlrpc.a: $(LIBXMLRPC_MODS:%=%.o)
- libxmlrpc.a: LIBOBJECTS = $(LIBXMLRPC_MODS:%=%.o)
-@@ -229,20 +234,20 @@ libxmlrpc_client.a: LIBOBJECTS = \
- # Rules for these are in common.mk, courtesy of TARGET_MODS:
- BASIC_INCLUDES = \
--  -I$(BLDDIR) \
--  -I$(BLDDIR)/include \
--  -I$(SRCDIR)/include \
--  -I$(SRCDIR)/lib/util/include \
-+  -Iblddir \
-+  -Iblddir/include \
-+  -Isrcdir/include \
-+  -Isrcdir/lib/util/include \
- TRANSPORT_INCLUDES = \
--  -I$($SRCDIR)/lib/wininet_transport \
--  -I$(SRCDIR)/lib/curl_transport \
--  -I$(SRCDIR)/lib/libwww_transport \
-+  -Isrcdir/lib/wininet_transport \
-+  -Isrcdir/lib/curl_transport \
-+  -Isrcdir/lib/libwww_transport \
- ifeq ($(ENABLE_LIBXML2_BACKEND),yes)
-   LIBXML_INCLUDES = $(shell xml2-config --cflags)
- else
--  LIBXML_INCLUDES = -I$(SRCDIR)/lib/expat/xmlparse
-+  LIBXML_INCLUDES = -Isrcdir/lib/expat/xmlparse
- endif
- $(LIBXMLRPC_MODS:%=%.o) \
-@@ -259,14 +264,12 @@ $(LIBXMLRPC_SERVER_MODS:%=%.osh): \
- $(LIBXMLRPC_SERVER_ABYSS_MODS:%=%.o) \
- $(LIBXMLRPC_SERVER_ABYSS_MODS:%=%.osh): \
--  INCLUDES = $(BASIC_INCLUDES) -I$(SRCDIR)/lib/abyss/src
-+  INCLUDES = $(BASIC_INCLUDES) -Isrcdir/lib/abyss/src
- $(LIBXMLRPC_SERVER_CGI_MODS:%=%.o) \
- $(LIBXMLRPC_SERVER_CGI_MODS:%=%.osh): \
-   INCLUDES = $(BASIC_INCLUDES)
--CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
--
- check:
-       $(MAKE) -C test runtests
-@@ -275,12 +278,15 @@ check:
- .PHONY: install
- install: install-common $(SUBDIRS:%=%/install)
--.PHONY: clean clean-local distclean
--clean: clean-common clean-local $(SUBDIRS:%=%/clean)
-+.PHONY: clean clean-local distclean distclean-local
-+clean: clean-common clean-local
- clean-local:
-       $(MAKE) -C test clean
--distclean: clean-common clean-local distclean-common $(SUBDIRS:%=%/distclean)
-+distclean: clean distclean-local distclean-common
-+
-+distclean-local:
-+      $(MAKE) -C test distclean
- .PHONY: dep
- dep: $(SUBDIRS:%=%/dep) $(BLDDIR)/transport_config.h dep-common
-@@ -293,4 +299,4 @@ xmlrpc_client.o xmlrpc_client.osh: $(BLDDIR)/version.h
- registry.o registry.osh: $(BLDDIR)/version.h
- version.o version.osh: $(BLDDIR)/version.h
--include Makefile.depend
-+include depend.mk
-diff --git a/libs/xmlrpc-c/src/Makefile.depend b/libs/xmlrpc-c/src/Makefile.depend
-deleted file mode 100644
-index e69de29..0000000
-diff --git a/libs/xmlrpc-c/src/cpp/.cvsignore b/libs/xmlrpc-c/src/cpp/.cvsignore
-deleted file mode 100644
-index 19bccb9..0000000
---- a/libs/xmlrpc-c/src/cpp/.cvsignore
-+++ /dev/null
-@@ -1 +0,0 @@
--cpptest
-diff --git a/libs/xmlrpc-c/src/cpp/Makefile b/libs/xmlrpc-c/src/cpp/Makefile
-index fa2fac4..9142fcb 100644
---- a/libs/xmlrpc-c/src/cpp/Makefile
-+++ b/libs/xmlrpc-c/src/cpp/Makefile
-@@ -13,22 +13,26 @@ default: all
- # libxmlrpc_cpp is the legacy C++ wrapper library.  The others are the
- # more elaborate replacements.
--TARGET_LIB_NAMES_PP := \
-+TARGET_LIB_NAMES_PP = \
-   libxmlrpc_cpp \
--  libxmlrpc++ \
-+  lib$(LIBXMLRPCPP_NAME) \
-   libxmlrpc_server++ \
--  libxmlrpc_server_abyss++ \
-+  libxmlrpc_server_cgi++ \
-   libxmlrpc_server_pstream++ \
-   libxmlrpc_packetsocket \
-+ifeq ($(ENABLE_ABYSS_SERVER),yes)
-+  TARGET_LIB_NAMES_PP += libxmlrpc_server_abyss++
-+endif
-+
- ifeq ($(MUST_BUILD_CLIENT),yes)
-   TARGET_LIB_NAMES_PP += libxmlrpc_client++
- endif
- STATIC_LIBRARIES_TO_INSTALL = $(TARGET_STATIC_LIBRARIES)
--SHARED_LIBS_TO_BUILD := $(TARGET_LIB_NAMES_PP)
--SHARED_LIBS_TO_INSTALL := $(TARGET_LIB_NAMES_PP)
-+SHARED_LIBS_TO_BUILD = $(TARGET_LIB_NAMES_PP)
-+SHARED_LIBS_TO_INSTALL = $(TARGET_LIB_NAMES_PP)
- # INCLUDES and DEP_SOURCES are used by dep-common target
- INCLUDES = $(BASIC_INCLUDES) $(CLIENT_INCLUDES) $(LIBXML_INCLUDES) \
-@@ -45,11 +49,20 @@ else
-   LIBXML_INCLUDES = -Isrcdir/lib/expat/xmlparse
- endif
-+ifeq ($(ENABLE_LIBXML2_BACKEND),yes)
-+  XML_PARSER_LIBDEP = $(shell xml2-config --libs)
-+else
-+  XML_PARSER_LIBDEP = \
-+    -L$(BLDDIR)/lib/expat/xmlparse -lxmlrpc_xmlparse \
-+    -L$(BLDDIR)/lib/expat/xmltok -lxmlrpc_xmltok
-+endif
-+
- LIBXMLRPCPP_MODS = \
-   base64 env_wrap fault girerr girmem outcome param_list value xml
- LIBXMLRPC_SERVERPP_MODS = registry
- LIBXMLRPC_SERVER_ABYSSPP_MODS = server_abyss
--LIBXMLRPC_SERVER_PSTREAMPP_MODS = server_pstream
-+LIBXMLRPC_SERVER_CGIPP_MODS = server_cgi
-+LIBXMLRPC_SERVER_PSTREAMPP_MODS = server_pstream_conn server_pstream
- LIBXMLRPC_CLIENTPP_MODS = client client_simple curl libwww wininet pstream
- LIBXMLRPC_PACKETSOCKET_MODS = packetsocket
-@@ -58,12 +71,13 @@ TARGET_MODS_PP = \
-   $(LIBXMLRPCPP_MODS) \
-   $(LIBXMLRPC_SERVERPP_MODS) \
-   $(LIBXMLRPC_SERVER_ABYSSPP_MODS) \
-+  $(LIBXMLRPC_SERVER_CGIPP_MODS) \
-   $(LIBXMLRPC_SERVER_PSTREAMPP_MODS) \
-   $(LIBXMLRPC_CLIENTPP_MODS) \
-   $(LIBXMLRPC_PACKETSOCKET_MODS) \
- OMIT_CPP_LIB_RULES = Y
--MAJ=4
-+MAJ = 7
-   # Major number of shared libraries in this directory
- include $(SRCDIR)/common.mk
-@@ -104,63 +118,120 @@ all: \
- # shlibfn generates e.g. libxmlrpc.so.3.1
- # shliblefn generates e.g. libxmlrpc.so
--LIBXMLRPC_CPP = $(call shlibfn, libxmlrpc_cpp)
-+LIBXMLRPC_CPP_SH = $(call shlibfn, libxmlrpc_cpp)
--$(LIBXMLRPC_CPP): XmlRpcCpp.osh
--$(LIBXMLRPC_CPP): LIBOBJECTS = XmlRpcCpp.osh
-+$(LIBXMLRPC_CPP_SH): XmlRpcCpp.osh \
-+  $(LIBXMLRPC_UTIL) \
-+  $(LIBXMLRPC) \
-+  $(LIBXMLRPC_SERVER) \
-+  $(LIBXMLRPC_UTIL)
-+$(LIBXMLRPC_CPP_SH): LIBOBJECTS = XmlRpcCpp.osh
-+$(LIBXMLRPC_CPP_SH): LIBDEP = \
-+  -Lblddir/src  -lxmlrpc_server -lxmlrpc \
-+  $(XML_PARSER_LIBDEP) \
-+  -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
--LIBXMLRPCPP = $(call shlibfn, libxmlrpc++)
-+LIBXMLRPCPP_SH = $(call shlibfn, lib$(LIBXMLRPCPP_NAME))
--$(LIBXMLRPCPP): $(LIBXMLRPCPP_MODS:%=%.osh) \
--  $(LIBXMLRPC)
--$(LIBXMLRPCPP): LIBOBJECTS = $(LIBXMLRPCPP_MODS:%=%.osh)
--$(LIBXMLRPCPP): LIBDEP = -Lblddir/src -lxmlrpc
-+$(LIBXMLRPCPP_SH): $(LIBXMLRPCPP_MODS:%=%.osh) \
-+  $(LIBXMLRPC) \
-+  $(LIBXMLRPC_UTIL)
-+$(LIBXMLRPCPP_SH): LIBOBJECTS = $(LIBXMLRPCPP_MODS:%=%.osh)
-+$(LIBXMLRPCPP_SH): LIBDEP = \
-+  -Lblddir/src -lxmlrpc \
-+  $(XML_PARSER_LIBDEP) \
-+  -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
--LIBXMLRPC_SERVERPP = $(call shlibfn, libxmlrpc_server++)
--$(LIBXMLRPC_SERVERPP): $(LIBXMLRPC_SERVERPP_MODS:%=%.osh) \
-+LIBXMLRPC_SERVERPP_SH = $(call shlibfn, libxmlrpc_server++)
-+
-+$(LIBXMLRPC_SERVERPP_SH): $(LIBXMLRPC_SERVERPP_MODS:%=%.osh) \
-   $(LIBXMLRPC_SERVER) \
-+  $(call shliblefn, lib$(LIBXMLRPCPP_NAME)) \
-+  $(LIBXMLRPC_UTIL) \
-   $(LIBXMLRPC)
--$(LIBXMLRPC_SERVERPP): LIBOBJECTS = $(LIBXMLRPC_SERVERPP_MODS:%=%.osh)
--$(LIBXMLRPC_SERVERPP): LIBDEP = -Lblddir/src -lxmlrpc_server -lxmlrpc
-+$(LIBXMLRPC_SERVERPP_SH): LIBOBJECTS = $(LIBXMLRPC_SERVERPP_MODS:%=%.osh)
-+$(LIBXMLRPC_SERVERPP_SH): LIBDEP = \
-+  -L. -l$(LIBXMLRPCPP_NAME) \
-+  -Lblddir/src -lxmlrpc_server -lxmlrpc \
-+  $(XML_PARSER_LIBDEP) \
-+  -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
--LIBXMLRPC_SERVER_ABYSSPP = $(call shlibfn, libxmlrpc_server_abyss++)
-+LIBXMLRPC_SERVER_ABYSSPP_SH = $(call shlibfn, libxmlrpc_server_abyss++)
--$(LIBXMLRPC_SERVER_ABYSSPP): $(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.osh) \
-+$(LIBXMLRPC_SERVER_ABYSSPP_SH): $(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.osh) \
-   $(LIBXMLRPC_ABYSS) \
-+  $(LIBXMLRPC_SERVER_ABYSS) \
-+  $(call shliblefn, lib$(LIBXMLRPCPP_NAME)) \
-+  $(call shlibfn, libxmlrpc_server++) \
-+  $(LIBXMLRPC_UTIL) \
-+  $(LIBXMLRPC)
-+$(LIBXMLRPC_SERVER_ABYSSPP_SH): LIBOBJECTS = $(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.osh)
-+$(LIBXMLRPC_SERVER_ABYSSPP_SH): LIBDEP = \
-+   -L. -lxmlrpc_server++  -l$(LIBXMLRPCPP_NAME) \
-+   -Lblddir/src -lxmlrpc_server_abyss -lxmlrpc_server -lxmlrpc \
-+   $(XML_PARSER_LIBDEP) \
-+   -L$(LIBXMLRPC_ABYSS_DIR) -lxmlrpc_abyss \
-+   -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util \
-+
-+LIBXMLRPC_SERVER_CGIPP_SH = $(call shlibfn, libxmlrpc_server_cgi++)
-+
-+$(LIBXMLRPC_SERVER_CGIPP_SH): $(LIBXMLRPC_SERVER_CGIPP_MODS:%=%.osh) \
-+  $(call shliblefn, libxmlrpc_server++) \
-+  $(call shliblefn, lib$(LIBXMLRPCPP_NAME)) \
-   $(LIBXMLRPC)
--$(LIBXMLRPC_SERVER_ABYSSPP): LIBOBJECTS = $(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.osh)
--$(LIBXMLRPC_SERVER_ABYSSPP): LIBDEP = \
--  -L$(LIBXMLRPC_ABYSS_DIR) -lxmlrpc_abyss -Lblddir/src -lxmlrpc
-+$(LIBXMLRPC_SERVER_CGIPP_SH): LIBOBJECTS = $(LIBXMLRPC_SERVER_CGIPP_MODS:%=%.osh)
-+$(LIBXMLRPC_SERVER_CGIPP_SH): LIBDEP = \
-+  -L. -lxmlrpc_server++  -l$(LIBXMLRPCPP_NAME) \
-+  -Lblddir/src -lxmlrpc_server -lxmlrpc \
-+  $(XML_PARSER_LIBDEP) \
-+ -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
--LIBXMLRPC_SERVER_PSTREAMPP = $(call shlibfn, libxmlrpc_server_pstream++)
-+LIBXMLRPC_SERVER_PSTREAMPP_SH = $(call shlibfn, libxmlrpc_server_pstream++)
--$(LIBXMLRPC_SERVER_PSTREAMPP): $(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.osh) \
-+$(LIBXMLRPC_SERVER_PSTREAMPP_SH): $(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.osh) \
-   $(LIBXMLRPC_SERVER) \
--  $(LIBXMLRPC_PACKETSOCKET)
--$(LIBXMLRPC_SERVER_PSTREAMPP): LIBOBJECTS = $(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.osh)
--$(LIBXMLRPC_SERVER_PSTREAMPP): LIBDEP = \
--  -Lblddir/src -lxmlrpc_server -L. -lxmlrpc_packetsocket
--
--LIBXMLRPC_CLIENTPP = $(call shlibfn, libxmlrpc_client++)
--
--$(LIBXMLRPC_CLIENTPP): $(LIBXMLRPC_CLIENTPP_MODS:%=%.osh) \
--  $(LIBXMLRPCPP) \
-+  $(call shliblefn, lib$(LIBXMLRPCPP_NAME)) \
-+  $(call shliblefn, libxmlrpc_packetsocket) \
-+  $(call shliblefn, libxmlrpc_server++)
-+$(LIBXMLRPC_SERVER_PSTREAMPP_SH): LIBOBJECTS = $(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.osh)
-+$(LIBXMLRPC_SERVER_PSTREAMPP_SH): LIBDEP = \
-+  -L. -lxmlrpc_server++ -l$(LIBXMLRPCPP_NAME) -lxmlrpc_packetsocket \
-+  -Lblddir/src -lxmlrpc_server -lxmlrpc \
-+  $(XML_PARSER_LIBDEP) \
-+  -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util \
-+
-+LIBXMLRPC_CLIENTPP_SH = $(call shlibfn, libxmlrpc_client++)
-+
-+$(LIBXMLRPC_CLIENTPP_SH): $(LIBXMLRPC_CLIENTPP_MODS:%=%.osh) \
-+  $(LIBXMLRPC_UTIL) \
-+  $(call shliblefn, libxmlrpc_packetsocket) \
-+  $(LIBXMLRPC) \
-+  $(call shliblefn, lib$(LIBXMLRPCPP_NAME)) \
-   $(LIBXMLRPC_CLIENT)
--$(LIBXMLRPC_CLIENTPP): LIBOBJECTS = $(LIBXMLRPC_CLIENTPP_MODS:%=%.osh)
--$(LIBXMLRPC_CLIENTPP): LIBDEP = \
--  -L. -lxmlrpc++ -Lblddir/src -lxmlrpc_client
--
--LIBXMLRPC_PACKETSOCKET = $(call shlibfn, libxmlrpc_packetsocket)
--
--$(LIBXMLRPC_PACKETSOCKET): $(LIBXMLRPC_PACKETSOCKET_MODS:%=%.osh)
--$(LIBXMLRPC_PACKETSOCKET): LIBOBJECTS = $(LIBXMLRPC_PACKETSOCKET_MODS:%=%.osh)
-+$(LIBXMLRPC_CLIENTPP_SH): LIBOBJECTS = $(LIBXMLRPC_CLIENTPP_MODS:%=%.osh)
-+$(LIBXMLRPC_CLIENTPP_SH): LIBDEP = \
-+  -L. -l$(LIBXMLRPCPP_NAME) -lxmlrpc_packetsocket \
-+  -Lblddir/src -lxmlrpc_client -lxmlrpc \
-+  $(XML_PARSER_LIBDEP) \
-+  -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
-+
-+LIBXMLRPC_PACKETSOCKET_SH = $(call shlibfn, libxmlrpc_packetsocket)
-+
-+$(LIBXMLRPC_PACKETSOCKET_SH): $(LIBXMLRPC_PACKETSOCKET_MODS:%=%.osh) \
-+  $(call shliblefn, lib$(LIBXMLRPCPP_NAME))
-+$(LIBXMLRPC_PACKETSOCKET_SH): LIBOBJECTS = $(LIBXMLRPC_PACKETSOCKET_MODS:%=%.osh)
-+$(LIBXMLRPC_PACKETSOCKET_SH): LIBDEP = \
-+  -L. -l$(LIBXMLRPCPP_NAME) \
-+  -Lblddir/src -lxmlrpc \
-+  $(XML_PARSER_LIBDEP) \
-+  -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
- libxmlrpc_cpp.a: XmlRpcCpp.o
- libxmlrpc_cpp.a: LIBOBJECTS = XmlRpcCpp.o
--libxmlrpc++.a: $(LIBXMLRPCPP_MODS:%=%.o)
--libxmlrpc++.a: LIBOBJECTS = $(LIBXMLRPCPP_MODS:%=%.o)
-+lib$(LIBXMLRPCPP_NAME).a: $(LIBXMLRPCPP_MODS:%=%.o)
-+lib$(LIBXMLRPCPP_NAME).a: LIBOBJECTS = $(LIBXMLRPCPP_MODS:%=%.o)
- libxmlrpc_server++.a: $(LIBXMLRPC_SERVERPP_MODS:%=%.o)
- libxmlrpc_server++.a: LIBOBJECTS = $(LIBXMLRPC_SERVERPP_MODS:%=%.o)
-@@ -168,6 +239,9 @@ libxmlrpc_server++.a: LIBOBJECTS = $(LIBXMLRPC_SERVERPP_MODS:%=%.o)
- libxmlrpc_server_abyss++.a: $(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.o)
- libxmlrpc_server_abyss++.a: LIBOBJECTS=$(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.o)
-+libxmlrpc_server_cgi++.a: $(LIBXMLRPC_SERVER_CGIPP_MODS:%=%.o)
-+libxmlrpc_server_cgi++.a: LIBOBJECTS=$(LIBXMLRPC_SERVER_CGIPP_MODS:%=%.o)
-+
- libxmlrpc_server_pstream++.a: $(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.o)
- libxmlrpc_server_pstream++.a: LIBOBJECTS=$(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.o)
-@@ -197,11 +271,15 @@ $(LIBXMLRPC_SERVERPP_MODS:%=%.osh): \
-   INCLUDES = $(SERVER_INCLUDES)
- $(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.o) \
--$(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.o): \
-+$(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.osh): \
-+  INCLUDES = $(SERVER_INCLUDES)
-+
-+$(LIBXMLRPC_SERVER_CGIPP_MODS:%=%.o) \
-+$(LIBXMLRPC_SERVER_CGIPP_MODS:%=%.osh): \
-   INCLUDES = $(SERVER_INCLUDES)
- $(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.o) \
--$(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.o): \
-+$(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.osh): \
-   INCLUDES = $(SERVER_INCLUDES)
- $(LIBXMLRPC_CLIENTPP_MODS:%=%.o) \
-@@ -212,7 +290,10 @@ $(LIBXMLRPC_PACKETSOCKET_MODS:%=%.o) \
- $(LIBXMLRPC_PACKETSOCKET_MODS:%=%.osh): \
-   INCLUDES = $(BASIC_INCLUDES)
--CXXFLAGS = $(CXXFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
-+# <sstream> in Glibc 2.2 has some failed inlines, so we disable that warning:
-+$(LIBXMLRPC_PACKETSOCKET_MODS:%=%.o) \
-+$(LIBXMLRPC_PACKETSOCKET_MODS:%=%.osh): \
-+  CFLAGS_LOCAL = -Wno-inline
- TRANSPORT_CONFIG_USERS = client curl libwww wininet
-@@ -242,4 +323,4 @@ distclean-local:
- .PHONY: dep
- dep: dep-common $(BLDDIR)/transport_config.h
--include Makefile.depend
-+include depend.mk
-diff --git a/libs/xmlrpc-c/src/cpp/Makefile.depend b/libs/xmlrpc-c/src/cpp/Makefile.depend
-deleted file mode 100644
-index e69de29..0000000
-diff --git a/libs/xmlrpc-c/src/cpp/base64.cpp b/libs/xmlrpc-c/src/cpp/base64.cpp
-index f9c0dac..dd07e1c 100644
---- a/libs/xmlrpc-c/src/cpp/base64.cpp
-+++ b/libs/xmlrpc-c/src/cpp/base64.cpp
-@@ -77,7 +77,7 @@ public:
-         assert(bitsInBuffer >= 8);
--        *outputP = (this->buffer >> (this->bitsInBuffer - 8)) & 0x3f;
-+        *outputP = (this->buffer >> (this->bitsInBuffer - 8)) & 0xff;
-         this->bitsInBuffer -= 8;
-     }
-diff --git a/libs/xmlrpc-c/src/cpp/client.cpp b/libs/xmlrpc-c/src/cpp/client.cpp
-index 2dba1bd..4ca8db0 100644
---- a/libs/xmlrpc-c/src/cpp/client.cpp
-+++ b/libs/xmlrpc-c/src/cpp/client.cpp
-@@ -26,6 +26,7 @@ using girmem::autoObject;
- #include "xmlrpc-c/transport.h"
- #include "xmlrpc-c/base.hpp"
- #include "xmlrpc-c/xml.hpp"
-+#include "xmlrpc-c/timeout.hpp"
- #include "xmlrpc-c/client.hpp"
- #include "transport_config.h"
-@@ -127,7 +128,7 @@ carriageParmPtr::operator->() const {
- carriageParm *
- carriageParmPtr::get() const {
--    return dynamic_cast<carriageParm *>(objectP);
-+    return dynamic_cast<carriageParm *>(this->objectP);
- }
-@@ -371,6 +372,15 @@ xmlTransaction::finishErr(error const&) const {
-+void
-+xmlTransaction::progress(struct xmlrpc_progress_data const&) const {
-+
-+    // This is just the base class method.  A derived class may override
-+    // this with something substantial.
-+}
-+
-+
-+
- xmlTransactionPtr::xmlTransactionPtr() {}
-@@ -503,6 +513,18 @@ clientXmlTransport::asyncComplete(
- void
-+clientXmlTransport::progress(
-+    struct xmlrpc_call_info *   const callInfoP,
-+    struct xmlrpc_progress_data const progressData) {
-+
-+    xmlTranCtl * const xmlTranCtlP = reinterpret_cast<xmlTranCtl *>(callInfoP);
-+
-+    xmlTranCtlP->xmlTranP->progress(progressData);
-+}
-+
-+
-+
-+void
- clientXmlTransport::setInterrupt(int *) {
-     throwf("The client XML transport is not interruptible");
-@@ -600,7 +622,7 @@ clientXmlTransport_http::start(
-             this->c_transportP,
-             carriageParmHttpP->c_serverInfoP,
-             tranCtlP->callXmlP,
--            &this->asyncComplete,
-+            &this->asyncComplete, &this->progress,
-             reinterpret_cast<xmlrpc_call_info *>(tranCtlP));
-         throwIfError(env);
-@@ -1095,8 +1117,20 @@ rpc::notifyComplete() {
- }
-+
-+
-+void
-+rpc::progress(struct xmlrpc_progress_data const&) const {
-+/*----------------------------------------------------------------------------
-+  If the user is interested in tracking the progress of the RPC, he will
-+  derive a class from xmlrpc_c::rpc and override this with a progress()
-+  that does something, such as display a progress bar.
-+-----------------------------------------------------------------------------*/
-+
-+}
-     
-+
- value
- rpc::getResult() const {
-@@ -1214,6 +1248,15 @@ xmlTransaction_client::finishErr(error const& error) const {
-+void
-+xmlTransaction_client::progress(
-+    struct xmlrpc_progress_data const& progressData) const {
-+
-+    this->tranP->progress(progressData);
-+}
-+
-+
-+
- xmlTransaction_clientPtr::xmlTransaction_clientPtr() {}
-diff --git a/libs/xmlrpc-c/src/cpp/cpptest.cpp b/libs/xmlrpc-c/src/cpp/cpptest.cpp
-deleted file mode 100644
-index 2d07793..0000000
---- a/libs/xmlrpc-c/src/cpp/cpptest.cpp
-+++ /dev/null
-@@ -1,1187 +0,0 @@
--#include <string>
--#include <iostream>
--#include <iomanip>
--#include <vector>
--#include <sstream>
--#include <memory>
--#include <time.h>
--
--#include "xmlrpc-c/girerr.hpp"
--using girerr::error;
--#include "transport_config.h"
--#include "xmlrpc-c/base.hpp"
--#include "xmlrpc-c/oldcppwrapper.hpp"
--#include "xmlrpc-c/registry.hpp"
--#include "xmlrpc-c/client.hpp"
--#include "xmlrpc-c/client_simple.hpp"
--using namespace xmlrpc_c;
--
--using namespace std;
--
--//=========================================================================
--//  Test Harness
--//=========================================================================
--// 
--//  There are two styles of test in here.  The older ones are vaguely
--//  inspired by Kent Beck's book on eXtreme Programming (XP) and use
--//  the TEST...() macros.
--//
--//  But this style is not really appropriate for C++.  It's based on
--//  code that explicitly tests for errors, as one would do in C.  In C++,
--//  it is cumbersome to catch exceptions on every call, so we don't in
--//  the new style.
--
--//  And there's not much point in trying to count test successes and
--//  failures.  Any failure is a problem, so in the new style, we just
--//  quit after we recognize one (again, more in line with regular exception
--//  throwing).  With exception throwing, you can't count what _didn't_
--//  cause an exception, so there's no meaningful count of test successes.
--//
--//  To run the tests, type './cpptest'.
--//  To check for memory leaks, install RedHat's 'memprof' utility, and
--//  type 'memprof cpptest'.
--//
--//  If you add new tests to this file, please deallocate any data
--//  structures you use in the appropriate fashion. This allows us to test
--//  various destructor code for memory leaks.
--
--
--// This is a good place to set a breakpoint.
--static void 
--logFailedTest(const char * const fileName, 
--              unsigned int const lineNum, 
--              const char * const statement) {
--
--    ostringstream msg;
--
--    msg << endl
--        << fileName << ":" << lineNum 
--        << ": expected (" << statement << ")" << endl;
--
--    throw(error(msg.str()));
--}
--
--
--#define TEST(statement) \
--    do { \
--        if (!(statement)) \
--            logFailedTest(__FILE__, __LINE__, #statement); \
--    } while (0)
--
--
--#define TEST_PASSED() \
--    do { } while (0)
--
--#define TEST_FAILED(reason) \
--    do { \
--        logFailedTest(__FILE__, __LINE__, (reason)); \
--    } while (0)
--
--
--
--#define EXPECT_ERROR(statement) \
--    do { try { statement } catch (error) {break;} \
--      throw(fileLineError(__FILE__, __LINE__, "Didn't get expected error")); \
--    } while (0)
--
--#define trickToStraightenOutEmacsIndentation \
--;
--
--namespace {
--error
--fileLineError(string       const filename,
--              unsigned int const lineNumber,
--              string       const description) {
--    
--    ostringstream combined;
--    
--    combined << filename << ":" << lineNumber << " " << description;
--    
--    return error(combined.str());
--}
--} // namespace
--
--
--
--class sampleAddMethod : public method {
--public:
--    sampleAddMethod() {
--        this->_signature = "ii";
--        this->_help = "This method adds two integers together";
--    }
--    void
--    execute(xmlrpc_c::paramList const& paramList,
--            value *             const  retvalP) {
--        
--        int const addend(paramList.getInt(0));
--        int const adder(paramList.getInt(1));
--        
--        paramList.verifyEnd(2);
--        
--        *retvalP = value_int(addend + adder);
--    }
--};
--
--
--
--class nameMethod : public defaultMethod {
--
--    void
--    execute(string              const& methodName,
--            xmlrpc_c::paramList const& ,  // paramList
--            value *             const  retvalP) {
--        
--        *retvalP = value_string(string("no such method: ") + methodName);
--    }
--};
--
--
--//=========================================================================
--//  Test Suites
--//=========================================================================
--
--void 
--test_fault (void) {
--
--    // Create a new fault and perform basic operations.
--    XmlRpcFault fault1 = XmlRpcFault(6, "Sample fault");
--    TEST(fault1.getFaultCode() == 6);
--    TEST(fault1.getFaultString() == "Sample fault");
--
--    // Extract and examine the underlying xmlrpc_env struct.
--    xmlrpc_env *env1 = fault1.getFaultEnv();
--    TEST(env1 != NULL);
--    TEST(env1->fault_occurred);
--    TEST(env1->fault_code == 6);
--    TEST(strcmp(env1->fault_string, "Sample fault") == 0);
--
--    // Test our copy constructor.
--    XmlRpcFault fault2 = fault1;
--    TEST(fault2.getFaultCode() == 6);
--    TEST(fault2.getFaultString() == "Sample fault");
--    
--    // Construct a fault from a pre-existing xmlrpc_env structure.
--    xmlrpc_env env3;
--    xmlrpc_env_init(&env3);
--    xmlrpc_env_set_fault(&env3, 7, "Another fault");
--    XmlRpcFault fault3 = XmlRpcFault(&env3);
--    xmlrpc_env_clean(&env3);
--    TEST(fault3.getFaultCode() == 7);
--    TEST(fault3.getFaultString() == "Another fault");
--    
--    // Attempt to construct a fault from a fault-free xmlrpc_env.
--    xmlrpc_env env4;
--    xmlrpc_env_init(&env4);
--    try {
--        XmlRpcFault fault4 = XmlRpcFault(&env4);
--        TEST_FAILED("Constructed invalid XmlRpcFault");
--    } catch (XmlRpcFault& fault) {
--        TEST_PASSED();
--        TEST(fault.getFaultCode() == XMLRPC_INTERNAL_ERROR);
--    }
--    xmlrpc_env_clean(&env4);
--}
--
--
--
--void test_env (void) {
--
--    // Declare these here to prevent silly compiler warnings about
--    // potentially uninitialized variables.
--    XmlRpcEnv env1;
--    XmlRpcEnv env2;
--
--    // Perform simple environment tests.
--    TEST(!env1.hasFaultOccurred());
--    xmlrpc_env_set_fault(env1, 8, "Fault 8");
--    TEST(env1.hasFaultOccurred());
--    XmlRpcFault fault1 = env1.getFault();
--    TEST(fault1.getFaultCode() == 8);
--    TEST(fault1.getFaultString() == "Fault 8");
--
--    // Test throwIfFaultOccurred.
--    try {
--        env2.throwIfFaultOccurred();
--        TEST_PASSED();
--    } catch (XmlRpcFault& fault) {
--        TEST_FAILED("We threw a fault when one hadn't occurred");
--    } 
--    xmlrpc_env_set_fault(env2, 9, "Fault 9");
--    try {
--        env2.throwIfFaultOccurred();
--        TEST_FAILED("A fault occurred, and we didn't throw it");
--    } catch (XmlRpcFault& fault) {
--        TEST_PASSED();
--        TEST(fault.getFaultCode() == 9);
--        TEST(fault.getFaultString() == "Fault 9");
--    } 
--    
--    // Make sure we can't get a fault if one hasn't occurred.
--    XmlRpcEnv env3;
--    try {
--        XmlRpcFault fault3 = env3.getFault();
--        TEST_FAILED("We retrieved a non-existant fault");
--    } catch (XmlRpcFault& fault) {
--        TEST_PASSED();
--        TEST(fault.getFaultCode() == XMLRPC_INTERNAL_ERROR);
--    }
--}
--
--void test_value (void) {
--    XmlRpcEnv env;
--
--    // Test basic reference counting behavior.
--    xmlrpc_value *v = xmlrpc_build_value(env, "i", (xmlrpc_int32) 1);
--    env.throwIfFaultOccurred();
--    XmlRpcValue val1 = XmlRpcValue(v, XmlRpcValue::CONSUME_REFERENCE);
--    v = xmlrpc_build_value(env, "i", (xmlrpc_int32) 2);
--    env.throwIfFaultOccurred();
--    XmlRpcValue val2 = v;
--    xmlrpc_DECREF(v);
--
--    // Borrow a reference.
--    v = xmlrpc_build_value(env, "i", (xmlrpc_int32) 3);
--    env.throwIfFaultOccurred();
--    XmlRpcValue val3 = XmlRpcValue(v, XmlRpcValue::CONSUME_REFERENCE);
--    xmlrpc_value *borrowed = val3.borrowReference();
--    TEST(borrowed == v);
--
--    // Make a reference.
--    v = xmlrpc_build_value(env, "i", (xmlrpc_int32) 4);
--    env.throwIfFaultOccurred();
--    XmlRpcValue val4 = XmlRpcValue(v, XmlRpcValue::CONSUME_REFERENCE);
--    xmlrpc_value *made = val4.makeReference();
--    TEST(made == v);
--    xmlrpc_DECREF(made);
--
--    // Test our default constructor.
--    XmlRpcValue val5;
--    TEST(val5.getBool() == false);
--
--    // Test our type introspection.
--    TEST(XmlRpcValue::makeInt(0).getType() == XMLRPC_TYPE_INT);
--    
--    // Test our basic data types.
--    TEST(XmlRpcValue::makeInt(30).getInt() == 30);
--    TEST(XmlRpcValue::makeInt(-30).getInt() == -30);
--    TEST(XmlRpcValue::makeBool(true).getBool() == true);
--    TEST(XmlRpcValue::makeBool(false).getBool() == false);
--    TEST(XmlRpcValue::makeDateTime("19980717T14:08:55").getRawDateTime() ==
--         "19980717T14:08:55");
--    TEST(XmlRpcValue::makeString("foo").getString() == "foo");
--    TEST(XmlRpcValue::makeString("bar", 3).getString() == "bar");
--    TEST(XmlRpcValue::makeString("bar", 3).getString() == "bar");
--    TEST(XmlRpcValue::makeString("a\0b").getString() == string("a\0b"));
--    XmlRpcValue::makeArray().getArray();
--    XmlRpcValue::makeStruct().getStruct();
--
--    // Test Base64 values.
--    const unsigned char *b64_data;
--    size_t b64_len;
--    XmlRpcValue val6 = XmlRpcValue::makeBase64((unsigned char*) "a\0\0b", 4);
--    val6.getBase64(b64_data, b64_len);
--    TEST(b64_len == 4);
--    TEST(memcmp(b64_data, "a\0\0b", 4) == 0);
--
--    // Test arrays.
--    XmlRpcValue array = XmlRpcValue::makeArray();
--    TEST(array.arraySize() == 0);
--    array.arrayAppendItem(XmlRpcValue::makeString("foo"));
--    TEST(array.arraySize() == 1);
--    array.arrayAppendItem(XmlRpcValue::makeString("bar"));
--    TEST(array.arraySize() == 2);
--    TEST(array.arrayGetItem(0).getString() == "foo");
--    TEST(array.arrayGetItem(1).getString() == "bar");
--
--    // Test structs.
--    XmlRpcValue strct = XmlRpcValue::makeStruct();
--    TEST(strct.structSize() == 0);
--    strct.structSetValue("foo", XmlRpcValue::makeString("fooval"));
--    TEST(strct.structSize() == 1);
--    strct.structSetValue("bar", XmlRpcValue::makeString("barval"));
--    TEST(strct.structSize() == 2);
--    TEST(strct.structHasKey("bar"));
--    TEST(!strct.structHasKey("nosuch"));
--    for (size_t i = 0; i < strct.structSize(); i++) {
--        string key;
--        XmlRpcValue value;
--        strct.structGetKeyAndValue(i, key, value);
--        TEST(key + "val" == value.getString());
--    }
--}
--
--void test_errors (void) {
--    // XXX - Test typechecks on get* methods.
--    // XXX - Test typechceks on array and struct methods.
--    // XXX - Test bounds checks on arrayGetItem, structGetKeyAndValue.
--}
--
--
--static void
--testXmlRpcCpp() {
--/*----------------------------------------------------------------------------
--   Test the legacy XmlRpcCpp.cpp library
-------------------------------------------------------------------------------*/
--    cout << "Testing XmlRpcCpp library..." << endl;
--
--    test_fault();
--    test_env();
--    test_value();
--    test_errors();
--}
--
--
--
--class testSuite {
--/*----------------------------------------------------------------------------
--   This is a base class for a test suite.  Give the suite a name
--   (to be used in messages about it) and some test code via
--   virtual methods suiteName() and runtests(), respectively.
--
--   runtests() should throw either an 'error' object or an 'XmlRpcFault'
--   object if the test fails.  It should throw something else if the
--   test can't run.  It should throw nothing if the tests pass.
--
--   You don't normally keep an object of this class around.  You don't
--   even give it a name.  You simply refer to a literal object, like so:
--
--     myTestSuite().run(0)
-------------------------------------------------------------------------------*/
--public:
--    void run(unsigned int const indentation);
--
--    virtual void runtests(unsigned int const) {
--        throw(error("test suite does not have a runtests() method"));
--    };
--    virtual string suiteName() {
--        return "unnamed test suite";
--    }
--};
--
--void
--testSuite::run(unsigned int const indentation) {
--    try {
--        cout << string(indentation*2, ' ') 
--             << "Running " << suiteName() << endl;
--        runtests(indentation);
--    } catch (error thisError) {
--        throw(error(suiteName() + string(" failed.  ") + thisError.what()));
--    } catch (...) {
--        throw(error(suiteName() + string(" failed.  ") +
--                    string("It threw an unexpected type of object")));
--    }
--    cout << string(indentation*2, ' ') 
--         << suiteName() << " tests passed." << endl;
--}
--
--
--
--class intTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "intTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        value_int int1(7);
--        TEST(static_cast<int>(int1) == 7);
--        value_int int2(-7);
--        TEST(static_cast<int>(int2) == -7);
--        value val1(int1);
--        TEST(val1.type() == value::TYPE_INT);
--        value_int int3(val1);
--        TEST(static_cast<int>(int3) == 7);
--        try {
--            value_int int4(value_double(3.7));
--            TEST_FAILED("invalid cast double-int suceeded");
--        } catch (error) {}
--    }
--};
--
--
--
--class doubleTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "doubleTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        value_double double1(3.14);
--        TEST(static_cast<double>(double1) == 3.14);
--        value val1(double1);
--        TEST(val1.type() == value::TYPE_DOUBLE);
--        value_double double2(val1);
--        TEST(static_cast<double>(double2) == 3.14);
--        try {
--            value_double double4(value_int(4));
--            TEST_FAILED("invalid cast int-double suceeded");
--        } catch (error) {}
--    }
--};
--
--
--
--class booleanTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "booleanTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        value_boolean boolean1(true); 
--        TEST(static_cast<bool>(boolean1) == true);
--        value_boolean boolean2(false);
--        TEST(static_cast<bool>(boolean2) == false);
--        value val1(boolean1);
--        TEST(val1.type() == value::TYPE_BOOLEAN);
--        value_boolean boolean3(val1);
--        TEST(static_cast<bool>(boolean3) == true);
--        try {
--            value_boolean boolean4(value_int(4));
--            TEST_FAILED("invalid cast int-boolean suceeded");
--        } catch (error) {}
--    }
--};
--
--
--
--class datetimeTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "datetimeTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        time_t const testTime(900684535);
--        value_datetime datetime1("19980717T14:08:55");
--        TEST(static_cast<time_t>(datetime1) == testTime);
--        value_datetime datetime2(testTime);
--        TEST(static_cast<time_t>(datetime2) == testTime);
--        value val1(datetime1);
--        TEST(val1.type() == value::TYPE_DATETIME);
--        value_datetime datetime3(val1);
--        TEST(static_cast<time_t>(datetime3) == testTime);
--        try {
--            value_datetime datetime4(value_int(4));
--            TEST_FAILED("invalid cast int-datetime suceeded");
--        } catch (error) {}
--    }
--};
--
--
--
--class stringTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "stringTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        value_string string1("hello world");
--        TEST(static_cast<string>(string1) == "hello world");
--        value_string string2("embedded\0null");
--        TEST(static_cast<string>(string2) == "embedded\0null");
--        value val1(string1);
--        TEST(val1.type() == value::TYPE_STRING);
--        value_string string3(val1);
--        TEST(static_cast<string>(string3) == "hello world");
--        try {
--            value_string string4(value_int(4));
--            TEST_FAILED("invalid cast int-string suceeded");
--        } catch (error) {}
--    }
--};
--
--
--
--class bytestringTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "bytestringTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        unsigned char bytestringArray[] = {0x10, 0x11, 0x12, 0x13, 0x14};
--        vector<unsigned char> 
--            bytestringData(&bytestringArray[0], &bytestringArray[4]);
--        value_bytestring bytestring1(bytestringData);
--
--        vector<unsigned char> const dataReadBack1(
--            bytestring1.vectorUcharValue());
--        TEST(dataReadBack1 == bytestringData);
--        value val1(bytestring1);
--        TEST(val1.type() == value::TYPE_BYTESTRING);
--        value_bytestring bytestring2(val1);
--        vector<unsigned char> const dataReadBack2(
--            bytestring2.vectorUcharValue());
--        TEST(dataReadBack2 == bytestringData);
--        try {
--            value_bytestring bytestring4(value_int(4));
--            TEST_FAILED("invalid cast int-bytestring suceeded");
--        } catch (error) {}
--    }
--};
--
--
--
--class nilTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "nilTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        value_nil nil1;
--        value val1(nil1);
--        TEST(val1.type() == value::TYPE_NIL);
--        value_nil nil2(val1);
--        try {
--            value_nil nil4(value_int(4));
--            TEST_FAILED("invalid cast int-nil suceeded");
--        } catch (error) {}
--    }
--};
--
--
--
--class structTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "structTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        map<string, value> structData;
--        pair<string, value> member("the_integer", value_int(9));
--        structData.insert(member);
--        
--        value_struct struct1(structData);
--
--        map<string, value> dataReadBack(struct1);
--
--        TEST(static_cast<int>(value_int(dataReadBack["the_integer"])) == 9);
--
--        value val1(struct1);
--        TEST(val1.type() == value::TYPE_STRUCT);
--        value_struct struct2(val1);
--        try {
--            value_struct struct4(value_int(4));
--            TEST_FAILED("invalid cast int-struct suceeded");
--        } catch (error) {}
--    }
--};
--
--
--
--class arrayTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "arrayTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        vector<value> arrayData;
--        arrayData.push_back(value_int(7));
--        arrayData.push_back(value_double(2.78));
--        arrayData.push_back(value_string("hello world"));
--        value_array array1(arrayData);
--
--        TEST(array1.size() == 3);
--        vector<value> dataReadBack1(array1.vectorValueValue());
--        TEST(dataReadBack1[0].type() ==  value::TYPE_INT);
--        TEST(static_cast<int>(value_int(dataReadBack1[0])) == 7);
--        TEST(dataReadBack1[1].type() ==  value::TYPE_DOUBLE);
--        TEST(static_cast<double>(value_double(dataReadBack1[1])) == 2.78);
--        TEST(dataReadBack1[2].type() ==  value::TYPE_STRING);
--        TEST(static_cast<string>(value_string(dataReadBack1[2])) == 
--             "hello world");
--
--        value val1(array1);
--        TEST(val1.type() == value::TYPE_ARRAY);
--        value_array array2(val1);
--        TEST(array2.size() == 3);
--        try {
--            value_array array4(value_int(4));
--            TEST_FAILED("invalid cast int-array suceeded");
--        } catch (error) {}
--    }
--};
--
--
--
--class valueTestSuite : public testSuite {
--
--public:
--    virtual string suiteName() {
--        return "valueTestSuite";
--    }
--    virtual void runtests(unsigned int const indentation) {
--
--        intTestSuite().run(indentation+1);
--        doubleTestSuite().run(indentation+1);
--        booleanTestSuite().run(indentation+1);
--        datetimeTestSuite().run(indentation+1);
--        stringTestSuite().run(indentation+1);
--        bytestringTestSuite().run(indentation+1);
--        nilTestSuite().run(indentation+1);
--        structTestSuite().run(indentation+1);
--        arrayTestSuite().run(indentation+1);
--    }
--};
--
--
--namespace {
--string const noElementFoundXml(
--    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
--    "<methodResponse>\r\n"
--    "<fault>\r\n"
--    "<value><struct>\r\n"
--    "<member><name>faultCode</name>\r\n"
--    "<value><i4>-503</i4></value></member>\r\n"
--    "<member><name>faultString</name>\r\n"
--    "<value><string>Call is not valid XML.  "
--    "no element found</string></value></member>\r\n"
--    "</struct></value>\r\n"
--    "</fault>\r\n"
--    "</methodResponse>\r\n"
--    );
--
--string const sampleAddGoodCallXml(
--    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
--    "<methodCall>\r\n"
--    "<methodName>sample.add</methodName>\r\n"
--    "<params>\r\n"
--    "<param><value><i4>5</i4></value></param>\r\n"
--    "<param><value><i4>7</i4></value></param>\r\n"
--    "</params>\r\n"
--    "</methodCall>\r\n"
--    );
--
--string const sampleAddGoodResponseXml(
--    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
--    "<methodResponse>\r\n"
--    "<params>\r\n"
--    "<param><value><i4>12</i4></value></param>\r\n"
--    "</params>\r\n"
--    "</methodResponse>\r\n"
--    );
--
--
--string const sampleAddBadCallXml(
--    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
--    "<methodCall>\r\n"
--    "<methodName>sample.add</methodName>\r\n"
--    "<params>\r\n"
--    "<param><value><i4>5</i4></value></param>\r\n"
--    "</params>\r\n"
--    "</methodCall>\r\n"
--    );
--
--string const sampleAddBadResponseXml(
--    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
--    "<methodResponse>\r\n"
--    "<fault>\r\n"
--    "<value><struct>\r\n"
--    "<member><name>faultCode</name>\r\n"
--    "<value><i4>-501</i4></value></member>\r\n"
--    "<member><name>faultString</name>\r\n"
--    "<value><string>Not enough parameters</string></value></member>\r\n"
--    "</struct></value>\r\n"
--    "</fault>\r\n"
--    "</methodResponse>\r\n"
--    );
--
--
--string const nonexistentMethodCallXml(
--    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
--    "<methodCall>\r\n"
--    "<methodName>nosuchmethod</methodName>\r\n"
--    "<params>\r\n"
--    "<param><value><i4>5</i4></value></param>\r\n"
--    "<param><value><i4>7</i4></value></param>\r\n"
--    "</params>\r\n"
--    "</methodCall>\r\n"
--    );
--
--string const nonexistentMethodYesDefResponseXml(
--    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
--    "<methodResponse>\r\n"
--    "<params>\r\n"
--    "<param><value><string>no such method: nosuchmethod</string>"
--    "</value></param>\r\n"
--    "</params>\r\n"
--    "</methodResponse>\r\n"
--    );
--
--string const nonexistentMethodNoDefResponseXml(
--    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
--    "<methodResponse>\r\n"
--    "<fault>\r\n"
--    "<value><struct>\r\n"
--    "<member><name>faultCode</name>\r\n"
--    "<value><i4>-506</i4></value></member>\r\n"
--    "<member><name>faultString</name>\r\n"
--    "<value><string>Method 'nosuchmethod' not defined</string></value>"
--    "</member>\r\n"
--    "</struct></value>\r\n"
--    "</fault>\r\n"
--    "</methodResponse>\r\n"
--    );
--
--} // namespace
--
--
--class paramListTestSuite : public testSuite {
--
--public:
--    virtual string suiteName() {
--        return "paramListTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--
--        paramList paramList1;
--        TEST(paramList1.size() == 0);
--
--        paramList1.add(value_int(7));
--        paramList1.add(value_boolean(true));
--        paramList1.add(value_double(3.14));
--        time_t const timeZero(0);
--        paramList1.add(value_datetime(timeZero));
--        time_t const timeFuture(time(NULL)+100);
--        paramList1.add(value_datetime(timeFuture));
--        paramList1.add(value_string("hello world"));
--        unsigned char bytestringArray[] = {0x10, 0x11, 0x12, 0x13, 0x14};
--        vector<unsigned char> 
--            bytestringData(&bytestringArray[0], &bytestringArray[4]);
--        paramList1.add(value_bytestring(bytestringData));
--        vector<value> arrayData;
--        arrayData.push_back(value_int(7));
--        arrayData.push_back(value_double(2.78));
--        arrayData.push_back(value_string("hello world"));
--        paramList1.add(value_array(arrayData));
--        map<string, value> structData;
--        pair<string, value> member("the_integer", value_int(9));
--        structData.insert(member);
--        paramList1.add(value_struct(structData));
--        paramList1.add(value_nil());
--
--        TEST(paramList1.size() == 10);
--
--        TEST(paramList1.getInt(0) == 7);
--        TEST(paramList1.getInt(0, 7) == 7);
--        TEST(paramList1.getInt(0, -5, 7) == 7);
--        TEST(paramList1.getBoolean(1) == true);
--        TEST(paramList1.getDouble(2) == 3.14);
--        TEST(paramList1.getDouble(2, 1) == 3.14);
--        TEST(paramList1.getDouble(2, 1, 4) == 3.14);
--        TEST(paramList1.getDatetime_sec(3) == 0);
--        TEST(paramList1.getDatetime_sec(3, paramList::TC_ANY) == timeZero);
--        TEST(paramList1.getDatetime_sec(3, paramList::TC_NO_FUTURE) 
--             == timeZero);
--        TEST(paramList1.getDatetime_sec(4, paramList::TC_NO_PAST)
--             == timeFuture);
--        TEST(paramList1.getString(5) == "hello world");
--        TEST(paramList1.getBytestring(6)[0] == 0x10);
--        TEST(paramList1.getArray(7).size() == 3);
--        TEST(paramList1.getArray(7, 3).size() == 3);
--        TEST(paramList1.getArray(7, 1, 3).size() == 3);
--        paramList1.getStruct(8)["the_integer"];
--        paramList1.getNil(9);
--        paramList1.verifyEnd(10);
--
--        paramList paramList2(5);
--        TEST(paramList2.size() == 0);
--    }
--};
--
--class registryRegMethodTestSuite : public testSuite {
--
--public:
--    virtual string suiteName() {
--        return "registryRegMethodTestSuite";
--    }
--    virtual void runtests(unsigned int) {
--
--        xmlrpc_c::registry myRegistry;
--        
--        myRegistry.addMethod("sample.add", 
--                             xmlrpc_c::methodPtr(new sampleAddMethod));
--        
--        myRegistry.disableIntrospection();
--        {
--            string response;
--            myRegistry.processCall("", &response);
--            TEST(response == noElementFoundXml);
--        }
--        {
--            string response;
--            myRegistry.processCall(sampleAddGoodCallXml, &response);
--            TEST(response == sampleAddGoodResponseXml);
--        }
--        {
--            string response;
--            myRegistry.processCall(sampleAddBadCallXml, &response);
--            TEST(response == sampleAddBadResponseXml);
--        }
--    }
--};
--
--
--
--class registryDefaultMethodTestSuite : public testSuite {
--
--public:
--    virtual string suiteName() {
--        return "registryDefaultMethodTestSuite";
--    }
--    virtual void runtests(unsigned int) {
--
--        xmlrpc_c::registry myRegistry;
--        
--        myRegistry.addMethod("sample.add", methodPtr(new sampleAddMethod));
--
--        {
--            string response;
--            myRegistry.processCall(sampleAddGoodCallXml, &response);
--            TEST(response == sampleAddGoodResponseXml);
--        }
--        {
--            string response;
--            myRegistry.processCall(nonexistentMethodCallXml, &response);
--            TEST(response == nonexistentMethodNoDefResponseXml);
--        }
--        // We're actually violating the spirit of setDefaultMethod by
--        // doing this to a registry that's already been used, but as long
--        // as it works, it's a convenient way to implement this test.
--        myRegistry.setDefaultMethod(defaultMethodPtr(new nameMethod));
--
--        {
--            string response;
--            myRegistry.processCall(nonexistentMethodCallXml, &response);
--            TEST(response == nonexistentMethodYesDefResponseXml);
--        }
--    }
--};
--
--
--
--class registryTestSuite : public testSuite {
--
--public:
--    virtual string suiteName() {
--        return "registryTestSuite";
--    }
--    virtual void runtests(unsigned int const indentation) {
--
--        registryRegMethodTestSuite().run(indentation+1);
--        registryDefaultMethodTestSuite().run(indentation+1);
--    }
--};
--
--
--
--class clientXmlTransportTestSuite : public testSuite {
--
--public:
--    virtual string suiteName() {
--        return "clientXmlTransportTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--#if MUST_BUILD_CURL_CLIENT
--        clientXmlTransport_curl transportc0;
--        clientXmlTransport_curl transportc1("eth0");
--        clientXmlTransport_curl transportc2("eth0", true);
--        clientXmlTransport_curl transportc3("eth0", true, true);
--#else
--        EXPECT_ERROR(clientXmlTransport_curl transportc0;);
--        EXPECT_ERROR(clientXmlTransport_curl transportc1("eth0"););
--        EXPECT_ERROR(clientXmlTransport_curl transportc0("eth0", true););
--        EXPECT_ERROR(clientXmlTransport_curl transportc0("eth0", true, true););
--#endif
--
--#if MUST_BUILD_LIBWWW_CLIENT
--        clientXmlTransport_libwww transportl0;
--        clientXmlTransport_libwww transportl1("getbent");
--        clientXmlTransport_libwww transportl2("getbent", "1.0");
--#else
--        EXPECT_ERROR(clientXmlTransport_libwww transportl0;);
--        EXPECT_ERROR(clientXmlTransport_libwww transportl1("getbent"););
--        EXPECT_ERROR(clientXmlTransport_libwww transportl2("getbent", "1.0"););
--#endif
--#if MUST_BUILD_WININET_CLIENT
--        clientXmlTransport_wininet transportw0;
--        clientXmlTransport_wininet transportw1(true);
--#else
--        EXPECT_ERROR(clientXmlTransport_wininet transportw0;);
--        EXPECT_ERROR(clientXmlTransport_wininet transportw1(true););
--#endif
--    }
--};
--
--
--
--class clientSimpleTestSuite : public testSuite {
--
--public:
--    virtual string suiteName() {
--        return "clientSimpleTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--
--        clientSimple clientS0;
--        paramList paramList0;
--
--        value result0;
--
--        // These will fail because there's no such server
--        EXPECT_ERROR(clientS0.call("http://mf.comm", "biteme", &result0););
--
--        EXPECT_ERROR(
--            clientS0.call("http://mf.comm", "biteme", "s", &result0, "hard");
--            );
--
--        EXPECT_ERROR(
--            clientS0.call("http://mf.comm", "biteme", paramList0, &result0);
--            );
--    }
--};
--        
--
--
--class carriageParm_direct : public carriageParm {
--public:
--    carriageParm_direct(registry * const registryP) : registryP(registryP) {}
--
--    registry * registryP;
--};
--
--
--class clientXmlTransport_direct : public clientXmlTransport {
--
--public:    
--    void
--    call(xmlrpc_c::carriageParm * const  carriageParmP,
--         string                   const& callXml,
--         string *                 const  responseXmlP) {
--
--        carriageParm_direct * const parmP =
--            dynamic_cast<carriageParm_direct *>(carriageParmP);
--
--        if (parmP == NULL)
--            throw(error("Carriage parameter passed to the direct "
--                        "transport is not type carriageParm_direct"));
--
--        parmP->registryP->processCall(callXml, responseXmlP);
--    }
--};
--
--
--
--class clientDirectAsyncTestSuite : public testSuite {
--/*----------------------------------------------------------------------------
--   See clientDirectTestSuite for a description of how we use a
--   clientXmlTransport_direct object to test client functions.
--
--   The object of this class tests the async client functions.  With
--   clientXmlTransport_direct, these are pretty simple because the
--   transport doesn't even implement an asynchronous interface; it
--   relies on the base class' emulation of start() using call().
--
--   Some day, we should add true asynchronous capability to
--   clientXmlTransport_direct and really test things.
-------------------------------------------------------------------------------*/
--public:
--    virtual string suiteName() {
--        return "clientDirectAsyncTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        
--        registry myRegistry;
--        
--        myRegistry.addMethod("sample.add", methodPtr(new sampleAddMethod));
--        
--        carriageParm_direct carriageParmDirect(&myRegistry);
--        clientXmlTransport_direct transportDirect;
--        client_xml clientDirect(&transportDirect);
--        paramList paramListSampleAdd1;
--        paramListSampleAdd1.add(value_int(5));
--        paramListSampleAdd1.add(value_int(7));
--        paramList paramListSampleAdd2;
--        paramListSampleAdd2.add(value_int(30));
--        paramListSampleAdd2.add(value_int(-10));
--
--        rpcPtr const rpcSampleAdd1P("sample.add", paramListSampleAdd1);
--        rpcSampleAdd1P->start(&clientDirect, &carriageParmDirect);
--        rpcPtr const rpcSampleAdd2P("sample.add", paramListSampleAdd2);
--        rpcSampleAdd2P->start(&clientDirect, &carriageParmDirect);
--        
--        TEST(rpcSampleAdd1P->isFinished());
--        TEST(rpcSampleAdd1P->isSuccessful());
--        value_int const result1(rpcSampleAdd1P->getResult());
--        TEST(static_cast<int>(result1) == 12);
--        
--        TEST(rpcSampleAdd2P->isFinished());
--        TEST(rpcSampleAdd1P->isSuccessful());
--        value_int const result2(rpcSampleAdd2P->getResult());
--        TEST(static_cast<int>(result2) == 20);
--
--        EXPECT_ERROR(clientDirect.finishAsync(timeout()););
--        EXPECT_ERROR(clientDirect.finishAsync(timeout(50)););
--    }
--};
--
--
--
--class clientDirectTestSuite : public testSuite {
--/*----------------------------------------------------------------------------
--  The object of this class tests the client facilities by using a
--  special client XML transport defined above and an XML-RPC server we
--  build ourselves and run inline.  We build the server out of a
--  xmlrpc_c::registry object and our transport just delivers XML
--  directly to the registry object and gets the response XML from it
--  and delivers that back.  There's no network or socket or pipeline or
--  anything -- the transport actually executes the XML-RPC method.
-------------------------------------------------------------------------------*/
--public:
--    virtual string suiteName() {
--        return "clientDirectTestSuite";
--    }
--    virtual void runtests(unsigned int const indentation) {
--        registry myRegistry;
--        
--        myRegistry.addMethod("sample.add", methodPtr(new sampleAddMethod));
--        
--        carriageParm_direct carriageParmDirect(&myRegistry);
--        clientXmlTransport_direct transportDirect;
--        client_xml clientDirect(&transportDirect);
--        paramList paramListSampleAdd;
--        paramListSampleAdd.add(value_int(5));
--        paramListSampleAdd.add(value_int(7));
--        paramList paramListEmpty;
--        {
--            /* Test a successful RPC */
--            rpcPtr rpcSampleAddP("sample.add", paramListSampleAdd);
--            rpcSampleAddP->call(&clientDirect, &carriageParmDirect);
--            TEST(rpcSampleAddP->isFinished());
--            TEST(rpcSampleAddP->isSuccessful());
--            EXPECT_ERROR(fault fault0(rpcSampleAddP->getFault()););
--            value_int const resultDirect(rpcSampleAddP->getResult());
--            TEST(static_cast<int>(resultDirect) == 12);
--        }
--        {
--            /* Test a failed RPC */
--            rpcPtr const rpcSampleAddP("sample.add", paramListEmpty);
--            rpcSampleAddP->call(&clientDirect, &carriageParmDirect);
--            TEST(rpcSampleAddP->isFinished());
--            TEST(!rpcSampleAddP->isSuccessful());
--            EXPECT_ERROR(value result(rpcSampleAddP->getResult()););
--            fault const fault0(rpcSampleAddP->getFault());
--            TEST(fault0.getCode() == fault::CODE_TYPE);
--        }
--
--        clientDirectAsyncTestSuite().run(indentation+1);
--    }
--};
--
--
--
--class clientTestSuite : public testSuite {
--
--public:
--    virtual string suiteName() {
--        return "clientTestSuite";
--    }
--    virtual void runtests(unsigned int const indentation) {
--
--        clientDirectTestSuite().run(indentation+1);
--
--        clientXmlTransportTestSuite().run(indentation+1);
--
--        carriageParm_http0 carriageParm1("http://suckthis.comm");
--        carriageParm_curl0 carriageParm2("http://suckthis.comm");
--        carriageParm_libwww0 carriageParm3("http://suckthis.comm");
--        carriageParm_wininet0 carriageParm4("http://suckthis.comm");
--
--#if MUST_BUILD_CURL_CLIENT
--        clientXmlTransport_curl transportc0;
--        client_xml client0(&transportc0);
--        connection connection0(&client0, &carriageParm1);
--        
--        paramList paramList0;
--
--        rpcPtr rpc0P("blowme", paramList0);
--
--        // This fails because RPC has not been executed
--        EXPECT_ERROR(value result(rpc0P->getResult()););
--
--        // This fails because server doesn't exist
--        EXPECT_ERROR(rpc0P->call(&client0, &carriageParm2););
--
--        rpcPtr rpc1P("blowme", paramList0);
--        // This fails because server doesn't exist
--        EXPECT_ERROR(rpc1P->call(connection0););
--
--        rpcPtr rpc2P("blowme", paramList0);
--
--        rpc2P->start(&client0, &carriageParm2);
--
--        client0.finishAsync(timeout());
--
--        // This fails because the RPC failed because server doesn't exist
--        EXPECT_ERROR(value result(rpc2P->getResult()););
--
--        // This fails because the RPC has already been executed
--        EXPECT_ERROR(rpc2P->start(connection0););
--
--        rpcPtr rpc3P("blowme", paramList0);
--        rpc3P->start(connection0);
--
--        client0.finishAsync(timeout());
--        
--        // This fails because the RPC failed because server doesn't exist
--        EXPECT_ERROR(value result(rpc3P->getResult()););
--#endif
--        clientSimpleTestSuite().run(indentation+1);
--    }
--};
--
--//=========================================================================
--//  Test Driver
--//=========================================================================
--
--int 
--main(int argc, char**) {
--    
--    int retval;
--
--    if (argc-1 > 0) {
--        cout << "Program takes no arguments" << endl;
--        exit(1);
--    }
--
--    bool testsPassed;
--
--    try {
--        // Add your test suites here.
--        valueTestSuite().run(0);
--        paramListTestSuite().run(0);
--        registryTestSuite().run(0);
--        clientTestSuite().run(0);
--
--        testXmlRpcCpp();
--
--        testsPassed = true;
--    } catch (error thisError) {
--        cout << "Unexpected error thrown:  " << thisError.what() << endl;
--        testsPassed = false;
--    } catch (XmlRpcFault& fault) {
--        cout << "Unexpected XML-RPC fault when running test suites." << endl
--             << "Fault #" << fault.getFaultCode()
--             << ": " << fault.getFaultString() << endl;
--        testsPassed = false;
--    } catch (...) {
--        cout << "Unexpected exception when running test suites." << endl;
--        testsPassed = false;
--    }
--
--    if (testsPassed) {
--        cout << "PASSED" << endl;
--        retval = 0;
--    } else {
--        cout << "FAILED" << endl;
--        retval = 1;
--    }
--    return retval;
--}
-diff --git a/libs/xmlrpc-c/src/cpp/curl.cpp b/libs/xmlrpc-c/src/cpp/curl.cpp
-index 6181929..5751385 100644
---- a/libs/xmlrpc-c/src/cpp/curl.cpp
-+++ b/libs/xmlrpc-c/src/cpp/curl.cpp
-@@ -127,27 +127,93 @@ carriageParm_curl0Ptr::operator->() const {
--clientXmlTransport_curl::constrOpt::constrOpt() {
-+struct clientXmlTransport_curl::constrOpt_impl {
-+
-+    constrOpt_impl();
-+
-+    struct {
-+        std::string  network_interface;
-+        bool         no_ssl_verifypeer;
-+        bool         no_ssl_verifyhost;
-+        bool         dont_advertise;
-+        std::string  user_agent;
-+        std::string  ssl_cert;
-+        std::string  sslcerttype;
-+        std::string  sslcertpasswd;
-+        std::string  sslkey;
-+        std::string  sslkeytype;
-+        std::string  sslkeypasswd;
-+        std::string  sslengine;
-+        bool         sslengine_default;
-+        xmlrpc_sslversion sslversion;
-+        std::string  cainfo;
-+        std::string  capath;
-+        std::string  randomfile;
-+        std::string  egdsocket;
-+        std::string  ssl_cipher_list;
-+        unsigned int timeout;
-+        std::string  proxy;
-+        unsigned int proxy_auth;
-+        unsigned int proxy_port;
-+        std::string  proxy_userpwd;
-+        xmlrpc_httpproxytype proxy_type;
-+    } value;
-+    struct {
-+        bool network_interface;
-+        bool no_ssl_verifypeer;
-+        bool no_ssl_verifyhost;
-+        bool dont_advertise;
-+        bool user_agent;
-+        bool ssl_cert;
-+        bool sslcerttype;
-+        bool sslcertpasswd;
-+        bool sslkey;
-+        bool sslkeytype;
-+        bool sslkeypasswd;
-+        bool sslengine;
-+        bool sslengine_default;
-+        bool sslversion;
-+        bool cainfo;
-+        bool capath;
-+        bool randomfile;
-+        bool egdsocket;
-+        bool ssl_cipher_list;
-+        bool timeout;
-+        bool proxy;
-+        bool proxy_auth;
-+        bool proxy_port;
-+        bool proxy_userpwd;
-+        bool proxy_type;
-+    } present;
-+};
-+
-+clientXmlTransport_curl::constrOpt_impl::constrOpt_impl() {
-     present.network_interface = false;
-     present.no_ssl_verifypeer = false;
-     present.no_ssl_verifyhost = false;
--    present.user_agent = false;
--    present.ssl_cert = false;
--    present.sslcerttype = false;
--    present.sslcertpasswd = false;
--    present.sslkey = false;
--    present.sslkeytype = false;
--    present.sslkeypasswd = false;
--    present.sslengine = false;
-+    present.dont_advertise    = false;
-+    present.user_agent        = false;
-+    present.ssl_cert          = false;
-+    present.sslcerttype       = false;
-+    present.sslcertpasswd     = false;
-+    present.sslkey            = false;
-+    present.sslkeytype        = false;
-+    present.sslkeypasswd      = false;
-+    present.sslengine         = false;
-     present.sslengine_default = false;
--    present.sslversion = false;
--    present.cainfo = false;
--    present.capath = false;
--    present.randomfile = false;
--    present.egdsocket = false;
--    present.ssl_cipher_list = false;
--    present.timeout = false;
-+    present.sslversion        = false;
-+    present.cainfo            = false;
-+    present.capath            = false;
-+    present.randomfile        = false;
-+    present.egdsocket         = false;
-+    present.ssl_cipher_list   = false;
-+    present.timeout           = false;
-+    present.proxy             = false;
-+    present.proxy_port        = false;
-+    present.proxy_auth        = false;
-+    present.proxy_userpwd     = false;
-+    present.proxy_type        = false;
- }
-@@ -155,14 +221,15 @@ clientXmlTransport_curl::constrOpt::constrOpt() {
- #define DEFINE_OPTION_SETTER(OPTION_NAME, TYPE) \
- clientXmlTransport_curl::constrOpt & \
- clientXmlTransport_curl::constrOpt::OPTION_NAME(TYPE const& arg) { \
--    this->value.OPTION_NAME = arg; \
--    this->present.OPTION_NAME = true; \
-+    this->implP->value.OPTION_NAME = arg; \
-+    this->implP->present.OPTION_NAME = true; \
-     return *this; \
- }
- DEFINE_OPTION_SETTER(network_interface, string);
- DEFINE_OPTION_SETTER(no_ssl_verifypeer, bool);
- DEFINE_OPTION_SETTER(no_ssl_verifyhost, bool);
-+DEFINE_OPTION_SETTER(dont_advertise, bool);
- DEFINE_OPTION_SETTER(user_agent, string);
- DEFINE_OPTION_SETTER(ssl_cert, string);
- DEFINE_OPTION_SETTER(sslcerttype, string);
-@@ -179,13 +246,41 @@ DEFINE_OPTION_SETTER(randomfile, string);
- DEFINE_OPTION_SETTER(egdsocket, string);
- DEFINE_OPTION_SETTER(ssl_cipher_list, string);
- DEFINE_OPTION_SETTER(timeout, unsigned int);
-+DEFINE_OPTION_SETTER(proxy, string);
-+DEFINE_OPTION_SETTER(proxy_port, unsigned int);
-+DEFINE_OPTION_SETTER(proxy_auth, unsigned int);
-+DEFINE_OPTION_SETTER(proxy_userpwd, string);
-+DEFINE_OPTION_SETTER(proxy_type, xmlrpc_httpproxytype);
- #undef DEFINE_OPTION_SETTER
-+clientXmlTransport_curl::constrOpt::constrOpt() {
-+
-+    this->implP = new clientXmlTransport_curl::constrOpt_impl();
-+}
-+
-+
-+
-+clientXmlTransport_curl::constrOpt::~constrOpt() {
-+
-+    delete(this->implP);
-+}
-+
-+
-+
-+clientXmlTransport_curl::constrOpt::constrOpt(constrOpt& arg) {
-+
-+    this->implP = new constrOpt_impl(*arg.implP);
-+}
-+
-+
-+
- #if MUST_BUILD_CURL_CLIENT
- void
--clientXmlTransport_curl::initialize(constrOpt const& opt) {
-+clientXmlTransport_curl::initialize(constrOpt const& optExt) {
-+    constrOpt_impl const opt(*optExt.implP);
-+
-     struct xmlrpc_curl_xportparms transportParms; 
-     transportParms.network_interface = opt.present.network_interface ?
-@@ -194,6 +289,8 @@ clientXmlTransport_curl::initialize(constrOpt const& opt) {
-         opt.value.no_ssl_verifypeer         : false;
-     transportParms.no_ssl_verifyhost = opt.present.no_ssl_verifyhost ? 
-         opt.value.no_ssl_verifyhost         : false;
-+    transportParms.dont_advertise    = opt.present.dont_advertise ?
-+        opt.value.dont_advertise            : false;
-     transportParms.user_agent        = opt.present.user_agent ?
-         opt.value.user_agent.c_str()        : NULL;
-     transportParms.ssl_cert          = opt.present.ssl_cert ?
-@@ -226,6 +323,16 @@ clientXmlTransport_curl::initialize(constrOpt const& opt) {
-         opt.value.ssl_cipher_list.c_str()   : NULL;
-     transportParms.timeout           = opt.present.timeout ? 
-         opt.value.timeout                   : 0;
-+    transportParms.proxy             = opt.present.proxy ? 
-+        opt.value.proxy.c_str()             : NULL;
-+    transportParms.proxy_port        = opt.present.proxy_port ? 
-+        opt.value.proxy_port                : 0;
-+    transportParms.proxy_auth        = opt.present.proxy_auth ? 
-+        opt.value.proxy_auth                : XMLRPC_HTTPAUTH_NONE;
-+    transportParms.proxy_userpwd     = opt.present.proxy_userpwd ? 
-+        opt.value.proxy_userpwd.c_str()     : NULL;
-+    transportParms.proxy_type        = opt.present.proxy_type ? 
-+        opt.value.proxy_type                : XMLRPC_HTTPPROXY_HTTP;
-     this->c_transportOpsP = &xmlrpc_curl_transport_ops;
-@@ -233,7 +340,7 @@ clientXmlTransport_curl::initialize(constrOpt const& opt) {
-     xmlrpc_curl_transport_ops.create(
-         &env.env_c, 0, "", "",
--        &transportParms, XMLRPC_CXPSIZE(timeout),
-+        &transportParms, XMLRPC_CXPSIZE(dont_advertise),
-         &this->c_transportP);
-     if (env.env_c.fault_occurred)
-diff --git a/libs/xmlrpc-c/src/cpp/env_wrap.hpp b/libs/xmlrpc-c/src/cpp/env_wrap.hpp
-index 0172f2b..f31cb0e 100644
---- a/libs/xmlrpc-c/src/cpp/env_wrap.hpp
-+++ b/libs/xmlrpc-c/src/cpp/env_wrap.hpp
-@@ -1,11 +1,12 @@
- #ifndef ENV_INT_HPP_INCLUDED
- #define ENV_INT_HPP_INCLUDED
-+#include "xmlrpc-c/c_util.h"
- #include "xmlrpc-c/util.h"
- namespace xmlrpc_c {
--class env_wrap {
-+class XMLRPC_DLLEXPORT env_wrap {
- /*----------------------------------------------------------------------------
-    A wrapper to assist in using the Xmlrpc-c C libraries in
-    Xmlrpc-c C++ code.
-diff --git a/libs/xmlrpc-c/src/cpp/libwww.cpp b/libs/xmlrpc-c/src/cpp/libwww.cpp
-index 1e2998c..3a2e9a6 100644
---- a/libs/xmlrpc-c/src/cpp/libwww.cpp
-+++ b/libs/xmlrpc-c/src/cpp/libwww.cpp
-@@ -141,7 +141,8 @@ clientXmlTransport_libwww::clientXmlTransport_libwww(
- }
- #else  // MUST_BUILD_LIBWWW_CLIENT
-- clientXmlTransport_libwww::clientXmlTransport_libwww(string, string) {
-+ clientXmlTransport_libwww::clientXmlTransport_libwww(string const,
-+                                                      string const) {
-     throw(error("There is no Libwww client XML transport "
-                 "in this XML-RPC client library"));
-diff --git a/libs/xmlrpc-c/src/cpp/packetsocket.cpp b/libs/xmlrpc-c/src/cpp/packetsocket.cpp
-index c984215..28fd09f 100644
---- a/libs/xmlrpc-c/src/cpp/packetsocket.cpp
-+++ b/libs/xmlrpc-c/src/cpp/packetsocket.cpp
-@@ -37,15 +37,15 @@
-      All bytes not part of a control word are literal bytes of a packet.
--  You can create a packet socket from any file descriptor from which
--  you can read and write a bidirectional character stream.  Typically,
--  it's a TCP socket.
-+  You can create a packet socket from a POSIX stream socket or a
-+  Windows emulation of one.
-   One use of the NOP control word is to validate that the connection
-   is still working.  You might send one periodically to detect, for
-   example, an unplugged TCP/IP network cable.  It's probably better
-   to use the TCP keepalive facility for that.
- ============================================================================*/
-+#include "xmlrpc_config.h"
- #include <cassert>
- #include <string>
-@@ -54,10 +54,18 @@
- #include <sstream>
- #include <cstdio>
- #include <cstdlib>
--#include <unistd.h>
-+
- #include <errno.h>
- #include <fcntl.h>
--#include <poll.h>
-+#if MSVCRT
-+# include <winsock2.h>
-+# include <io.h>
-+#else
-+# include <unistd.h>
-+# include <poll.h>
-+# include <sys/socket.h>
-+#endif
-+
- #include <sys/types.h>
- #include "c_util.h"
-@@ -67,10 +75,266 @@ using girerr::throwf;
- #include "xmlrpc-c/packetsocket.hpp"
-+using namespace std;
- #define ESC 0x1B   //  ASCII Escape character
- #define ESC_STR "\x1B"
-+class XMLRPC_DLLEXPORT socketx {
-+
-+public:
-+    socketx(int const sockFd);
-+
-+    ~socketx();
-+
-+    void
-+    waitForReadable() const;
-+
-+    void
-+    waitForWritable() const;
-+
-+    void
-+    read(unsigned char * const buffer,
-+         size_t          const bufferSize,
-+         bool *          const wouldblockP,
-+         size_t *        const bytesReadP) const;
-+
-+    void
-+    writeWait(const unsigned char * const data,
-+              size_t                const size) const;
-+private:
-+    int fd;
-+    bool fdIsBorrowed;
-+};
-+
-+
-+
-+/* Sockets are similar, but not identical between Unix and Windows.
-+   Some Unix socket functions appear to be available on Windows (a
-+   Unix compatibility feature), but work only for file descriptor
-+   numbers < 32, so we don't use those.
-+*/
-+
-+socketx::socketx(int const sockFd) {
-+#if MSVCRT        
-+    // We don't have any way to duplicate; we'll just have to borrow.
-+    this->fdIsBorrowed = true;
-+    this->fd = sockFd;
-+    u_long iMode(1);  // Nonblocking mode yes
-+    ioctlsocket(this->fd, FIONBIO, &iMode);  // Make socket nonblocking
-+#else
-+    this->fdIsBorrowed = false;
-+
-+    int dupRc;
-+
-+    dupRc = dup(sockFd);
-+
-+    if (dupRc < 0)
-+        throwf("dup() failed.  errno=%d (%s)", errno, strerror(errno));
-+    else {
-+        this->fd = dupRc;
-+        fcntl(this->fd, F_SETFL, O_NONBLOCK);  // Make socket nonblocking
-+    }
-+#endif
-+}
-+
-+
-+
-+socketx::~socketx() {
-+
-+    if (!this->fdIsBorrowed) {
-+#if MSVCRT
-+        ::closesocket(SOCKET(this->fd));
-+#else
-+        close(this->fd);
-+#endif
-+    }
-+}
-+
-+
-+
-+void
-+socketx::waitForReadable() const {
-+    /* Return when there is something to read from the socket
-+       (an EOF indication counts as something to read).  Also
-+       return if there is a signal (handled, of course).  Rarely,
-+       it is OK to return when there isn't anything to read.
-+    */
-+#if  MSVCRT
-+    // poll() is not available; settle for select().
-+    // Starting in Windows Vista, there is WSApoll()
-+    fd_set rd_set;
-+    FD_ZERO(&rd_set);
-+    FD_SET(this->fd, &rd_set);
-+
-+    select(this->fd + 1, &rd_set, 0, 0, 0);
-+#else
-+    // poll() beats select() because higher file descriptor numbers
-+    // work.
-+    struct pollfd pollfds[1];
-+
-+    pollfds[0].fd = this->fd;
-+    pollfds[0].events = POLLIN;
-+
-+    poll(pollfds, ARRAY_SIZE(pollfds), -1);
-+#endif
-+}
-+
-+
-+
-+void
-+socketx::waitForWritable() const {
-+    /* Return when socket is able to be written to. */
-+#if MSVCRT
-+    fd_set wr_set;
-+    FD_ZERO(&wr_set);
-+    FD_SET(this->fd, &wr_set);
-+
-+    select(this->fd + 1, 0, &wr_set, 0, 0);
-+#else
-+    struct pollfd pollfds[1];
-+        
-+    pollfds[0].fd = this->fd;
-+    pollfds[0].events = POLLOUT;
-+        
-+    poll(pollfds, ARRAY_SIZE(pollfds), -1);
-+#endif
-+}
-+
-+
-+
-+static bool
-+wouldBlock() {
-+/*----------------------------------------------------------------------------
-+   The most recently executed system socket function, which we assume failed,
-+   failed because the situation was such that it wanted to block, but the
-+   socket had the nonblocking option.
-+-----------------------------------------------------------------------------*/
-+#if MSVCRT
-+    return (WSAGetLastError() == WSAEWOULDBLOCK ||
-+            WSAGetLastError() == WSAEINPROGRESS);
-+#else
-+    /* EWOULDBLOCK and EAGAIN are normally synonyms, but POSIX allows them
-+       to be separate and allows the OS to return whichever one it wants
-+       for the "would block" condition.
-+    */
-+    return (errno == EWOULDBLOCK || errno == EAGAIN);
-+#endif
-+}
-+
-+
-+
-+static string
-+lastErrorDesc() {
-+/*----------------------------------------------------------------------------
-+   A description suitable for an error message of why the most recent
-+   failed system socket function failed.
-+-----------------------------------------------------------------------------*/
-+    ostringstream msg;
-+#if MSVCRT
-+    int const lastError = WSAGetLastError();
-+    msg << "winsock error code " << lastError << " "
-+        << "(" << strerror(lastError) << ")";
-+#else
-+    msg << "errno = " << errno << ", (" << strerror(errno);
-+#endif
-+    return msg.str();
-+}
-+
-+
-+
-+
-+void
-+socketx::read(unsigned char * const buffer,
-+              size_t          const bufferSize,
-+              bool *          const wouldblockP,
-+              size_t *        const bytesReadP) const {
-+    
-+    int rc;
-+
-+    // We've seen a Windows library whose recv() expects a char * buffer
-+    // (cf POSIX void *), so we cast.
-+
-+    rc = recv(this->fd, (char *)buffer, bufferSize, 0);
-+
-+    if (rc < 0) {
-+        if (wouldBlock()) {
-+            *wouldblockP = true;
-+            *bytesReadP  = 0;
-+        } else
-+            throwf("read() of socket failed with %s", lastErrorDesc().c_str());
-+    } else {
-+        *wouldblockP = false;
-+        *bytesReadP  = rc;
-+    }
-+}
-+
-+
-+
-+static void
-+writeFd(int                   const fd,
-+        const unsigned char * const data,
-+        size_t                const size,
-+        size_t *              const bytesWrittenP) {
-+
-+    size_t totalBytesWritten;
-+    bool full;  // File image is "full" for now - won't take any more data
-+
-+    full = false;
-+    totalBytesWritten = 0;
-+
-+    while (totalBytesWritten < size && !full) {
-+        int rc;
-+
-+        rc = send(fd, (char*)&data[totalBytesWritten],
-+                  size - totalBytesWritten, 0);
-+
-+        if (rc < 0) {
-+            if (wouldBlock())
-+                full = true;
-+            else
-+                throwf("write() of socket failed with %s",
-+                       lastErrorDesc().c_str());
-+        } else if (rc == 0)
-+            throwf("Zero byte short write.");
-+        else {
-+            size_t const bytesWritten(rc);
-+            totalBytesWritten += bytesWritten;
-+        }
-+    }
-+    *bytesWrittenP = totalBytesWritten;
-+}
-+
-+
-+
-+void
-+socketx::writeWait(const unsigned char * const data,
-+                   size_t                const size) const {
-+/*----------------------------------------------------------------------------
-+   Write the 'size' bytes at 'data' to the socket.  Wait as long
-+   as it takes for the file image to be able to take all the data.
-+-----------------------------------------------------------------------------*/
-+    size_t totalBytesWritten;
-+
-+    // We do the first one blind because it will probably just work
-+    // and we don't want to waste the poll() call and buffer arithmetic.
-+
-+    writeFd(this->fd, data, size, &totalBytesWritten);
-+
-+    while (totalBytesWritten < size) {
-+        this->waitForWritable();
-+
-+        size_t bytesWritten;
-+
-+        writeFd(this->fd, &data[totalBytesWritten], size - totalBytesWritten,
-+                &bytesWritten);
-+
-+        totalBytesWritten += bytesWritten;
-+    }
-+}
-+
-+
-+
- namespace xmlrpc_c {
-@@ -86,7 +350,7 @@ packet::initialize(const unsigned char * const data,
-     this->bytes = reinterpret_cast<unsigned char *>(malloc(dataLength));
-     if (this->bytes == NULL)
--        throwf("Can't get storage for a %u-byte packet.", dataLength);
-+        throwf("Can't get storage for a %u-byte packet", (unsigned)dataLength);
-     this->allocSize = dataLength;
-@@ -138,7 +402,7 @@ packet::addData(const unsigned char * const data,
-             realloc(this->bytes, neededSize));
-     if (this->bytes == NULL)
--        throwf("Can't get storage for a %u-byte packet.", neededSize);
-+        throwf("Can't get storage for a %u-byte packet", (unsigned)neededSize);
-     memcpy(this->bytes + this->length, data, dataLength);
-@@ -166,33 +430,83 @@ packetPtr::operator->() const {
--packetSocket::packetSocket(int const sockFd) {
--
--    int dupRc;
--
--    dupRc = dup(sockFd);
--    
--    if (dupRc < 0)
--        throwf("dup() failed.  errno=%d (%s)", errno, strerror(errno));
--    else {
--        this->sockFd = dupRc;
--
--        this->inEscapeSeq = false;
--        this->inPacket    = false;
--
--        this->escAccum.len = 0;
--        
--        fcntl(this->sockFd, F_SETFL, O_NONBLOCK);
-+class packetSocket_impl {
--        this->eof = false;
--    }
--}
-+public:
-+    packetSocket_impl(int const sockFd);
-+    void
-+    writeWait(packetPtr const& packetP) const;
-+    void
-+    read(bool *      const eofP,
-+         bool *      const gotPacketP,
-+         packetPtr * const packetPP);
--packetSocket::~packetSocket() {
-+    void
-+    readWait(volatile const int * const interruptP,
-+             bool *               const eofP,
-+             bool *               const gotPacketP,
-+             packetPtr *          const packetPP);
--    close(this->sockFd);
-+private:
-+    socketx sock;
-+        // The kernel stream socket we use.
-+    bool eof;
-+        // The packet socket is at end-of-file for reads.
-+        // 'readBuffer' is empty and there won't be any more data to fill
-+        // it because the underlying stream socket is closed.
-+    std::queue<packetPtr> readBuffer;
-+    packetPtr packetAccumP;
-+        // The receive packet we're currently accumulating; it will join
-+        // 'readBuffer' when we've received the whole packet (and we've
-+        // seen the END escape sequence so we know we've received it all).
-+        // If we're not currently accumulating a packet (haven't seen a
-+        // PKT escape sequence), this points to nothing.
-+    bool inEscapeSeq;
-+        // In our trek through the data read from the underlying stream
-+        // socket, we are after an ESC character and before the end of the
-+        // escape sequence.  'escAccum' shows what of the escape sequence
-+        // we've seen so far.
-+    bool inPacket;
-+        // We're now receiving packet data from the underlying stream
-+        // socket.  We've seen a complete PKT escape sequence, but have not
-+        // seen a complete END escape sequence since.
-+    struct {
-+        unsigned char bytes[3];
-+        size_t len;
-+    } escAccum;
-+
-+    void
-+    takeSomeEscapeSeq(const unsigned char * const buffer,
-+                                    size_t                const length,
-+                                    size_t *              const bytesTakenP);
-+
-+    void
-+    takeSomePacket(const unsigned char * const buffer,
-+                   size_t                const length,
-+                   size_t *              const bytesTakenP);
-+
-+    void
-+    verifyNothingAccumulated();
-+
-+    void
-+    processBytesRead(const unsigned char * const buffer,
-+                     size_t                const bytesRead);
-+
-+    void
-+    readFromFile();
-+};
-+
-+
-+
-+packetSocket_impl::packetSocket_impl(int const sockFd) :
-+    sock(sockFd) {
-+
-+    this->inEscapeSeq  = false;
-+    this->inPacket     = false;
-+    this->escAccum.len = 0;
-+    this->eof          = false;
- }
-@@ -229,106 +543,27 @@ packetSocket::~packetSocket() {
- -----------------------------------------------------------------------------*/
--static void
--writeFd(int                   const fd,
--        const unsigned char * const data,
--        size_t                const size,
--        size_t *              const bytesWrittenP) {
--
--    size_t totalBytesWritten;
--    bool full;  // File image is "full" for now - won't take any more data
--
--    full = false;
--    totalBytesWritten = 0;
--
--    while (totalBytesWritten < size && !full) {
--        ssize_t rc;
--
--        rc = write(fd, &data[totalBytesWritten], size - totalBytesWritten);
--
--        if (rc < 0) {
--            if (errno == EAGAIN)
--                full = true;
--            else
--                throwf("write() of socket failed with errno %d (%s)",
--                       errno, strerror(errno));
--        } else if (rc == 0)
--            throwf("Zero byte short write.");
--        else {
--            size_t const bytesWritten(rc);
--            totalBytesWritten += bytesWritten;
--        }
--    }
--    *bytesWrittenP = totalBytesWritten;
--}
--
--
--
--static void
--writeFdWait(int                   const fd,
--            const unsigned char * const data,
--            size_t                const size) {
--/*----------------------------------------------------------------------------
--   Write the 'size' bytes at 'data' to the file image 'fd'.  Wait as long
--   as it takes for the file image to be able to take all the data.
-------------------------------------------------------------------------------*/
--    size_t totalBytesWritten;
--
--    // We do the first one blind because it will probably just work
--    // and we don't want to waste the poll() call and buffer arithmetic.
--
--    writeFd(fd, data, size, &totalBytesWritten);
--
--    while (totalBytesWritten < size) {
--        struct pollfd pollfds[1];
--        
--        pollfds[0].fd = fd;
--        pollfds[0].events = POLLOUT;
--        
--        poll(pollfds, ARRAY_SIZE(pollfds), -1);
--
--        size_t bytesWritten;
--
--        writeFd(fd, &data[totalBytesWritten], size - totalBytesWritten,
--                &bytesWritten);
--
--        totalBytesWritten += bytesWritten;
--    }
--}
--
--
--
- void
--packetSocket::writeWait(packetPtr const& packetP) const {
-+packetSocket_impl::writeWait(packetPtr const& packetP) const {
-     const unsigned char * const packetStart(
-         reinterpret_cast<const unsigned char *>(ESC_STR "PKT"));
-     const unsigned char * const packetEnd(
-         reinterpret_cast<const unsigned char *>(ESC_STR "END"));
--    writeFdWait(this->sockFd, packetStart, 4);
--
--    writeFdWait(this->sockFd, packetP->getBytes(), packetP->getLength());
-+    this->sock.writeWait(packetStart, 4);
--    writeFdWait(this->sockFd, packetEnd, 4);
--}
--
--
--
--static ssize_t
--libc_read(int    const fd,
--          void * const buf,
--          size_t const count) {
-+    this->sock.writeWait(packetP->getBytes(), packetP->getLength());
--    return read(fd, buf, count);
-+    this->sock.writeWait(packetEnd, 4);
- }
- void
--packetSocket::takeSomeEscapeSeq(const unsigned char * const buffer,
--                                size_t                const length,
--                                size_t *              const bytesTakenP) {
-+packetSocket_impl::takeSomeEscapeSeq(const unsigned char * const buffer,
-+                                     size_t                const length,
-+                                     size_t *              const bytesTakenP) {
- /*----------------------------------------------------------------------------
-    Take and process some bytes from the incoming stream 'buffer',
-    which contains 'length' bytes, assuming they are within an escape
-@@ -378,9 +613,9 @@ packetSocket::takeSomeEscapeSeq(const unsigned char * const buffer,
- void
--packetSocket::takeSomePacket(const unsigned char * const buffer,
--                             size_t                const length,
--                             size_t *              const bytesTakenP) {
-+packetSocket_impl::takeSomePacket(const unsigned char * const buffer,
-+                                  size_t                const length,
-+                                  size_t *              const bytesTakenP) {
-     assert(!this->inEscapeSeq);
-@@ -408,7 +643,7 @@ packetSocket::takeSomePacket(const unsigned char * const buffer,
- void
--packetSocket::verifyNothingAccumulated() {
-+packetSocket_impl::verifyNothingAccumulated() {
- /*----------------------------------------------------------------------------
-    Throw an error if there is a partial packet accumulated.
- -----------------------------------------------------------------------------*/
-@@ -419,14 +654,14 @@ packetSocket::verifyNothingAccumulated() {
-     if (this->inPacket)
-         throwf("Stream socket closed in the middle of a packet "
-                "(%u bytes of packet received; no END marker to mark "
--               "end of packet)", this->packetAccumP->getLength());
-+               "end of packet)", (unsigned)this->packetAccumP->getLength());
- }
- void
--packetSocket::processBytesRead(const unsigned char * const buffer,
--                               size_t                const bytesRead) {
-+packetSocket_impl::processBytesRead(const unsigned char * const buffer,
-+                                    size_t                const bytesRead) {
-     unsigned int cursor;  // Cursor into buffer[]
-     cursor = 0;
-@@ -456,7 +691,7 @@ packetSocket::processBytesRead(const unsigned char * const buffer,
- void
--packetSocket::readFromFile() {
-+packetSocket_impl::readFromFile() {
- /*----------------------------------------------------------------------------
-    Read some data from the underlying stream socket.  Read as much as is
-    available right now, up to 4K.  Update 'this' to reflect the data read.
-@@ -473,19 +708,11 @@ packetSocket::readFromFile() {
-     while (this->readBuffer.empty() && !this->eof && !wouldblock) {
-         unsigned char buffer[4096];
--        ssize_t rc;
-+        size_t bytesRead;
--        rc = libc_read(this->sockFd, buffer, sizeof(buffer));
--
--        if (rc < 0) {
--            if (errno == EWOULDBLOCK)
--                wouldblock = true;
--            else
--                throwf("read() of socket failed with errno %d (%s)",
--                       errno, strerror(errno));
--        } else {
--            size_t const bytesRead(rc);
-+        this->sock.read(buffer, sizeof(buffer), &wouldblock, &bytesRead);
-+        if (!wouldblock) {
-             if (bytesRead == 0) {
-                 this->eof = true;
-                 this->verifyNothingAccumulated();
-@@ -498,9 +725,9 @@ packetSocket::readFromFile() {
- void
--packetSocket::read(bool *      const eofP,
--                   bool *      const gotPacketP,
--                   packetPtr * const packetPP) {
-+packetSocket_impl::read(bool *      const eofP,
-+                        bool *      const gotPacketP,
-+                        packetPtr * const packetPP) {
- /*----------------------------------------------------------------------------
-    Read one packet from the socket, through the internal packet buffer.
-@@ -535,10 +762,10 @@ packetSocket::read(bool *      const eofP,
- void
--packetSocket::readWait(volatile const int * const interruptP,
--                       bool *               const eofP,
--                       bool *               const gotPacketP,
--                       packetPtr *          const packetPP) {
-+packetSocket_impl::readWait(volatile const int * const interruptP,
-+                            bool *               const eofP,
-+                            bool *               const gotPacketP,
-+                            packetPtr *          const packetPP) {
-     bool gotPacket;
-     bool eof;
-@@ -547,13 +774,8 @@ packetSocket::readWait(volatile const int * const interruptP,
-     eof = false;
-     while (!gotPacket && !eof && !*interruptP) {
--        struct pollfd pollfds[1];
--
--        pollfds[0].fd = this->sockFd;
--        pollfds[0].events = POLLIN;
--
--        poll(pollfds, ARRAY_SIZE(pollfds), -1);
-+        this->sock.waitForReadable();
-         this->read(&eof, &gotPacket, packetPP);
-     }
-@@ -563,6 +785,49 @@ packetSocket::readWait(volatile const int * const interruptP,
-+packetSocket::packetSocket(int const sockFd) {
-+
-+    this->implP = new packetSocket_impl(sockFd);
-+}
-+
-+
-+
-+packetSocket::~packetSocket() {
-+
-+    delete(this->implP);
-+}
-+
-+
-+
-+void
-+packetSocket::writeWait(packetPtr const& packetP) const {
-+
-+    implP->writeWait(packetP);
-+}
-+
-+
-+
-+void
-+packetSocket::read(bool *      const eofP,
-+                   bool *      const gotPacketP,
-+                   packetPtr * const packetPP) {
-+
-+    this->implP->read(eofP, gotPacketP, packetPP);
-+}
-+
-+
-+
-+void
-+packetSocket::readWait(volatile const int * const interruptP,
-+                       bool *               const eofP,
-+                       bool *               const gotPacketP,
-+                       packetPtr *          const packetPP) {
-+
-+    this->implP->readWait(interruptP, eofP, gotPacketP, packetPP);
-+}
-+
-+
-+
- void
- packetSocket::readWait(volatile const int * const interruptP,
-                        bool *               const eofP,
-@@ -570,7 +835,7 @@ packetSocket::readWait(volatile const int * const interruptP,
-     bool gotPacket;
--    this->readWait(interruptP, eofP, &gotPacket, packetPP);
-+    this->implP->readWait(interruptP, eofP, &gotPacket, packetPP);
-     if (!gotPacket)
-         throwf("Packet read was interrupted");
-diff --git a/libs/xmlrpc-c/src/cpp/pstream.cpp b/libs/xmlrpc-c/src/cpp/pstream.cpp
-index 6a75160..fd2a31d 100644
---- a/libs/xmlrpc-c/src/cpp/pstream.cpp
-+++ b/libs/xmlrpc-c/src/cpp/pstream.cpp
-@@ -37,9 +37,24 @@ using namespace std;
- namespace xmlrpc_c {
--clientXmlTransport_pstream::constrOpt::constrOpt() {
--    present.fd = false;
-+struct clientXmlTransport_pstream::constrOpt_impl {
-+
-+    constrOpt_impl();
-+
-+    struct {
-+        int         fd;
-+    } value;
-+    struct {
-+        bool fd;
-+    } present;
-+};
-+
-+
-+
-+clientXmlTransport_pstream::constrOpt_impl::constrOpt_impl() {
-+
-+    this->present.fd = false;
- }
-@@ -47,8 +62,8 @@ clientXmlTransport_pstream::constrOpt::constrOpt() {
- #define DEFINE_OPTION_SETTER(OPTION_NAME, TYPE) \
- clientXmlTransport_pstream::constrOpt & \
- clientXmlTransport_pstream::constrOpt::OPTION_NAME(TYPE const& arg) { \
--    this->value.OPTION_NAME = arg; \
--    this->present.OPTION_NAME = true; \
-+    this->implP->value.OPTION_NAME = arg; \
-+    this->implP->present.OPTION_NAME = true; \
-     return *this; \
- }
-@@ -58,7 +73,31 @@ DEFINE_OPTION_SETTER(fd, xmlrpc_socket);
--clientXmlTransport_pstream::clientXmlTransport_pstream(constrOpt const& opt) {
-+clientXmlTransport_pstream::constrOpt::constrOpt() {
-+
-+    this->implP = new clientXmlTransport_pstream::constrOpt_impl();
-+}
-+
-+
-+
-+clientXmlTransport_pstream::constrOpt::~constrOpt() {
-+
-+    delete(this->implP);
-+}
-+
-+
-+
-+clientXmlTransport_pstream::constrOpt::constrOpt(constrOpt& arg) {
-+
-+    this->implP = new clientXmlTransport_pstream::constrOpt_impl(*arg.implP);
-+}
-+
-+
-+
-+clientXmlTransport_pstream::clientXmlTransport_pstream(
-+    constrOpt const& optExt) {
-+
-+    constrOpt_impl const opt(*optExt.implP);
-     if (!opt.present.fd)
-         throwf("You must provide a 'fd' constructor option.");
-diff --git a/libs/xmlrpc-c/src/cpp/registry.cpp b/libs/xmlrpc-c/src/cpp/registry.cpp
-index 26bfa95..9b3bc3e 100644
---- a/libs/xmlrpc-c/src/cpp/registry.cpp
-+++ b/libs/xmlrpc-c/src/cpp/registry.cpp
-@@ -59,6 +59,24 @@ methodPtr::operator->() const {
-+method2::method2() {}
-+
-+
-+
-+method2::~method2() {}
-+
-+
-+void
-+method2::execute(xmlrpc_c::paramList const& paramList,
-+                 xmlrpc_c::value *   const  resultP) {
-+
-+    callInfo const nullCallInfo;
-+
-+    execute(paramList, &nullCallInfo, resultP);
-+}
-+
-+
-+
- defaultMethod::~defaultMethod() {}
-@@ -90,7 +108,32 @@ defaultMethodPtr::get() const {
--registry::registry() {
-+struct registry_impl {
-+
-+    xmlrpc_registry * c_registryP;
-+        // Pointer to the C registry object we use to implement this
-+        // object.
-+
-+    std::list<xmlrpc_c::methodPtr> methodList;
-+        // This is a list of all the method objects (actually, pointers
-+        // to them).  But since the real registry is the C registry object,
-+        // all this list is for is to maintain references to the objects
-+        // to which the C registry points so that they continue to exist.
-+
-+    xmlrpc_c::defaultMethodPtr defaultMethodP;
-+        // The real identifier of the default method is the C registry
-+        // object; this member exists only to maintain a reference to the
-+        // object to which the C registry points so that it will continue
-+        // to exist.
-+
-+    registry_impl();
-+
-+    ~registry_impl();
-+};
-+
-+
-+
-+registry_impl::registry_impl() {
-     env_wrap env;
-@@ -101,12 +144,25 @@ registry::registry() {
--registry::~registry(void) {
-+registry_impl::~registry_impl() {
-     xmlrpc_registry_free(this->c_registryP);
- }
-+registry::registry() {
-+
-+    this->implP = new registry_impl();
-+}
-+
-+
-+
-+registry::~registry(void) {
-+
-+    delete(this->implP);
-+}
-+
-+
- registryPtr::registryPtr() {}
-@@ -173,7 +229,8 @@ pListFromXmlrpcArray(xmlrpc_value * const arrayP) {
- static xmlrpc_value *
- c_executeMethod(xmlrpc_env *   const envP,
-                 xmlrpc_value * const paramArrayP,
--                void *         const methodPtr) {
-+                void *         const methodPtr,
-+                void *         const callInfoPtr) {
- /*----------------------------------------------------------------------------
-    This is a function designed to be called via a C registry to
-    execute an XML-RPC method, but use a C++ method object to do the
-@@ -188,18 +245,25 @@ c_executeMethod(xmlrpc_env *   const envP,
-    encounter in processing the result it returns, and turn it into an
-    XML-RPC method failure.  This will cause a leak if the execute()
-    method actually created a result, since it will not get destroyed.
-+
-+   This function is of type 'xmlrpc_method2'.
- -----------------------------------------------------------------------------*/
--    xmlrpc_c::method * const methodP = 
--        static_cast<xmlrpc_c::method *>(methodPtr);
--    xmlrpc_c::paramList const paramList(pListFromXmlrpcArray(paramArrayP));
-+    method * const methodP(static_cast<method *>(methodPtr));
-+    paramList const paramList(pListFromXmlrpcArray(paramArrayP));
-+    callInfo * const callInfoP(static_cast<callInfo *>(callInfoPtr));
-     xmlrpc_value * retval;
-+    retval = NULL; // silence used-before-set warning
-     try {
--        xmlrpc_c::value result;
-+        value result;
-         try {
--            methodP->execute(paramList, &result);
-+            method2 * const method2P(dynamic_cast<method2 *>(methodP));
-+            if (method2P)
-+                method2P->execute(paramList, callInfoP, &result);
-+            else 
-+                methodP->execute(paramList, &result);
-         } catch (xmlrpc_c::fault const& fault) {
-             xmlrpc_env_set_fault(envP, fault.getCode(), 
-                                  fault.getDescription().c_str()); 
-@@ -256,6 +320,7 @@ c_executeDefaultMethod(xmlrpc_env *   const envP,
-     paramList const paramList(pListFromXmlrpcArray(paramArrayP));
-     xmlrpc_value * retval;
-+    retval = NULL; // silence used-before-set warning
-     try {
-         xmlrpc_c::value result;
-@@ -296,15 +361,22 @@ void
- registry::addMethod(string    const name,
-                     methodPtr const methodP) {
--    this->methodList.push_back(methodP);
-+    this->implP->methodList.push_back(methodP);
-+    struct xmlrpc_method_info3 methodInfo;
-     env_wrap env;
-+
-+    methodInfo.methodName      = name.c_str();
-+    methodInfo.methodFunction  = &c_executeMethod;
-+    methodInfo.serverInfo      = methodP.get();
-+    methodInfo.stackSize       = 0;
-+    string const signatureString(methodP->signature());
-+    methodInfo.signatureString = signatureString.c_str();
-+    string const help(methodP->help());
-+    methodInfo.help            = help.c_str();
-     
--      xmlrpc_registry_add_method_w_doc(
--        &env.env_c, this->c_registryP, NULL,
--        name.c_str(), &c_executeMethod, 
--        (void*) methodP.get(), 
--        methodP->signature().c_str(), methodP->help().c_str());
-+      xmlrpc_registry_add_method3(&env.env_c, this->implP->c_registryP,
-+                                &methodInfo);
-     throwIfError(env);
- }
-@@ -314,12 +386,12 @@ registry::addMethod(string    const name,
- void
- registry::setDefaultMethod(defaultMethodPtr const methodP) {
--    this->defaultMethodP = methodP;
-+    this->implP->defaultMethodP = methodP;
-     env_wrap env;
-     
-     xmlrpc_registry_set_default_method(
--        &env.env_c, this->c_registryP,
-+        &env.env_c, this->implP->c_registryP,
-         &c_executeDefaultMethod, (void*) methodP.get());
-     throwIfError(env);
-@@ -330,7 +402,7 @@ registry::setDefaultMethod(defaultMethodPtr const methodP) {
- void
- registry::disableIntrospection() {
--    xmlrpc_registry_disable_introspection(this->c_registryP);
-+    xmlrpc_registry_disable_introspection(this->implP->c_registryP);
- }
-@@ -362,7 +434,7 @@ registry::setShutdown(const registry::shutdown * const shutdownP) {
-     void * const context(const_cast<registry::shutdown *>(shutdownP));
--    xmlrpc_registry_set_shutdown(this->c_registryP,
-+    xmlrpc_registry_set_shutdown(this->implP->c_registryP,
-                                  &shutdownServer,
-                                  context);
- }
-@@ -374,9 +446,49 @@ registry::setDialect(xmlrpc_dialect const dialect) {
-     env_wrap env;
--    xmlrpc_registry_set_dialect(&env.env_c, this->c_registryP, dialect);
-+    xmlrpc_registry_set_dialect(&env.env_c, this->implP->c_registryP, dialect);
-+
-+    throwIfError(env);
-+}
-+
-+
-+
-+void
-+registry::processCall(string           const& callXml,
-+                      const callInfo * const  callInfoP,
-+                      string *         const  responseXmlP) const {
-+/*----------------------------------------------------------------------------
-+   Process an XML-RPC call whose XML is 'callXml'.
-+
-+   Return the response XML as *responseXmlP.
-+
-+   If we are unable to execute the call, we throw an error.  But if
-+   the call executes and the method merely fails in an XML-RPC sense, we
-+   don't.  In that case, *responseXmlP indicates the failure.
-+-----------------------------------------------------------------------------*/
-+    env_wrap env;
-+    xmlrpc_mem_block * response;
-+
-+    // For the pure C++ version, this will have to parse 'callXml'
-+    // into a method name and parameters, look up the method name in
-+    // the registry, call the method's execute() method, then marshall
-+    // the result into XML and return it as *responseXmlP.  It will
-+    // also have to execute system methods (e.g. introspection)
-+    // itself.  This will be more or less like what
-+    // xmlrpc_registry_process_call() does.
-+
-+    xmlrpc_registry_process_call2(
-+        &env.env_c, this->implP->c_registryP,
-+        callXml.c_str(), callXml.length(),
-+        const_cast<callInfo *>(callInfoP),
-+        &response);
-     throwIfError(env);
-+
-+    *responseXmlP = string(XMLRPC_MEMBLOCK_CONTENTS(char, response),
-+                           XMLRPC_MEMBLOCK_SIZE(char, response));
-+    
-+    xmlrpc_mem_block_free(response);
- }
-@@ -405,7 +517,7 @@ registry::processCall(string   const& callXml,
-     // xmlrpc_registry_process_call() does.
-     output = xmlrpc_registry_process_call(
--        &env.env_c, this->c_registryP, NULL,
-+        &env.env_c, this->implP->c_registryP, NULL,
-         callXml.c_str(), callXml.length());
-     throwIfError(env);
-@@ -416,12 +528,24 @@ registry::processCall(string   const& callXml,
-     xmlrpc_mem_block_free(output);
- }
--xmlrpc_registry *
--registry::c_registry() const {
--    return this->c_registryP;
-+
-+#define PROCESS_CALL_STACK_SIZE 256
-+    // This is our liberal estimate of how much stack space
-+    // registry::processCall() needs, not counting what
-+    // the call the to C registry uses.
-+
-+
-+
-+size_t
-+registry::maxStackSize() const {
-+
-+    return xmlrpc_registry_max_stackSize(this->implP->c_registryP) +
-+        PROCESS_CALL_STACK_SIZE;
- }
-+
-+
- }  // namespace
-diff --git a/libs/xmlrpc-c/src/cpp/server_abyss.cpp b/libs/xmlrpc-c/src/cpp/server_abyss.cpp
-index 3501f35..58fdd9b 100644
---- a/libs/xmlrpc-c/src/cpp/server_abyss.cpp
-+++ b/libs/xmlrpc-c/src/cpp/server_abyss.cpp
-@@ -1,10 +1,11 @@
-+#include "xmlrpc_config.h"
- #include <cstdlib>
- #include <string>
- #include <memory>
- #include <signal.h>
- #include <errno.h>
- #include <iostream>
--#ifndef _WIN32
-+#if !MSVCRT
- #include <sys/wait.h>
- #endif
-@@ -14,9 +15,13 @@
- using girerr::error;
- using girerr::throwf;
- #include "xmlrpc-c/base.h"
-+#include "xmlrpc-c/util.h"
- #include "xmlrpc-c/base.hpp"
-+#include "xmlrpc-c/abyss.h"
- #include "xmlrpc-c/server_abyss.h"
- #include "xmlrpc-c/registry.hpp"
-+#include "env_wrap.hpp"
-+
- #include "xmlrpc-c/server_abyss.hpp"
- using namespace std;
-@@ -43,14 +48,13 @@ sigchld(int const ASSERT_ONLY_ARG(signalClass)) {
-    This is a signal handler for a SIGCHLD signal (which informs us that
-    one of our child processes has terminated).
--   We respond by reaping the zombie process.
--
--   Implementation note: In some systems, just setting the signal handler
--   to SIG_IGN (ignore signal) does this.  In some, the system does this
--   automatically if the signal is blocked.
-+   The only child processes we have are those that belong to the Abyss
-+   server (and then only if the Abyss server was configured to use
-+   forking as a threading mechanism), so we respond by passing the
-+   signal on to the Abyss server.  And reaping the dead child.
- -----------------------------------------------------------------------------*/
- #ifndef _WIN32
--    /* Reap zombie children until there aren't any more. */
-+    // Reap zombie children / report to Abyss until there aren't any more.
-     bool zombiesExist;
-     bool error;
-@@ -71,7 +75,8 @@ sigchld(int const ASSERT_ONLY_ARG(signalClass)) {
-                 // This is OK - it's a ptrace notification
-             } else
-                 error = true;
--        }
-+        } else
-+            ServerHandleSigchld(pid);
-     }
- #endif /* _WIN32 */
- }
-@@ -160,41 +165,78 @@ public:
--serverAbyss::shutdown::shutdown(serverAbyss * const serverAbyssP) :
--    serverAbyssP(serverAbyssP) {}
--
--
--
--serverAbyss::shutdown::~shutdown() {}
--
--
--
--void
--serverAbyss::shutdown::doit(string const&,
--                            void * const) const {
--
--    this->serverAbyssP->terminate();
--}
-+callInfo_serverAbyss::callInfo_serverAbyss(
-+    serverAbyss * const serverAbyssP,
-+    TSession *    const abyssSessionP) :
-+    serverAbyssP(serverAbyssP), abyssSessionP(abyssSessionP) {}
-+
-+
-+
-+struct serverAbyss::constrOpt_impl {
-+
-+    constrOpt_impl();
-+
-+    struct value {
-+        xmlrpc_c::registryPtr      registryPtr;
-+        const xmlrpc_c::registry * registryP;
-+        XMLRPC_SOCKET  socketFd;
-+        unsigned int   portNumber;
-+        std::string    logFileName;
-+        unsigned int   keepaliveTimeout;
-+        unsigned int   keepaliveMaxConn;
-+        unsigned int   timeout;
-+        bool           dontAdvertise;
-+        std::string    uriPath;
-+        bool           chunkResponse;
-+        std::string    allowOrigin;
-+        unsigned int   accessCtlMaxAge;
-+        bool           serverOwnsSignals;
-+        bool           expectSigchld;
-+    } value;
-+    struct {
-+        bool registryPtr;
-+        bool registryP;
-+        bool socketFd;
-+        bool portNumber;
-+        bool logFileName;
-+        bool keepaliveTimeout;
-+        bool keepaliveMaxConn;
-+        bool timeout;
-+        bool dontAdvertise;
-+        bool uriPath;
-+        bool chunkResponse;
-+        bool allowOrigin;
-+        bool accessCtlMaxAge;
-+        bool serverOwnsSignals;
-+        bool expectSigchld;
-+    } present;
-+};
--serverAbyss::constrOpt::constrOpt() {
--    present.registryPtr      = false;
--    present.registryP        = false;
--    present.socketFd         = false;
--    present.portNumber       = false;
--    present.logFileName      = false;
--    present.keepaliveTimeout = false;
--    present.keepaliveMaxConn = false;
--    present.timeout          = false;
--    present.dontAdvertise    = false;
--    present.uriPath          = false;
--    present.chunkResponse    = false;
-+serverAbyss::constrOpt_impl::constrOpt_impl() {
-+    present.registryPtr       = false;
-+    present.registryP         = false;
-+    present.socketFd          = false;
-+    present.portNumber        = false;
-+    present.logFileName       = false;
-+    present.keepaliveTimeout  = false;
-+    present.keepaliveMaxConn  = false;
-+    present.timeout           = false;
-+    present.dontAdvertise     = false;
-+    present.uriPath           = false;
-+    present.chunkResponse     = false;
-+    present.allowOrigin       = false;
-+    present.accessCtlMaxAge  = false;
-+    present.serverOwnsSignals = false;
-+    present.expectSigchld     = false;
-     
-     // Set default values
--    value.dontAdvertise  = false;
--    value.uriPath        = string("/RPC2");
--    value.chunkResponse  = false;
-+    value.dontAdvertise     = false;
-+    value.uriPath           = string("/RPC2");
-+    value.chunkResponse     = false;
-+    value.serverOwnsSignals = true;
-+    value.expectSigchld     = false;
- }
-@@ -202,40 +244,40 @@ serverAbyss::constrOpt::constrOpt() {
- #define DEFINE_OPTION_SETTER(OPTION_NAME, TYPE) \
- serverAbyss::constrOpt & \
- serverAbyss::constrOpt::OPTION_NAME(TYPE const& arg) { \
--    this->value.OPTION_NAME = arg; \
--    this->present.OPTION_NAME = true; \
-+    this->implP->value.OPTION_NAME = arg; \
-+    this->implP->present.OPTION_NAME = true; \
-     return *this; \
- }
--DEFINE_OPTION_SETTER(registryPtr,      xmlrpc_c::registryPtr);
--DEFINE_OPTION_SETTER(registryP,        const registry *);
--DEFINE_OPTION_SETTER(socketFd,         XMLRPC_SOCKET);
--DEFINE_OPTION_SETTER(portNumber,       unsigned int);
--DEFINE_OPTION_SETTER(logFileName,      string);
--DEFINE_OPTION_SETTER(keepaliveTimeout, unsigned int);
--DEFINE_OPTION_SETTER(keepaliveMaxConn, unsigned int);
--DEFINE_OPTION_SETTER(timeout,          unsigned int);
--DEFINE_OPTION_SETTER(dontAdvertise,    bool);
--DEFINE_OPTION_SETTER(uriPath,          string);
--DEFINE_OPTION_SETTER(chunkResponse,    bool);
-+DEFINE_OPTION_SETTER(registryPtr,       xmlrpc_c::registryPtr);
-+DEFINE_OPTION_SETTER(registryP,         const registry *);
-+DEFINE_OPTION_SETTER(socketFd,          XMLRPC_SOCKET);
-+DEFINE_OPTION_SETTER(portNumber,        unsigned int);
-+DEFINE_OPTION_SETTER(logFileName,       string);
-+DEFINE_OPTION_SETTER(keepaliveTimeout,  unsigned int);
-+DEFINE_OPTION_SETTER(keepaliveMaxConn,  unsigned int);
-+DEFINE_OPTION_SETTER(timeout,           unsigned int);
-+DEFINE_OPTION_SETTER(dontAdvertise,     bool);
-+DEFINE_OPTION_SETTER(uriPath,           string);
-+DEFINE_OPTION_SETTER(chunkResponse,     bool);
-+DEFINE_OPTION_SETTER(allowOrigin,       string);
-+DEFINE_OPTION_SETTER(accessCtlMaxAge,   unsigned int);
-+DEFINE_OPTION_SETTER(serverOwnsSignals, bool);
-+DEFINE_OPTION_SETTER(expectSigchld,     bool);
-+
-+#undef DEFINE_OPTION_SETTER
-+serverAbyss::constrOpt::constrOpt() {
--void
--serverAbyss::setAdditionalServerParms(constrOpt const& opt) {
-+    this->implP = new serverAbyss::constrOpt_impl();
-+}
--    /* The following ought to be parameters on ServerCreate(), but it
--       looks like plugging them straight into the TServer structure is
--       the only way to set them.  
--    */
--    if (opt.present.keepaliveTimeout)
--        ServerSetKeepaliveTimeout(&this->cServer, opt.value.keepaliveTimeout);
--    if (opt.present.keepaliveMaxConn)
--        ServerSetKeepaliveMaxConn(&this->cServer, opt.value.keepaliveMaxConn);
--    if (opt.present.timeout)
--        ServerSetTimeout(&this->cServer, opt.value.timeout);
--    ServerSetAdvertise(&this->cServer, !opt.value.dontAdvertise);
-+
-+serverAbyss::constrOpt::~constrOpt() {
-+
-+    delete(this->implP);
- }
-@@ -280,10 +322,155 @@ createServer(bool         const  logFileNameGiven,
-+struct serverAbyss_impl {
-+    registryPtr regPtr;
-+        // This just holds a reference to the registry so that it may
-+        // get destroyed when the serverAbyss gets destroyed.  If the
-+        // creator of the serverAbyss is managing lifetime himself,
-+        // this is a null pointer.  'registryP' is what you really use
-+        // to access the registry.
-+    
-+    const registry * registryP;
-+
-+    TServer cServer;
-+
-+    serverAbyss_impl(serverAbyss::constrOpt_impl const& opt,
-+                     serverAbyss *               const serverAbyssP);
-+
-+    ~serverAbyss_impl();
-+
-+    void
-+    setAdditionalServerParms(serverAbyss::constrOpt_impl const& opt);
-+
-+    void
-+    setHttpReqHandlers(string       const& uriPath,
-+                       bool         const  chunkResponse,
-+                       bool         const  doHttpAccessControl,
-+                       string       const& allowOrigin,
-+                       bool         const  accessCtlExpires,
-+                       unsigned int const  accessCtlMaxAge);
-+    void
-+    run();
-+
-+    void
-+    processCall(std::string   const& call,
-+                TSession *    const  abyssSessionP,
-+                std::string * const  responseP);
-+
-+    serverAbyss * const serverAbyssP;
-+        // The server for which we are the implementation.
-+
-+    bool expectSigchld;
-+    bool serverOwnsSignals;
-+};
-+
-+
-+
-+static void
-+processXmlrpcCall(xmlrpc_env *        const envP,
-+                  void *              const arg,
-+                  const char *        const callXml,
-+                  size_t              const callXmlLen,
-+                  TSession *          const abyssSessionP,                  
-+                  xmlrpc_mem_block ** const responseXmlPP) {
-+/*----------------------------------------------------------------------------
-+   This is an XML-RPC XML call processor, as called by the HTTP request
-+   handler of the libxmlrpc_server_abyss C library.
-+
-+   'callXml'/'callXmlLen' is the XML text of a supposed XML-RPC call.
-+   We execute the RPC and return the XML text of the XML-RPC response
-+   as *responseXmlPP.
-+
-+   'arg' carries the information that tells us how to do that; e.g.
-+   what XML-RPC methods are defined.
-+-----------------------------------------------------------------------------*/
-+    serverAbyss_impl * const implP(
-+        static_cast<serverAbyss_impl *>(arg));
-+
-+    try {
-+        string const call(callXml, callXmlLen);
-+
-+        string response;
-+
-+        implP->processCall(call, abyssSessionP, &response);
-+
-+        xmlrpc_mem_block * responseMbP;
-+
-+        responseMbP = XMLRPC_MEMBLOCK_NEW(char, envP, 0);
-+
-+        if (!envP->fault_occurred) {
-+            XMLRPC_MEMBLOCK_APPEND(char, envP, responseMbP,
-+                                   response.c_str(), response.length());
-+
-+            *responseXmlPP = responseMbP;
-+        }
-+    } catch (exception const& e) {
-+        xmlrpc_env_set_fault(envP, XMLRPC_INTERNAL_ERROR, e.what());
-+    }
-+}
-+
-+
-+
- void
--serverAbyss::initialize(constrOpt const& opt) {
-+serverAbyss_impl::setAdditionalServerParms(
-+    serverAbyss::constrOpt_impl const& opt) {
--    const registry * registryP;
-+    // The following ought to be parameters on ServerCreate().
-+
-+    if (opt.present.keepaliveTimeout)
-+        ServerSetKeepaliveTimeout(&this->cServer, opt.value.keepaliveTimeout);
-+    if (opt.present.keepaliveMaxConn)
-+        ServerSetKeepaliveMaxConn(&this->cServer, opt.value.keepaliveMaxConn);
-+    if (opt.present.timeout)
-+        ServerSetTimeout(&this->cServer, opt.value.timeout);
-+    ServerSetAdvertise(&this->cServer, !opt.value.dontAdvertise);
-+    if (opt.value.expectSigchld)
-+        ServerUseSigchld(&this->cServer);
-+}
-+
-+
-+
-+void
-+serverAbyss_impl::setHttpReqHandlers(string       const& uriPath,
-+                                     bool         const  chunkResponse,
-+                                     bool         const  doHttpAccessControl,
-+                                     string       const& allowOrigin,
-+                                     bool         const  accessCtlExpires,
-+                                     unsigned int const  accessCtlMaxAge) {
-+/*----------------------------------------------------------------------------
-+   This is a constructor helper.  Don't assume *this is complete.
-+-----------------------------------------------------------------------------*/
-+    env_wrap env;
-+    xmlrpc_server_abyss_handler_parms parms;
-+
-+    parms.xml_processor = &processXmlrpcCall;
-+    parms.xml_processor_arg = this;
-+    parms.xml_processor_max_stack = this->registryP->maxStackSize();
-+    parms.uri_path = uriPath.c_str();
-+    parms.chunk_response = chunkResponse;
-+    parms.allow_origin = doHttpAccessControl ? allowOrigin.c_str() : NULL;
-+    parms.access_ctl_expires = accessCtlExpires;
-+    parms.access_ctl_max_age = accessCtlMaxAge;
-+
-+    xmlrpc_server_abyss_set_handler3(
-+        &env.env_c, &this->cServer,
-+        &parms, XMLRPC_AHPSIZE(access_ctl_max_age));
-+    
-+    if (env.env_c.fault_occurred)
-+        throwf("Failed to register the HTTP handler for XML-RPC "
-+               "with the underlying Abyss HTTP server.  "
-+               "xmlrpc_server_abyss_set_handler3() failed with:  %s",
-+               env.env_c.fault_string);
-+
-+    xmlrpc_server_abyss_set_default_handler(&this->cServer);
-+}
-+        
-+
-+
-+serverAbyss_impl::serverAbyss_impl(
-+    serverAbyss::constrOpt_impl const& opt,
-+    serverAbyss *          const serverAbyssP) :
-+    serverAbyssP(serverAbyssP) {
-     if (!opt.present.registryP && !opt.present.registryPtr)
-         throwf("You must specify the 'registryP' or 'registryPtr' option");
-@@ -292,15 +479,21 @@ serverAbyss::initialize(constrOpt const& opt) {
-                "the 'registryPtr' options");
-     else {
-         if (opt.present.registryP)
--            registryP = opt.value.registryP;
-+            this->registryP = opt.value.registryP;
-         else {
--            this->registryPtr = opt.value.registryPtr;
--            registryP = this->registryPtr.get();
-+            this->regPtr = opt.value.registryPtr;
-+            this->registryP = this->regPtr.get();
-         }
-     }
-     if (opt.present.portNumber && opt.present.socketFd)
-         throwf("You can't specify both portNumber and socketFd options");
-+    this->serverOwnsSignals = opt.value.serverOwnsSignals;
-+    
-+    if (opt.value.serverOwnsSignals && opt.value.expectSigchld)
-+        throwf("You can't specify both expectSigchld "
-+               "and serverOwnsSignals options");
-+
-     DateInit();
-     
-     createServer(opt.present.logFileName, opt.value.logFileName,
-@@ -309,18 +502,16 @@ serverAbyss::initialize(constrOpt const& opt) {
-                  &this->cServer);
-     try {
--        setAdditionalServerParms(opt);
-+        this->setAdditionalServerParms(opt);
-+
-+        this->setHttpReqHandlers(opt.value.uriPath,
-+                                 opt.value.chunkResponse,
-+                                 opt.present.allowOrigin,
-+                                 opt.value.allowOrigin,
-+                                 opt.present.accessCtlMaxAge,
-+                                 opt.value.accessCtlMaxAge);
-+
--        // chunked response implementation is incomplete.  We must
--        // eventually get away from libxmlrpc_server_abyss and
--        // register our own handler with the Abyss server.  At that
--        // time, we'll have some place to pass
--        // opt.value.chunkResponse.
--        
--        xmlrpc_c::server_abyss_set_handlers(&this->cServer,
--                                            registryP,
--                                            opt.value.uriPath);
--        
-         if (opt.present.portNumber || opt.present.socketFd)
-             ServerInit(&this->cServer);
-     } catch (...) {
-@@ -331,6 +522,94 @@ serverAbyss::initialize(constrOpt const& opt) {
-+serverAbyss_impl::~serverAbyss_impl() {
-+
-+    ServerFree(&this->cServer);
-+}
-+
-+
-+
-+static void
-+setupSignalsAndRunAbyss(TServer * const abyssServerP) {
-+
-+    /* We do some pretty ugly stuff for an object method: we set signal
-+       handlers, which are process-global.
-+
-+       One example of where this can be hairy is: Caller has a child
-+       process unrelated to the Abyss server.  That child dies.  We
-+       get his death of a child signal and Caller never knows.
-+
-+       We really expect to be the only thing in the process, at least
-+       for the time we're running.  If you want the Abyss Server
-+       to behave more like an object and own the signals yourself,
-+       use runOnce() in a loop instead of run().
-+    */
-+    signalHandlers oldHandlers;
-+
-+    setupSignalHandlers(&oldHandlers);
-+
-+    ServerUseSigchld(abyssServerP);
-+
-+    ServerRun(abyssServerP);
-+
-+    restoreSignalHandlers(oldHandlers);
-+}
-+
-+
-+
-+void
-+serverAbyss_impl::run() {
-+
-+    if (this->serverOwnsSignals)
-+        setupSignalsAndRunAbyss(&this->cServer);
-+    else {
-+        if (this->expectSigchld)
-+            ServerUseSigchld(&this->cServer);
-+
-+        ServerRun(&this->cServer);
-+    }
-+}
-+
-+
-+
-+void
-+serverAbyss_impl::processCall(string     const& call,
-+                              TSession * const  abyssSessionP,
-+                              string *   const  responseP) {
-+
-+    callInfo_serverAbyss const callInfo(this->serverAbyssP, abyssSessionP);
-+
-+    this->registryP->processCall(call, &callInfo, responseP);
-+}
-+
-+
-+
-+serverAbyss::shutdown::shutdown(serverAbyss * const serverAbyssP) :
-+    serverAbyssP(serverAbyssP) {}
-+
-+
-+
-+serverAbyss::shutdown::~shutdown() {}
-+
-+
-+
-+void
-+serverAbyss::shutdown::doit(string const&,
-+                            void * const) const {
-+
-+    this->serverAbyssP->terminate();
-+}
-+
-+
-+
-+void
-+serverAbyss::initialize(constrOpt const& opt) {
-+
-+    this->implP = new serverAbyss_impl(*opt.implP, this);
-+}
-+
-+
-+
- serverAbyss::serverAbyss(constrOpt const& opt) {
-     initialize(opt);
-@@ -376,7 +655,7 @@ serverAbyss::serverAbyss(
- serverAbyss::~serverAbyss() {
--    ServerFree(&this->cServer);
-+    delete(this->implP);
- }
-@@ -384,83 +663,147 @@ serverAbyss::~serverAbyss() {
- void
- serverAbyss::run() {
--    /* We do some pretty ugly stuff for an object method: we set signal
--       handlers, which are process-global.
-+    this->implP->run();
-+}
-+ 
--       One example of where this can be hairy is: Caller has a child
--       process unrelated to the Abyss server.  That child dies.  We
--       get his death of a child signal and Caller never knows.
--       We really expect to be the only thing in the process, at least
--       for the time we're running.  If you want the Abyss Server
--       to behave more like an object and own the signals yourself,
--       use runOnce() in a loop instead of run().
--    */
--    signalHandlers oldHandlers;
-+void
-+serverAbyss::runOnce() {
--    setupSignalHandlers(&oldHandlers);
-+    ServerRunOnce(&this->implP->cServer);
-+}
--    ServerRun(&this->cServer);
--    restoreSignalHandlers(oldHandlers);
-+
-+void
-+serverAbyss::runConn(int const socketFd) {
-+
-+    ServerRunConn(&this->implP->cServer, socketFd);
- }
-- 
-+
-+#ifndef WIN32
- void
--serverAbyss::runOnce() {
-+serverAbyss::sigchld(pid_t const pid) {
-+
-+    // There's a hole in the design here, because the Abyss server uses
-+    // a process-global list of children (so there can't be more than one
-+    // Abyss object in the process), so while this is an object method,
-+    // it doesn't really refer to the object at all.
--    ServerRunOnce(&this->cServer);
-+    // We might conceivably fix Abyss some day, then this method would do
-+    // what you expect -- affect only its own object.  But forking Abyss is
-+    // obsolete anyway, so we just don't worry about it.
-+
-+    ServerHandleSigchld(pid);
- }
-+#endif
- void
--serverAbyss::runConn(int const socketFd) {
-+serverAbyss::terminate() {
--    ServerRunConn(&this->cServer, socketFd);
-+    ServerTerminate(&this->implP->cServer);
- }
-+callInfo_abyss::callInfo_abyss(TSession * const abyssSessionP) :
-+    abyssSessionP(abyssSessionP) {}
-+
-+
-+
- void
--serverAbyss::terminate() {
-+processXmlrpcCall2(xmlrpc_env *        const envP,
-+                   void *              const arg,
-+                   const char *        const callXml,
-+                   size_t              const callXmlLen,
-+                   TSession *          const abyssSessionP,                  
-+                   xmlrpc_mem_block ** const responseXmlPP) {
-+/*----------------------------------------------------------------------------
-+   This is an XML-RPC XML call processor, as called by the HTTP request
-+   handler of the libxmlrpc_server_abyss C library.
-+
-+   'callXml'/'callXmlLen' is the XML text of a supposed XML-RPC call.
-+   We execute the RPC and return the XML text of the XML-RPC response
-+   as *responseXmlPP.
-+
-+   'arg' carries the information that tells us how to do that; e.g.
-+   what XML-RPC methods are defined.
-+-----------------------------------------------------------------------------*/
-+    const registry * const registryP(static_cast<registry *>(arg));
-+
-+    try {
-+        string const call(callXml, callXmlLen);
-+        callInfo_abyss const callInfo(abyssSessionP);
--    ServerTerminate(&this->cServer);
-+        string response;
-+
-+        registryP->processCall(call, &callInfo, &response);
-+
-+        xmlrpc_mem_block * responseMbP;
-+
-+        responseMbP = XMLRPC_MEMBLOCK_NEW(char, envP, response.length());
-+
-+        if (!envP->fault_occurred) {
-+            XMLRPC_MEMBLOCK_APPEND(char, envP, responseMbP,
-+                                   response.c_str(), response.length());
-+
-+            *responseXmlPP = responseMbP;
-+        }
-+    } catch (exception const& e) {
-+        xmlrpc_env_set_fault(envP, XMLRPC_INTERNAL_ERROR, e.what());
-+    }
- }
-+
-+
-+static void
-+setHandlers(TServer * const  serverP,
-+            string    const& uriPath,
-+            registry  const& registry) {
-+
-+    xmlrpc_server_abyss_set_handler2(
-+        serverP, uriPath.c_str(),
-+        processXmlrpcCall2,
-+        const_cast<xmlrpc_c::registry *>(&registry),
-+        registry.maxStackSize(),
-+        false);
-+
-+    xmlrpc_server_abyss_set_default_handler(serverP);
-+}
-+
-+
-+
- void
--server_abyss_set_handlers(TServer * const  srvP,
-+server_abyss_set_handlers(TServer * const  serverP,
-                           registry  const& registry,
-                           string    const& uriPath) {
--    xmlrpc_server_abyss_set_handlers2(srvP,
--                                      uriPath.c_str(),
--                                      registry.c_registry());
-+    setHandlers(serverP, uriPath, registry);
- }
- void
--server_abyss_set_handlers(TServer *        const  srvP,
-+server_abyss_set_handlers(TServer *        const  serverP,
-                           const registry * const  registryP,
-                           string           const& uriPath) {
--    xmlrpc_server_abyss_set_handlers2(srvP,
--                                      uriPath.c_str(),
--                                      registryP->c_registry());
-+    setHandlers(serverP, uriPath, *registryP);
- }
- void
--server_abyss_set_handlers(TServer *   const  srvP,
-+server_abyss_set_handlers(TServer *   const  serverP,
-                           registryPtr const  registryPtr,
-                           string      const& uriPath) {
--    xmlrpc_server_abyss_set_handlers2(srvP,
--                                      uriPath.c_str(),
--                                      registryPtr->c_registry());
-+    setHandlers(serverP, uriPath, *registryPtr.get());
- }
-diff --git a/libs/xmlrpc-c/src/cpp/server_cgi.cpp b/libs/xmlrpc-c/src/cpp/server_cgi.cpp
-new file mode 100644
-index 0000000..41e5848
---- /dev/null
-+++ b/libs/xmlrpc-c/src/cpp/server_cgi.cpp
-@@ -0,0 +1,354 @@
-+/*=============================================================================
-+                               server_cgi
-+===============================================================================
-+
-+   This is the definition of the xmlrpc_c::server_cgi class.  An object of
-+   this class is the guts of a CGI-based XML-RPC server.  It runs inside
-+   a CGI script and gets the XML-RPC call from and delivers the XML-RPC
-+   response to the CGI environment.
-+
-+   By Bryan Henderson 08.09.17.
-+
-+   Contributed to the public domain by its author.
-+=============================================================================*/
-+
-+#include "xmlrpc_config.h"
-+#if MSVCRT
-+#ifndef _CRT_SECURE_NO_WARNINGS
-+#define _CRT_SECURE_NO_WARNINGS
-+#endif
-+#include <io.h>
-+#include <fcntl.h>
-+#endif
-+#include <cstdlib>  // for getenv
-+#include <memory>
-+#include <stdio.h>
-+
-+#include "xmlrpc-c/girerr.hpp"
-+using girerr::throwf;
-+#include "xmlrpc-c/server_cgi.hpp"
-+
-+using namespace std;
-+
-+
-+
-+namespace {
-+
-+class httpInfo {
-+
-+public:
-+    string requestMethod;
-+    bool contentTypePresent;
-+    string contentType;
-+    unsigned int contentLength;
-+    bool contentLengthPresent;
-+    bool authCookiePresent;
-+    string authCookie;
-+
-+    httpInfo() {
-+
-+        const char * const requestMethodC = getenv("REQUEST_METHOD");
-+        const char * const contentTypeC   = getenv("CONTENT_TYPE");
-+        const char * const contentLengthC = getenv("CONTENT_LENGTH");
-+        const char * const authCookieC    = getenv("HTTP_COOKIE_AUTH");
-+
-+        if (requestMethodC)
-+            this->requestMethod = string(requestMethodC);
-+        else
-+            throwf("Invalid CGI environment; environment variable "
-+                   "REQUEST_METHOD is not set");
-+
-+        if (contentTypeC) {
-+            this->contentTypePresent = true;
-+            this->contentType = string(contentTypeC);
-+        } else
-+            this->contentTypePresent = false;
-+
-+        if (contentLengthC) {
-+            this->contentLengthPresent = true;
-+
-+            int const lengthAtoi(atoi(string(contentLengthC).c_str()));
-+
-+            if (lengthAtoi < 0)
-+                throwf("Content-length HTTP header value is negative");
-+            else if (lengthAtoi == 0)
-+                throwf("Content-length HTTP header value is zero");
-+            else
-+                this->contentLength = lengthAtoi;
-+        } else
-+            this->contentLengthPresent = false;
-+
-+        if (authCookieC) {
-+            this->authCookie = string(authCookieC);
-+            this->authCookiePresent = true;
-+        } else
-+            this->authCookiePresent = false;
-+    }
-+};
-+
-+
-+
-+class httpError {
-+
-+public:
-+
-+    int const code;
-+    string const msg;
-+    
-+    httpError(int    const code,
-+              string const& msg) :
-+        code(code), msg(msg) {}
-+};
-+
-+
-+} // namespace
-+
-+
-+
-+namespace xmlrpc_c {
-+
-+struct serverCgi_impl {
-+    // 'registryP' is what we actually use; 'registryHolder' just holds a
-+    // reference to 'registryP' so the registry doesn't disappear while
-+    // this server exists.  But note that if the creator doesn't supply
-+    // a registryPtr, 'registryHolder' is just a placeholder variable and
-+    // the creator is responsible for making sure the registry doesn't
-+    // go anywhere while the server exists.
-+
-+    registryPtr registryHolder;
-+    const registry * registryP;
-+
-+    serverCgi_impl(serverCgi::constrOpt const& opt);
-+
-+    void
-+    establishRegistry(serverCgi::constrOpt const& opt);
-+
-+    void
-+    tryToProcessCall();
-+};
-+
-+
-+
-+
-+void
-+serverCgi_impl::establishRegistry(serverCgi::constrOpt const& opt) {
-+
-+    if (!opt.present.registryP && !opt.present.registryPtr)
-+        throwf("You must specify the 'registryP' or 'registryPtr' option");
-+    else if (opt.present.registryP && opt.present.registryPtr)
-+        throwf("You may not specify both the 'registryP' and "
-+               "the 'registryPtr' options");
-+    else {
-+        if (opt.present.registryP)
-+            this->registryP      = opt.value.registryP;
-+        else {
-+            this->registryHolder = opt.value.registryPtr;
-+            this->registryP      = opt.value.registryPtr.get();
-+        }
-+    }
-+}
-+
-+
-+
-+serverCgi_impl::serverCgi_impl(serverCgi::constrOpt const& opt) {
-+    this->establishRegistry(opt);
-+}
-+
-+
-+
-+serverCgi::constrOpt::constrOpt() {
-+
-+    present.registryP   = false;
-+    present.registryPtr = false;
-+}
-+
-+
-+
-+#define DEFINE_OPTION_SETTER(OPTION_NAME, TYPE) \
-+serverCgi::constrOpt & \
-+serverCgi::constrOpt::OPTION_NAME(TYPE const& arg) { \
-+    this->value.OPTION_NAME = arg; \
-+    this->present.OPTION_NAME = true; \
-+    return *this; \
-+}
-+
-+DEFINE_OPTION_SETTER(registryP,   const registry *);
-+DEFINE_OPTION_SETTER(registryPtr, xmlrpc_c::registryPtr);
-+
-+#undef DEFINE_OPTION_SETTER
-+
-+
-+
-+serverCgi::serverCgi(constrOpt const& opt) {
-+
-+    this->implP = new serverCgi_impl(opt);
-+}
-+
-+
-+
-+serverCgi::~serverCgi() {
-+
-+    delete(this->implP);
-+}
-+
-+
-+
-+#if MSVCRT
-+#define FILEVAR fileP
-+#else
-+#define FILEVAR
-+#endif
-+
-+static void
-+setModeBinary(FILE * const FILEVAR) {
-+
-+#if MSVCRT 
-+    /* Fix from Jeff Stewart: NT opens stdin and stdout in text mode
-+       by default, badly confusing our length calculations.  So we need
-+       to set the file handle to binary. 
-+    */
-+    _setmode(_fileno(FILEVAR), _O_BINARY); 
-+#endif 
-+}
-+
-+
-+
-+static string
-+getHttpBody(FILE * const fileP,
-+            size_t const length) {
-+
-+    setModeBinary(fileP);
-+    char * const buffer(new char[length]);
-+    auto_ptr<char> p(buffer);  // To make it go away when we leave
-+
-+    size_t count;
-+
-+    count = fread(buffer, sizeof(buffer[0]), length, fileP);
-+    if (count < length)
-+        throwf("Expected %lu bytes, received %lu",
-+               (unsigned long) length, (unsigned long) count);
-+
-+    return string(buffer, length);
-+}
-+
-+
-+
-+static void 
-+writeNormalHttpResp(FILE * const  fileP,
-+                    bool   const  sendCookie,
-+                    string const& authCookie,
-+                    string const& httpBody) {
-+
-+    setModeBinary(fileP);
-+
-+    // HTTP headers
-+
-+    fprintf(fileP, "Status: 200 OK\n");
-+
-+    if (sendCookie)
-+        fprintf(fileP, "Set-Cookie: auth=%s\n", authCookie.c_str());
-+
-+    fprintf(fileP, "Content-type: text/xml; charset=\"utf-8\"\n");
-+    fprintf(fileP, "Content-length: %u\n", (unsigned)httpBody.size());
-+    fprintf(fileP, "\n");
-+
-+    // HTTP body
-+
-+    fwrite(httpBody.c_str(), sizeof(char), httpBody.size(), fileP);
-+}
-+
-+
-+
-+void
-+processCall2(const registry * const  registryP,
-+             FILE *           const  callFileP,
-+             unsigned int     const  callSize,
-+             bool             const  sendCookie,
-+             string           const& authCookie,
-+             FILE *           const  respFileP) {
-+
-+    if (callSize > xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID))
-+        throw(xmlrpc_c::fault(string("XML-RPC call is too large"),
-+                              fault::CODE_LIMIT_EXCEEDED));
-+    else {
-+        string const callXml(getHttpBody(callFileP, callSize));
-+
-+        string responseXml;
-+
-+        try {
-+            registryP->processCall(callXml, &responseXml);
-+        } catch (exception const& e) {
-+            throw(httpError(500, e.what()));
-+        }
-+        
-+        writeNormalHttpResp(respFileP, sendCookie, authCookie, responseXml);
-+    }
-+}
-+
-+
-+
-+
-+static void
-+sendHttpErrorResp(FILE *    const  fileP,
-+                  httpError const& e) {
-+
-+    setModeBinary(fileP);
-+
-+    // HTTP headers
-+
-+    fprintf(fileP, "Status: %d %s\n", e.code, e.msg.c_str());
-+    fprintf(fileP, "Content-type: text/html\n");
-+    fprintf(fileP, "\n");
-+    
-+    // HTTP body: HTML error message
-+
-+    fprintf(fileP, "<title>%d %s</title>\n", e.code, e.msg.c_str());
-+    fprintf(fileP, "<h1>%d %s</h1>\n", e.code, e.msg.c_str());
-+    fprintf(fileP, "<p>The Xmlrpc-c CGI server was unable to process "
-+            "your request.  It could not process it even enough to generate "
-+            "an XML-RPC fault response.</p>\n");
-+}
-+
-+
-+
-+void
-+serverCgi_impl::tryToProcessCall() {
-+
-+    httpInfo httpInfo;
-+
-+    if (httpInfo.requestMethod != string("POST"))
-+        throw(httpError(405, "Method must be POST"));
-+
-+    if (!httpInfo.contentTypePresent)
-+        throw(httpError(400, "Must have content-type header"));
-+
-+    if (httpInfo.contentType != string("text/xml"))
-+        throw(httpError(400, string("ContentType must be 'text/xml', not '") +
-+                        httpInfo.contentType + string("'")));
-+    
-+    if (!httpInfo.contentLengthPresent)
-+        throw(httpError(411, "Content-length required"));
-+              
-+    processCall2(this->registryP, stdin, httpInfo.contentLength,
-+                 httpInfo.authCookiePresent, httpInfo.authCookie, stdout);
-+}
-+
-+
-+
-+void
-+serverCgi::processCall() {
-+/*----------------------------------------------------------------------------
-+  Get the XML-RPC call from Standard Input and environment variables,
-+  parse it, find the right method, call it, prepare an XML-RPC
-+  response with the result, and write it to Standard Output.
-+-----------------------------------------------------------------------------*/
-+    try {
-+        this->implP->tryToProcessCall();
-+    } catch (httpError const e) {
-+        sendHttpErrorResp(stdout, e);
-+    }
-+}
-+
-+
-+
-+} // namespace
-diff --git a/libs/xmlrpc-c/src/cpp/server_pstream.cpp b/libs/xmlrpc-c/src/cpp/server_pstream.cpp
-index 86f2cc9..a1b19f8 100644
---- a/libs/xmlrpc-c/src/cpp/server_pstream.cpp
-+++ b/libs/xmlrpc-c/src/cpp/server_pstream.cpp
-@@ -9,24 +9,27 @@
-    is an Xmlrpc-c invention.  It is an almost trivial representation of
-    a sequence of packets on a byte stream.
--   You can create a pstream server from any file descriptor from which
--   you can read and write a bidirectional character stream.  Typically,
--   it's a TCP socket.  Such a server talks to one client its entire life.
--
--   Some day, we'll also have a version that you create from a "listening"
--   socket, which can talk to multiple clients serially (a client connects,
--   does some RPCs, and disconnects).
--
--   By Bryan Henderson 07.05.12.
-+   By Bryan Henderson 09.03.22
-    Contributed to the public domain by its author.
- =============================================================================*/
-+#include "xmlrpc_config.h"
-+#if MSVCRT
-+#ifndef _CRT_SECURE_NO_WARNINGS
-+#define _CRT_SECURE_NO_WARNINGS
-+#endif
-+#include <winsock.h>
-+typedef int socklen_t;
-+#else
-+#include <sys/socket.h>
-+#endif
-+#include <errno.h>
-+#include <cstring>
- #include <memory>
- #include "xmlrpc-c/girerr.hpp"
- using girerr::throwf;
--#include "xmlrpc-c/packetsocket.hpp"
- #include "xmlrpc-c/server_pstream.hpp"
-@@ -35,20 +38,52 @@ using namespace std;
- namespace xmlrpc_c {
--serverPstreamConn::constrOpt::constrOpt() {
-+struct serverPstream::constrOpt_impl {
-+
-+    constrOpt_impl();
-+
-+    struct value {
-+        xmlrpc_c::registryPtr      registryPtr;
-+        const xmlrpc_c::registry * registryP;
-+        XMLRPC_SOCKET              socketFd;
-+    } value;
-+    struct {
-+        bool registryPtr;
-+        bool registryP;
-+        bool socketFd;
-+    } present;
-+};
-+
-+
-+
-+serverPstream::constrOpt_impl::constrOpt_impl() {
-+
-+    this->present.socketFd    = false;
-+    this->present.registryP   = false;
-+    this->present.registryPtr = false;
-+}
-+
-+
-+
-+serverPstream::constrOpt::constrOpt() {
--    present.socketFd    = false;
--    present.registryP   = false;
--    present.registryPtr = false;
-+    this->implP = new serverPstream::constrOpt_impl();
-+}
-+
-+
-+
-+serverPstream::constrOpt::~constrOpt() {
-+
-+    delete(this->implP);
- }
- #define DEFINE_OPTION_SETTER(OPTION_NAME, TYPE) \
--serverPstreamConn::constrOpt & \
--serverPstreamConn::constrOpt::OPTION_NAME(TYPE const& arg) { \
--    this->value.OPTION_NAME = arg; \
--    this->present.OPTION_NAME = true; \
-+serverPstream::constrOpt & \
-+serverPstream::constrOpt::OPTION_NAME(TYPE const& arg) { \
-+    this->implP->value.OPTION_NAME = arg; \
-+    this->implP->present.OPTION_NAME = true; \
-     return *this; \
- }
-@@ -60,8 +95,63 @@ DEFINE_OPTION_SETTER(registryPtr, xmlrpc_c::registryPtr);
-+struct serverPstream_impl {
-+
-+    serverPstream_impl(serverPstream::constrOpt_impl const& opt);
-+
-+    ~serverPstream_impl();
-+
-+    void
-+    establishRegistry(serverPstream::constrOpt_impl const& opt);
-+
-+    // 'registryP' is what we actually use; 'registryHolder' just holds a
-+    // reference to 'registryP' so the registry doesn't disappear while
-+    // this server exists.  But note that if the creator doesn't supply
-+    // a registryPtr, 'registryHolder' is just a placeholder variable and
-+    // the creator is responsible for making sure the registry doesn't
-+    // go anywhere while the server exists.
-+
-+    registryPtr registryHolder;
-+    const registry * registryP;
-+
-+    XMLRPC_SOCKET listenSocketFd;
-+        // The socket on which we accept connections from clients.  This comes
-+        // to us from the creator, already bound and in listen mode.  That
-+        // way, this object doesn't have to know anything about socket
-+        // addresses or listen parameters such as the maximum connection
-+        // backlog size.
-+    
-+    bool termRequested;
-+        // User has requested that the run method return ASAP; i.e. that
-+        // the server cease servicing RPCs.
-+};
-+
-+
-+
-+serverPstream_impl::serverPstream_impl(
-+    serverPstream::constrOpt_impl const& opt) {
-+
-+    this->establishRegistry(opt);
-+
-+    if (!opt.present.socketFd)
-+        throwf("You must provide a 'socketFd' constructor option.");
-+    
-+    this->listenSocketFd = opt.value.socketFd;
-+
-+    this->termRequested = false;
-+}
-+
-+
-+
-+serverPstream_impl::~serverPstream_impl() {
-+
-+}
-+
-+
-+
- void
--serverPstreamConn::establishRegistry(constrOpt const& opt) {
-+serverPstream_impl::establishRegistry(
-+    serverPstream::constrOpt_impl const& opt) {
-     if (!opt.present.registryP && !opt.present.registryPtr)
-         throwf("You must specify the 'registryP' or 'registryPtr' option");
-@@ -79,109 +169,110 @@ serverPstreamConn::establishRegistry(constrOpt const& opt) {
- }
-+/*-----------------------------------------------------------------------------
-+   serverPstream::shutdown is a derived class of registry::shutdown.  You give
-+   it to the registry object to allow XML-RPC method 'system.shutdown' to
-+-----------------------------------------------------------------------------*/
--void
--serverPstreamConn::establishPacketSocket(constrOpt const& opt) {
-+serverPstream::shutdown::shutdown(serverPstream * const serverPstreamP) :
-+    serverPstreamP(serverPstreamP) {}
--    if (!opt.present.socketFd)
--        throwf("You must provide a 'socketFd' constructor option.");
--
--    auto_ptr<packetSocket> packetSocketAP;
--    try {
--        auto_ptr<packetSocket> p(new packetSocket(opt.value.socketFd));
--        packetSocketAP = p;
--    } catch (exception const& e) {
--        throwf("Unable to create packet socket out of file descriptor %d.  %s",
--               opt.value.socketFd, e.what());
--    }
--    this->packetSocketP = packetSocketAP.get();
--    packetSocketAP.release();
--}
-+serverPstream::shutdown::~shutdown() {}
--serverPstreamConn::serverPstreamConn(constrOpt const& opt) {
--    this->establishRegistry(opt);
-+void
-+serverPstream::shutdown::doit(string const&,
-+                              void * const) const {
--    this->establishPacketSocket(opt);
-+    this->serverPstreamP->terminate();
- }
-+/*---------------------------------------------------------------------------*/
--serverPstreamConn::~serverPstreamConn() {
-+serverPstream::serverPstream(constrOpt const& opt) {
--    delete(this->packetSocketP);
-+    this->implP = new serverPstream_impl(*opt.implP);
- }
--void
--processCall(const registry * const  registryP,
--            packetPtr        const& callPacketP,
--            packetPtr *      const  responsePacketPP) {
-+serverPstream::~serverPstream() {
--    string const callXml(reinterpret_cast<char *>(callPacketP->getBytes()),
--                         callPacketP->getLength());
-+    delete(this->implP);
-+}
--    string responseXml;
--    registryP->processCall(callXml, &responseXml);
--    *responsePacketPP = packetPtr(new packet(responseXml.c_str(),
--                                             responseXml.length()));
-+void
-+serverPstream::runSerial(volatile const int * const interruptP) {
-+
-+    while (!this->implP->termRequested && !*interruptP) {
-+        struct sockaddr peerAddr;
-+        socklen_t size = sizeof(peerAddr);
-+        int rc;
-+
-+        rc = accept(this->implP->listenSocketFd, &peerAddr, &size);
-+
-+        if (!*interruptP) {
-+            if (rc < 0)
-+                if (errno == EINTR) {
-+                    // system call was interrupted, but user doesn't want
-+                    // to interrupt the server, so just keep trying
-+                } else
-+                    throwf("Failed to accept a connection "
-+                           "on the listening socket.  accept() failed "
-+                           "with errno %d (%s)", errno, strerror(errno));
-+            else {
-+                int const acceptedFd = rc;
-+
-+                serverPstreamConn connectionServer(
-+                    xmlrpc_c::serverPstreamConn::constrOpt()
-+                    .socketFd(acceptedFd)
-+                    .registryP(this->implP->registryP));
-+
-+                callInfo_serverPstream callInfo(this, peerAddr, size);
-+
-+                connectionServer.run(&callInfo, interruptP);
-+            }
-+        }
-+    }
- }
- void
--serverPstreamConn::runOnce(volatile const int * const interruptP,
--                           bool *               const eofP) {
--/*----------------------------------------------------------------------------
--   Get and execute one RPC from the client.
-+serverPstream::runSerial() {
--   Unless *interruptP gets set nonzero first.
-------------------------------------------------------------------------------*/
--    bool gotPacket;
--    packetPtr callPacketP;
--
--    try {
--        this->packetSocketP->readWait(interruptP, eofP, &gotPacket,
--                                      &callPacketP);
--    } catch (exception const& e) {
--        throwf("Error reading a packet from the packet socket.  %s",
--               e.what());
--    }
--    if (gotPacket) {
--        packetPtr responsePacketP;
--        try {
--            processCall(this->registryP, callPacketP, &responsePacketP);
--        } catch (exception const& e) {
--            throwf("Error executing received packet as an XML-RPC RPC.  %s",
--                   e.what());
--        }
--        try {
--            this->packetSocketP->writeWait(responsePacketP);
--        } catch (exception const& e) {
--            throwf("Failed to write the response to the packet socket.  %s",
--                   e.what());
--        }
--    }
-+    int const interrupt(0);  // Never interrupt
-+
-+    this->runSerial(&interrupt);
- }
- void
--serverPstreamConn::runOnce(bool * const eofP) {
--/*----------------------------------------------------------------------------
--   Get and execute one RPC from the client.
-------------------------------------------------------------------------------*/
--    int const interrupt(0);  // Never interrupt
-+serverPstream::terminate() {
--    this->runOnce(&interrupt, eofP);
-+    this->implP->termRequested = true;
- }
-+callInfo_serverPstream::callInfo_serverPstream(
-+    serverPstream * const serverP,
-+    struct sockaddr const clientAddr,
-+    socklen_t const clientAddrSize) :
-+
-+    serverP(serverP),
-+    clientAddr(clientAddr),
-+    clientAddrSize(clientAddrSize)
-+
-+{}
-+
-+
-+
- } // namespace
-diff --git a/libs/xmlrpc-c/src/cpp/server_pstream_conn.cpp b/libs/xmlrpc-c/src/cpp/server_pstream_conn.cpp
-new file mode 100644
-index 0000000..3598164
---- /dev/null
-+++ b/libs/xmlrpc-c/src/cpp/server_pstream_conn.cpp
-@@ -0,0 +1,364 @@
-+/*=============================================================================
-+                              server_pstream
-+===============================================================================
-+
-+   RPC server based on a very simple byte stream and XML-RPC XML
-+   (But this is not an XML-RPC server because it doesn't use HTTP).
-+   
-+   The protocol we use is the "packet socket" protocol, which
-+   is an Xmlrpc-c invention.  It is an almost trivial representation of
-+   a sequence of packets on a byte stream.
-+
-+   You can create a pstream server from any file descriptor from which
-+   you can read and write a bidirectional character stream.  Typically,
-+   it's a TCP socket.  Such a server talks to one client its entire life.
-+
-+   Some day, we'll also have a version that you create from a "listening"
-+   socket, which can talk to multiple clients serially (a client connects,
-+   does some RPCs, and disconnects).
-+
-+   By Bryan Henderson 07.05.12.
-+
-+   Contributed to the public domain by its author.
-+=============================================================================*/
-+
-+#include <memory>
-+
-+#include "xmlrpc-c/girerr.hpp"
-+using girerr::throwf;
-+#include "xmlrpc-c/packetsocket.hpp"
-+
-+#include "xmlrpc-c/server_pstream.hpp"
-+
-+using namespace std;
-+
-+namespace xmlrpc_c {
-+
-+
-+struct serverPstreamConn::constrOpt_impl {
-+
-+    constrOpt_impl();
-+
-+    struct value {
-+        xmlrpc_c::registryPtr      registryPtr;
-+        const xmlrpc_c::registry * registryP;
-+        XMLRPC_SOCKET              socketFd;
-+    } value;
-+    struct {
-+        bool registryPtr;
-+        bool registryP;
-+        bool socketFd;
-+    } present;
-+};
-+
-+
-+
-+serverPstreamConn::constrOpt_impl::constrOpt_impl() {
-+
-+    this->present.socketFd    = false;
-+    this->present.registryP   = false;
-+    this->present.registryPtr = false;
-+}
-+
-+
-+
-+serverPstreamConn::constrOpt::constrOpt() {
-+
-+    this->implP = new constrOpt_impl();
-+}
-+
-+
-+
-+serverPstreamConn::constrOpt::~constrOpt() {
-+
-+    delete(this->implP);
-+}
-+
-+
-+
-+#define DEFINE_OPTION_SETTER(OPTION_NAME, TYPE) \
-+serverPstreamConn::constrOpt & \
-+serverPstreamConn::constrOpt::OPTION_NAME(TYPE const& arg) { \
-+    this->implP->value.OPTION_NAME = arg; \
-+    this->implP->present.OPTION_NAME = true; \
-+    return *this; \
-+}
-+
-+DEFINE_OPTION_SETTER(socketFd,    XMLRPC_SOCKET);
-+DEFINE_OPTION_SETTER(registryP,   const registry *);
-+DEFINE_OPTION_SETTER(registryPtr, xmlrpc_c::registryPtr);
-+
-+#undef DEFINE_OPTION_SETTER
-+
-+
-+
-+struct serverPstreamConn_impl {
-+
-+    serverPstreamConn_impl(serverPstreamConn::constrOpt_impl const& opt);
-+
-+    ~serverPstreamConn_impl();
-+
-+    void
-+    establishRegistry(serverPstreamConn::constrOpt_impl const& opt);
-+
-+    void
-+    establishPacketSocket(serverPstreamConn::constrOpt_impl const& opt);
-+    
-+    void
-+    processRecdPacket(packetPtr  const callPacketP,
-+                      callInfo * const callInfoP);
-+
-+    // 'registryP' is what we actually use; 'registryHolder' just holds a
-+    // reference to 'registryP' so the registry doesn't disappear while
-+    // this server exists.  But note that if the creator doesn't supply
-+    // a registryPtr, 'registryHolder' is just a placeholder variable and
-+    // the creator is responsible for making sure the registry doesn't
-+    // go anywhere while the server exists.
-+
-+    registryPtr registryHolder;
-+    const registry * registryP;
-+
-+    packetSocket * packetSocketP;
-+        // The packet socket over which we received RPCs.
-+        // This is permanently connected to our fixed client.
-+};
-+
-+
-+
-+serverPstreamConn_impl::serverPstreamConn_impl(
-+    serverPstreamConn::constrOpt_impl const& opt) {
-+
-+    this->establishRegistry(opt);
-+
-+    this->establishPacketSocket(opt);
-+}
-+
-+
-+
-+serverPstreamConn_impl::~serverPstreamConn_impl() {
-+
-+    delete(this->packetSocketP);
-+}
-+
-+
-+
-+void
-+serverPstreamConn_impl::establishRegistry(
-+    serverPstreamConn::constrOpt_impl const& opt) {
-+
-+    if (!opt.present.registryP && !opt.present.registryPtr)
-+        throwf("You must specify the 'registryP' or 'registryPtr' option");
-+    else if (opt.present.registryP && opt.present.registryPtr)
-+        throwf("You may not specify both the 'registryP' and "
-+               "the 'registryPtr' options");
-+    else {
-+        if (opt.present.registryP)
-+            this->registryP      = opt.value.registryP;
-+        else {
-+            this->registryHolder = opt.value.registryPtr;
-+            this->registryP      = opt.value.registryPtr.get();
-+        }
-+    }
-+}
-+
-+
-+
-+void
-+serverPstreamConn_impl::establishPacketSocket(
-+    serverPstreamConn::constrOpt_impl const& opt) {
-+
-+    if (!opt.present.socketFd)
-+        throwf("You must provide a 'socketFd' constructor option.");
-+
-+    auto_ptr<packetSocket> packetSocketAP;
-+
-+    try {
-+        auto_ptr<packetSocket> p(new packetSocket(opt.value.socketFd));
-+        packetSocketAP = p;
-+    } catch (exception const& e) {
-+        throwf("Unable to create packet socket out of file descriptor %d.  %s",
-+               opt.value.socketFd, e.what());
-+    }
-+    this->packetSocketP = packetSocketAP.get();
-+    packetSocketAP.release();
-+}
-+
-+
-+
-+serverPstreamConn::serverPstreamConn(constrOpt const& opt) {
-+
-+    this->implP = new serverPstreamConn_impl(*opt.implP);
-+}
-+
-+
-+
-+serverPstreamConn::~serverPstreamConn() {
-+
-+    delete(this->implP);
-+}
-+
-+
-+
-+static void
-+processCall(const registry * const  registryP,
-+            packetPtr        const& callPacketP,
-+            callInfo *       const  callInfoP,
-+            packetPtr *      const  responsePacketPP) {
-+
-+    string const callXml(reinterpret_cast<char *>(callPacketP->getBytes()),
-+                         callPacketP->getLength());
-+
-+    string responseXml;
-+
-+    registryP->processCall(callXml, callInfoP, &responseXml);
-+
-+    *responsePacketPP = packetPtr(new packet(responseXml.c_str(),
-+                                             responseXml.length()));
-+}
-+
-+
-+
-+void
-+serverPstreamConn_impl::processRecdPacket(packetPtr  const callPacketP,
-+                                          callInfo * const callInfoP) {
-+    
-+    packetPtr responsePacketP;
-+    try {
-+        processCall(this->registryP, callPacketP, callInfoP, &responsePacketP);
-+    } catch (exception const& e) {
-+        throwf("Error executing received packet as an XML-RPC RPC.  %s",
-+               e.what());
-+    }
-+    try {
-+        this->packetSocketP->writeWait(responsePacketP);
-+    } catch (exception const& e) {
-+        throwf("Failed to write the response to the packet socket.  %s",
-+               e.what());
-+    }
-+}
-+
-+
-+
-+void
-+serverPstreamConn::runOnce(callInfo *           const callInfoP,
-+                           volatile const int * const interruptP,
-+                           bool *               const eofP) {
-+/*----------------------------------------------------------------------------
-+   Get and execute one RPC from the client.
-+
-+   Unless *interruptP gets set nonzero first.
-+-----------------------------------------------------------------------------*/
-+    bool gotPacket;
-+    packetPtr callPacketP;
-+
-+    try {
-+        this->implP->packetSocketP->readWait(interruptP, eofP, &gotPacket,
-+                                             &callPacketP);
-+    } catch (exception const& e) {
-+        throwf("Error reading a packet from the packet socket.  %s",
-+               e.what());
-+    }
-+    if (gotPacket)
-+        this->implP->processRecdPacket(callPacketP, callInfoP);
-+}
-+
-+
-+
-+void
-+serverPstreamConn::runOnce(volatile const int * const interruptP,
-+                           bool *               const eofP) {
-+
-+    this->runOnce(NULL, interruptP, eofP);
-+}
-+
-+
-+
-+void
-+serverPstreamConn::runOnce(bool * const eofP) {
-+/*----------------------------------------------------------------------------
-+   Get and execute one RPC from the client.
-+-----------------------------------------------------------------------------*/
-+    int const interrupt(0);  // Never interrupt
-+
-+    this->runOnce(&interrupt, eofP);
-+}
-+
-+
-+
-+void
-+serverPstreamConn::runOnceNoWait(callInfo * const callInfoP,
-+                                 bool *     const eofP,
-+                                 bool *     const didOneP) {
-+/*----------------------------------------------------------------------------
-+   Get and execute one RPC from the client, unless none has been
-+   received yet.  Return as *didOneP whether or not one has been
-+   received.  Unless didOneP is NULL.
-+-----------------------------------------------------------------------------*/
-+    bool gotPacket;
-+    packetPtr callPacketP;
-+
-+    try {
-+        this->implP->packetSocketP->read(eofP, &gotPacket, &callPacketP);
-+    } catch (exception const& e) {
-+        throwf("Error reading a packet from the packet socket.  %s",
-+               e.what());
-+    }
-+    if (gotPacket)
-+        this->implP->processRecdPacket(callPacketP, callInfoP);
-+
-+    if (didOneP)
-+        *didOneP = gotPacket;
-+}
-+
-+
-+
-+void
-+serverPstreamConn::runOnceNoWait(bool * const eofP,
-+                                 bool * const didOneP) {
-+
-+    this->runOnceNoWait(NULL, eofP, didOneP);
-+}
-+
-+
-+
-+void
-+serverPstreamConn::runOnceNoWait(bool * const eofP) {
-+/*----------------------------------------------------------------------------
-+   Get and execute one RPC from the client, unless none has been
-+   received yet.
-+-----------------------------------------------------------------------------*/
-+    this->runOnceNoWait(eofP, NULL);
-+}
-+
-+
-+
-+void
-+serverPstreamConn::run(callInfo *           const callInfoP,
-+                       volatile const int * const interruptP) {
-+
-+    for (bool clientHasDisconnected = false;
-+         !clientHasDisconnected && !*interruptP;)
-+        this->runOnce(callInfoP, interruptP, &clientHasDisconnected);
-+}
-+
-+
-+
-+void
-+serverPstreamConn::run(volatile const int * const interruptP) {
-+
-+    this->run(NULL, interruptP);
-+}
-+
-+
-+
-+void
-+serverPstreamConn::run() {
-+
-+    int const interrupt(0);  // Never interrupt
-+
-+    this->run(&interrupt);
-+}
-+
-+
-+
-+} // namespace
-diff --git a/libs/xmlrpc-c/src/cpp/test/Makefile b/libs/xmlrpc-c/src/cpp/test/Makefile
-index ff6750f..ccde8f5 100644
---- a/libs/xmlrpc-c/src/cpp/test/Makefile
-+++ b/libs/xmlrpc-c/src/cpp/test/Makefile
-@@ -17,20 +17,16 @@ all: $(PROGS)
- XMLRPC_C_CONFIG = $(BLDDIR)/xmlrpc-c-config.test
--CXXFLAGS = $(CXXFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
--
--LDFLAGS += $(shell $(XMLRPC_C_CONFIG) client --ldadd)
-+LIBS := $(shell $(XMLRPC_C_CONFIG) client --ldadd)
- ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
--  LDFLAGS += $(shell curl-config --libs)
-+  LIBS += $(shell curl-config --libs)
- endif
- ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
--  LDFLAGS += $(shell libwww-config --libs)
-+  LIBS += $(shell libwww-config --libs)
- endif
--LDFLAGS += "-lpthread"
--
--LDFLAGS += $(LADD)
-+LIBS += -lpthread
- INCLUDES = -Isrcdir/include -I$(BLDDIR) -Isrcdir -Isrcdir/lib/util/include
-@@ -42,7 +38,15 @@ Makefile: srcdir
- include $(SRCDIR)/common.mk
--TEST_OBJS = test.o registry.o server_abyss.o server_pstream.o tools.o
-+TEST_OBJS = \
-+  test.o \
-+  base64.o \
-+  registry.o \
-+  server_abyss.o \
-+  server_pstream.o \
-+  tools.o \
-+  value.o \
-+  xml.o \
- ifeq ($(MUST_BUILD_CLIENT),yes)
-   TEST_OBJS += testclient.o
-@@ -69,16 +73,17 @@ TEST_LIBS = \
- ifneq ($(ENABLE_LIBXML2_BACKEND),yes)
-   # We're using the internal Expat XML parser
-   TEST_LIBS += $(LIBXMLRPC_XMLPARSE_A) $(LIBXMLRPC_XMLTOK_A)
--  LDADD_XML =
-+  LIB_XML =
-+  registry.o: D_INTERNAL_EXPAT=-DINTERNAL_EXPAT
- else
--  LDADD_XML = $(shell xml2-config --libs)
-+  LIB_XML = $(shell xml2-config --libs)
- endif
- test: $(TEST_OBJS) $(TEST_LIBS)
--      $(CXXLD) -o $@ $(LDFLAGS) $(LDADD_XML) $^
-+      $(CXXLD) -o $@ $(LDFLAGS) $(LADD) $^ $(LIB_XML) $(LIBS)
- %.o:%.cpp
--      $(CXX) -c $(INCLUDES) $(CXXFLAGS) $<
-+      $(CXX) -c $(INCLUDES) $(CXXFLAGS_ALL) $(D_INTERNAL_EXPAT) $<
- # Note the difference between 'check' and 'runtests'.  'check' means to check
- # our own correctness.  'runtests' means to run the tests that check our
-@@ -104,4 +109,4 @@ distclean: clean distclean-common
- .PHONY: dep
- dep: dep-common
--include Makefile.depend
-+include depend.mk
-diff --git a/libs/xmlrpc-c/src/cpp/test/base64.cpp b/libs/xmlrpc-c/src/cpp/test/base64.cpp
-new file mode 100644
-index 0000000..17e4e78
---- /dev/null
-+++ b/libs/xmlrpc-c/src/cpp/test/base64.cpp
-@@ -0,0 +1,54 @@
-+#include <string>
-+#include <iostream>
-+#include <vector>
-+
-+#include "xmlrpc-c/girerr.hpp"
-+using girerr::error;
-+#include "xmlrpc-c/base64.hpp"
-+
-+#include "tools.hpp"
-+
-+#include "base64.hpp"
-+
-+using namespace xmlrpc_c;
-+using namespace std;
-+
-+
-+
-+string
-+base64TestSuite::suiteName() {
-+    return "base64TestSuite";
-+}
-+
-+
-+
-+void
-+base64TestSuite::runtests(unsigned int const) {
-+
-+    unsigned char const bytes0Data[] = "This is a test";
-+
-+    vector<unsigned char> bytes0(&bytes0Data[0],
-+                                 &bytes0Data[sizeof(bytes0Data)]);
-+
-+    string const base64_0("VGhpcyBpcyBhIHRlc3QA");
-+
-+    string const expectedBase64_0(base64_0 + "\r\n");
-+
-+    TEST(base64FromBytes(bytes0) == expectedBase64_0);
-+
-+    TEST(bytesFromBase64(base64_0) == bytes0);
-+
-+    unsigned char const bytes1Data[] = {0x80, 0xff};
-+
-+    vector<unsigned char> bytes1(&bytes1Data[0],
-+                                 &bytes1Data[sizeof(bytes1Data)]);
-+
-+    string const base64_1("gP8=");
-+
-+    string const expectedBase64_1(base64_1 + "\r\n");
-+
-+    TEST(base64FromBytes(bytes1) == expectedBase64_1);
-+
-+    TEST(bytesFromBase64(base64_1) == bytes1);
-+
-+}
-diff --git a/libs/xmlrpc-c/src/cpp/test/base64.hpp b/libs/xmlrpc-c/src/cpp/test/base64.hpp
-new file mode 100644
-index 0000000..72ee02d
---- /dev/null
-+++ b/libs/xmlrpc-c/src/cpp/test/base64.hpp
-@@ -0,0 +1,9 @@
-+#include "tools.hpp"
-+
-+class base64TestSuite : public testSuite {
-+
-+public:
-+    virtual std::string suiteName();
-+    virtual void runtests(unsigned int const indentation);
-+};
-+
-diff --git a/libs/xmlrpc-c/src/cpp/test/registry.cpp b/libs/xmlrpc-c/src/cpp/test/registry.cpp
-index 6ca265a..c7e6e42 100644
---- a/libs/xmlrpc-c/src/cpp/test/registry.cpp
-+++ b/libs/xmlrpc-c/src/cpp/test/registry.cpp
-@@ -20,11 +20,19 @@ using namespace xmlrpc_c;
- using namespace std;
--string const xmlPrologue("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
-+namespace {
-+
-+static string const
-+xmlPrologue("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
-+
-+static string const
-+apacheUrl("http://ws.apache.org/xmlrpc/namespaces/extensions");
-+
-+static string const
-+xmlnsApache("xmlns:ex=\"" + apacheUrl + "\"");
--namespace {
- string const noElementFoundXml(
-     xmlPrologue +
-     "<methodResponse>\r\n"
-@@ -41,6 +49,22 @@ string const noElementFoundXml(
-     "</methodResponse>\r\n"
-     );
-+string const invalidXMLCall(
-+    xmlPrologue +
-+    "<methodResponse>\r\n"
-+    "<fault>\r\n"
-+    "<value><struct>\r\n"
-+    "<member><name>faultCode</name>\r\n"
-+    "<value><i4>-503</i4></value></member>\r\n"
-+    "<member><name>faultString</name>\r\n"
-+    "<value><string>Call XML not a proper XML-RPC call.  "
-+    "Call is not valid XML.  XML parsing failed</string></value>"
-+    "</member>\r\n"
-+    "</struct></value>\r\n"
-+    "</fault>\r\n"
-+    "</methodResponse>\r\n"
-+    );
-+
- string const sampleAddGoodCallXml(
-     xmlPrologue +
-     "<methodCall>\r\n"
-@@ -86,6 +110,24 @@ string const sampleAddBadResponseXml(
-     "</methodResponse>\r\n"
-     );
-+string const testCallInfoCallXml(
-+    xmlPrologue +
-+    "<methodCall>\r\n"
-+    "<methodName>test.callinfo</methodName>\r\n"
-+    "<params>\r\n"
-+    "</params>\r\n"
-+    "</methodCall>\r\n"
-+    );
-+
-+string const testCallInfoResponseXml(
-+    xmlPrologue +
-+    "<methodResponse>\r\n"
-+    "<params>\r\n"
-+    "<param><value><string>this is a test callInfo</string></value>"
-+    "</param>\r\n"
-+    "</params>\r\n"
-+    "</methodResponse>\r\n"
-+    );
- string const nonexistentMethodCallXml(
-     xmlPrologue +
-@@ -123,31 +165,30 @@ string const nonexistentMethodNoDefResponseXml(
-     "</methodResponse>\r\n"
-     );
--} // namespace
- string const echoI8ApacheCall(
-     xmlPrologue +
--    "<methodCall>\r\n"
-+    "<methodCall " + xmlnsApache + ">\r\n"
-     "<methodName>echo</methodName>\r\n"
-     "<params>\r\n"
--    "<param><value><ex.i8>5</ex.i8></value></param>\r\n"
-+    "<param><value><ex:i8>5</ex:i8></value></param>\r\n"
-     "</params>\r\n"
-     "</methodCall>\r\n"
-     );
- string const echoI8ApacheResponse(
-     xmlPrologue +
--    "<methodResponse>\r\n"
-+    "<methodResponse " + xmlnsApache + ">\r\n"
-     "<params>\r\n"
--    "<param><value><ex.i8>5</ex.i8></value></param>\r\n"
-+    "<param><value><ex:i8>5</ex:i8></value></param>\r\n"
-     "</params>\r\n"
-     "</methodResponse>\r\n"
-     );
- string const echoNilApacheCall(
-     xmlPrologue +
--    "<methodCall>\r\n"
-+    "<methodCall " + xmlnsApache + ">\r\n"
-     "<methodName>echo</methodName>\r\n"
-     "<params>\r\n"
-     "<param><value><nil/></value></param>\r\n"
-@@ -157,14 +198,26 @@ string const echoNilApacheCall(
- string const echoNilApacheResponse(
-     xmlPrologue +
--    "<methodResponse>\r\n"
-+    "<methodResponse " + xmlnsApache + ">\r\n"
-     "<params>\r\n"
--    "<param><value><ex.nil/></value></param>\r\n"
-+    "<param><value><ex:nil/></value></param>\r\n"
-     "</params>\r\n"
-     "</methodResponse>\r\n"
-     );
-+class callInfo_test : public callInfo {
-+
-+public:
-+    callInfo_test() : data("this is a test callInfo") {}
-+
-+    callInfo_test(string const& data) : data(data) {};
-+
-+    string data;
-+};
-+
-+
-+
- class sampleAddMethod : public method {
- public:
-     sampleAddMethod() {
-@@ -186,6 +239,51 @@ public:
-+class sampleAddMethod2 : public method2 {
-+public:
-+    sampleAddMethod2() {
-+        this->_signature = "i:ii";
-+        this->_help = "This method adds two integers together";
-+    }
-+    void
-+    execute(xmlrpc_c::paramList const& paramList,
-+            const callInfo *    const,
-+            value *             const  retvalP) {
-+        
-+        int const addend(paramList.getInt(0));
-+        int const adder(paramList.getInt(1));
-+        
-+        paramList.verifyEnd(2);
-+        
-+        *retvalP = value_int(addend + adder);
-+    }
-+};
-+
-+
-+
-+class testCallInfoMethod : public method2 {
-+public:
-+    testCallInfoMethod() {
-+        this->_signature = "s:";
-+    }
-+    void
-+    execute(xmlrpc_c::paramList const& paramList,
-+            const callInfo *    const  callInfoPtr,
-+            value *             const  retvalP) {
-+        
-+        const callInfo_test * const callInfoP(
-+            dynamic_cast<const callInfo_test *>(callInfoPtr));
-+
-+        TEST(callInfoP != NULL);
-+
-+        paramList.verifyEnd(0);
-+        
-+        *retvalP = value_string(callInfoP->data);
-+    }
-+};
-+
-+
-+
- class nameMethod : public defaultMethod {
-     void
-@@ -213,6 +311,22 @@ public:
-+static void
-+testEmptyXmlDocCall(xmlrpc_c::registry const& myRegistry) {
-+
-+    string response;
-+    myRegistry.processCall("", &response);
-+
-+#ifdef INTERNAL_EXPAT
-+    TEST(response == noElementFoundXml);
-+#else
-+    // This is what we get with libxml2
-+    TEST(response == invalidXMLCall);
-+#endif
-+}
-+
-+
-+
- class registryRegMethodTestSuite : public testSuite {
- public:
-@@ -227,11 +341,7 @@ public:
-                              xmlrpc_c::methodPtr(new sampleAddMethod));
-         
-         myRegistry.disableIntrospection();
--        {
--            string response;
--            myRegistry.processCall("", &response);
--            TEST(response == noElementFoundXml);
--        }
-+        testEmptyXmlDocCall(myRegistry);
-         {
-             string response;
-             myRegistry.processCall(sampleAddGoodCallXml, &response);
-@@ -242,6 +352,12 @@ public:
-             myRegistry.processCall(sampleAddBadCallXml, &response);
-             TEST(response == sampleAddBadResponseXml);
-         }
-+        {
-+            string response;
-+            callInfo const callInfo;
-+            myRegistry.processCall(sampleAddBadCallXml, &callInfo, &response);
-+            TEST(response == sampleAddBadResponseXml);
-+        }
-     }
- };
-@@ -284,6 +400,93 @@ public:
-+class method2TestSuite : public testSuite {
-+
-+public:
-+    virtual string suiteName() {
-+        return "method2TestSuite";
-+    }
-+    virtual void runtests(unsigned int const) {
-+
-+        xmlrpc_c::registry myRegistry;
-+        
-+        myRegistry.addMethod("sample.add", 
-+                             xmlrpc_c::methodPtr(new sampleAddMethod2));
-+        
-+        myRegistry.addMethod("test.callinfo", 
-+                             xmlrpc_c::methodPtr(new testCallInfoMethod));
-+        
-+        {
-+            string response;
-+            myRegistry.processCall(sampleAddGoodCallXml, &response);
-+            TEST(response == sampleAddGoodResponseXml);
-+        }
-+        {
-+            string response;
-+            myRegistry.processCall(sampleAddBadCallXml, &response);
-+            TEST(response == sampleAddBadResponseXml);
-+        }
-+        {
-+            string response;
-+            callInfo_test const callInfo;
-+            myRegistry.processCall(testCallInfoCallXml, &callInfo, &response);
-+            TEST(response == testCallInfoResponseXml);
-+        }
-+    }
-+};
-+
-+
-+
-+class dialectTestSuite : public testSuite {
-+
-+public:
-+    virtual string suiteName() {
-+        return "dialectTestSuite";
-+    }
-+    virtual void runtests(unsigned int const) {
-+
-+        registry myRegistry;
-+        string response;
-+        
-+        myRegistry.addMethod("sample.add", methodPtr(new sampleAddMethod));
-+        myRegistry.addMethod("echo", methodPtr(new echoMethod));
-+
-+        myRegistry.setDialect(xmlrpc_dialect_i8);
-+
-+        myRegistry.setDialect(xmlrpc_dialect_apache);
-+
-+        myRegistry.processCall(echoI8ApacheCall, &response);
-+
-+        TEST(response == echoI8ApacheResponse);
-+
-+        myRegistry.processCall(echoNilApacheCall, &response);
-+
-+        TEST(response == echoNilApacheResponse);
-+
-+        EXPECT_ERROR(  // invalid dialect
-+            myRegistry.setDialect(static_cast<xmlrpc_dialect>(300));
-+            );
-+    }
-+};
-+
-+
-+
-+class testShutdown : public xmlrpc_c::registry::shutdown {
-+/*----------------------------------------------------------------------------
-+   This class is logically local to
-+   registryShutdownTestSuite::runtests(), but if we declare it that
-+   way, gcc 2.95.3 fails with some bogus messages about undefined
-+   references from random functions when we do that.
-+-----------------------------------------------------------------------------*/
-+public:
-+    void doit(string const&,
-+              void * const) const {
-+        
-+    }
-+};
-+
-+
-+
- class registryShutdownTestSuite : public testSuite {
- public:
-@@ -294,15 +497,7 @@ public:
-         xmlrpc_c::registry myRegistry;
--        class myshutdown : public xmlrpc_c::registry::shutdown {
--        public:
--            void doit(string const&,
--                      void * const) const {
--                
--            }
--        };
--
--        myshutdown shutdown;
-+        testShutdown shutdown;
-         
-         myRegistry.setShutdown(&shutdown);
-     }
-@@ -310,6 +505,10 @@ public:
-+} // unnamed namespace
-+
-+
-+
- string
- registryTestSuite::suiteName() {
-     return "registryTestSuite";
-@@ -327,32 +526,19 @@ registryTestSuite::runtests(unsigned int const indentation) {
-     }
-     registryRegMethodTestSuite().run(indentation+1);
-+
-     registryDefaultMethodTestSuite().run(indentation+1);
--    registry myRegistry;
--        
--    myRegistry.addMethod("sample.add", methodPtr(new sampleAddMethod));
--    myRegistry.addMethod("echo", methodPtr(new echoMethod));
-+    method2TestSuite().run(indentation+1);
--    string response;
-+    registry myRegistry;
-     myRegistry.disableIntrospection();
--    myRegistry.setDialect(xmlrpc_dialect_i8);
--
--    myRegistry.setDialect(xmlrpc_dialect_apache);
-+    dialectTestSuite().run(indentation+1);
-     registryShutdownTestSuite().run(indentation+1);
--    myRegistry.processCall(echoI8ApacheCall, &response);
--
--    TEST(response == echoI8ApacheResponse);
--
--    myRegistry.processCall(echoNilApacheCall, &response);
--
--    TEST(response == echoNilApacheResponse);
-+    TEST(myRegistry.maxStackSize() >= 256);
--    EXPECT_ERROR(  // invalid dialect
--        myRegistry.setDialect(static_cast<xmlrpc_dialect>(300));
--        );
- }
-diff --git a/libs/xmlrpc-c/src/cpp/test/server_abyss.cpp b/libs/xmlrpc-c/src/cpp/test/server_abyss.cpp
-index 4b236ef..2b50688 100644
---- a/libs/xmlrpc-c/src/cpp/test/server_abyss.cpp
-+++ b/libs/xmlrpc-c/src/cpp/test/server_abyss.cpp
-@@ -10,6 +10,8 @@
- #include <vector>
- #include <sstream>
- #include <memory>
-+#include <cstring>
-+#include <cstdlib>
- #include <time.h>
- #ifdef WIN32
-   #include <winsock.h>
-@@ -17,6 +19,7 @@
-   #include <sys/unistd.h>
-   #include <sys/socket.h>
-   #include <arpa/inet.h>
-+  #include <netinet/in.h>
- #endif
- #include "xmlrpc-c/girerr.hpp"
-@@ -34,6 +37,9 @@ using namespace xmlrpc_c;
- using namespace std;
-+
-+namespace {
-+
- static void
- closesock(int const fd) {
- #ifdef WIN32
-@@ -75,7 +81,7 @@ public:
-         closesock(this->fd);
-     }
--    int fd;
-+    XMLRPC_SOCKET fd;
- };
-@@ -259,6 +265,10 @@ public:
-                                     .timeout(20)
-                                     .dontAdvertise(true)
-                                     .uriPath("/xmlrpc")
-+                                    .chunkResponse(true)
-+                                    .allowOrigin("*")
-+                                    .serverOwnsSignals(false)
-+                                    .expectSigchld(true)
-                 );
-     
-         }
-@@ -274,6 +284,54 @@ public:
-+class testCallInfoMethod : public method2 {
-+public:
-+    void
-+    execute(paramList        const& paramList,
-+            const callInfo * const  callInfoPtr,
-+            value *          const  retvalP) {
-+
-+        const callInfo_serverAbyss * const callInfoP(
-+            dynamic_cast<const callInfo_serverAbyss *>(callInfoPtr));
-+
-+        TEST(callInfoP != NULL);
-+        
-+        paramList.verifyEnd(0);
-+
-+        TEST(callInfoP->serverAbyssP != NULL);
-+        TEST(callInfoP->abyssSessionP != NULL);
-+        
-+        *retvalP = value_nil();
-+    }
-+};
-+
-+
-+
-+class callInfoTestSuite : public testSuite {
-+
-+public:
-+    virtual string suiteName() {
-+        return "callInfoTestSuite";
-+    }
-+    virtual void runtests(unsigned int const) {
-+        
-+        registry myRegistry;
-+        
-+        myRegistry.addMethod("sample.add", methodPtr(new testCallInfoMethod));
-+
-+        serverAbyss abyssServer(serverAbyss::constrOpt()
-+                                .registryP(&myRegistry)
-+                                .portNumber(12345)
-+            );
-+    }
-+};
-+
-+
-+
-+} // unnamed namespace
-+
-+
-+
- string
- serverAbyssTestSuite::suiteName() {
-     return "serverAbyssTestSuite";
-@@ -289,4 +347,5 @@ serverAbyssTestSuite::runtests(unsigned int const indentation) {
-     createTestSuite().run(indentation+1);
-+    callInfoTestSuite().run(indentation+1);
- }
-diff --git a/libs/xmlrpc-c/src/cpp/test/server_pstream.cpp b/libs/xmlrpc-c/src/cpp/test/server_pstream.cpp
-index 83b3e88..1d93273 100644
---- a/libs/xmlrpc-c/src/cpp/test/server_pstream.cpp
-+++ b/libs/xmlrpc-c/src/cpp/test/server_pstream.cpp
-@@ -4,16 +4,37 @@
-   Test the pstream server C++ facilities of XML-RPC for C/C++.
-   
- =============================================================================*/
--#include <unistd.h>
--#include <sys/socket.h>
--#include <arpa/inet.h>
-+
-+#include "xmlrpc_config.h"
-+
-+#if MSVCRT
-+  #include <winsock2.h>
-+  #include <io.h>
-+#else
-+  #include <unistd.h>
-+  #include <sys/socket.h>
-+  #include <arpa/inet.h>
-+#endif
-+
- #include <errno.h>
- #include <string>
-+#include <cstring>
- #include <fcntl.h>
-+#include "xmlrpc-c/config.h"
-+
-+#if MSVCRT
-+  int
-+  xmlrpc_win32_socketpair(int    const domain,
-+                          int    const type,
-+                          int    const protocol,
-+                          SOCKET       socks[2]);
-+#endif
-+
- #include "xmlrpc-c/girerr.hpp"
- using girerr::error;
- using girerr::throwf;
-+#include "xmlrpc-c/sleep_int.h"
- #include "xmlrpc-c/base.hpp"
- #include "xmlrpc-c/registry.hpp"
- #include "xmlrpc-c/server_pstream.hpp"
-@@ -25,6 +46,41 @@ using namespace xmlrpc_c;
- using namespace std;
-+namespace {
-+
-+static void
-+setNonBlocking(XMLRPC_SOCKET const socket) {
-+    
-+#if MSVCRT
-+    u_long iMode = 1;
-+    ioctlsocket(socket, FIONBIO, &iMode);
-+#else
-+    fcntl(socket, F_SETFL, O_NONBLOCK);
-+#endif
-+}
-+
-+
-+
-+#define ESC_STR "\x1B"
-+
-+
-+static string const
-+xmlPrologue("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
-+
-+static string const
-+packetStart(ESC_STR "PKT");
-+
-+static string const
-+packetEnd(ESC_STR "END");
-+
-+
-+class callInfo_test : public callInfo {
-+public:
-+    callInfo_test() : info("this is a test") {}
-+    string const info;
-+};
-+
-+
- class sampleAddMethod : public method {
- public:
-@@ -45,51 +101,542 @@ public:
-     }
- };
-+string const sampleAddCallXml(
-+    xmlPrologue +
-+    "<methodCall>\r\n"
-+    "<methodName>sample.add</methodName>\r\n"
-+    "<params>\r\n"
-+    "<param><value><i4>5</i4></value></param>\r\n"
-+    "<param><value><i4>7</i4></value></param>\r\n"
-+    "</params>\r\n"
-+    "</methodCall>\r\n"
-+    );
-+    
-+string const sampleAddResponseXml(
-+    xmlPrologue +
-+    "<methodResponse>\r\n"
-+    "<params>\r\n"
-+    "<param><value><i4>12</i4></value></param>\r\n"
-+    "</params>\r\n"
-+    "</methodResponse>\r\n"
-+    );
-+
-+
-+class testCallInfoMethod : public method2 {
-+
-+public:
-+    virtual void
-+    execute(paramList        const& paramList,
-+            const callInfo * const  callInfoPtr,
-+            value *          const  retvalP) {
-+
-+        const callInfo_test * const callInfoP(
-+            dynamic_cast<const callInfo_test *>(callInfoPtr));
-+
-+        TEST(callInfoP != NULL);
-+        
-+        paramList.verifyEnd(0);
-+
-+        TEST(callInfoP->info == string("this is a test"));
-+        
-+        *retvalP = value_nil();
-+    }
-+};
-+
-+string const testCallInfoCallXml(
-+    xmlPrologue +
-+    "<methodCall>\r\n"
-+    "<methodName>test.callinfo</methodName>\r\n"
-+    "<params>\r\n"
-+    "</params>\r\n"
-+    "</methodCall>\r\n"
-+    );
-+
-+string const testCallInfoResponseXml(
-+    xmlPrologue +
-+    "<methodResponse>\r\n"
-+    "<params>\r\n"
-+    "<param><value><nil/></value>"
-+    "</param>\r\n"
-+    "</params>\r\n"
-+    "</methodResponse>\r\n"
-+    );
-+
- static void
--createTestFile(string const& contents,
--               int *  const  fdP) {
-+waitForNetworkTransport() {
-+/*----------------------------------------------------------------------------
-+   Wait for a message to travel through the network.
-+
-+   This is part of our hack to allow us to test client/server communication
-+   without the bother of a separate thread for each.  One party writes
-+   to a socket, causing the OS to buffer the message, then the other party
-+   reads from the socket, getting the buffered message.  We never wait
-+   to send or receive, because with only one thread to do both, we would
-+   deadlock.  Instead, we just count on the buffer being big enough.
-+
-+   But on some systems, the message doesn't immediately travel like this.  It
-+   takes action by an independent thread (provided by the OS) to move the
-+   message.  In particular, we've seen this behavior on Windows (2010.10).
-+
-+   So we just sleep for a small amount of time to let the message move.
-+-----------------------------------------------------------------------------*/
-+
-+    // xmlrpc_millisecond_sleep() is allowed to return early, and on Windows
-+    // it does that in preference to returning late insofar as the clock
-+    // resolution doesn't allow returning at the exact time.  It is rumored
-+    // that Windows clock period may be as long as 40 milliseconds.
-+
-+    xmlrpc_millisecond_sleep(50);
-+}
--    string const filename("/tmp/xmlrpc_test_pstream");
--    unlink(filename.c_str());
--    int rc;
--    rc = open(filename.c_str(), O_RDWR | O_CREAT);
--    unlink(filename.c_str());
-+
-+
-+class client {
-+/*----------------------------------------------------------------------------
-+   This is an object you can use as a client to test a packet stream
-+   server.
-+
-+   You attach the 'serverFd' member to your packet stream server, then
-+   call the 'sendCall' method to send a call to your server, then call
-+   the 'recvResp' method to get the response.
-+
-+   Destroying the object closes the connection.
-+
-+   We rely on typical, though unguaranteed socket function: we need to
-+   be able to write 'contents' to the socket in a single write()
-+   system call before the other side reads anything -- i.e. the socket
-+   has to have a buffer that big.  We do this because we're lazy; doing
-+   it right would require forking a writer process.
-+-----------------------------------------------------------------------------*/
-+public:
-+
-+    client();
-     
-+    ~client();
-+
-+    void
-+    sendCall(string const& callBytes) const;
-+
-+    void
-+    hangup();
-+
-+    void
-+    recvResp(string * const respBytesP) const;
-+
-+    int serverFd;
-+
-+private:
-+
-+    int clientFd;
-+};
-+
-+
-+
-+client::client() {
-+
-+    enum {
-+        SERVER = 0,
-+        CLIENT = 1,
-+    };
-+    XMLRPC_SOCKET sockets[2];
-+    int rc;
-+
-+    rc = XMLRPC_SOCKETPAIR(AF_UNIX, SOCK_STREAM, 0, sockets);
-+
-     if (rc < 0)
--        throwf("Failed to create file '%s' as a test tool.  errno=%d (%s)",
--               filename.c_str(), errno, strerror(errno));
-+        throwf("Failed to create UNIX domain stream socket pair "
-+               "as test tool.  errno=%d (%s)",
-+               errno, strerror(errno));
-     else {
--        int const fd(rc);
-+        setNonBlocking(sockets[CLIENT]);
--        int rc;
--    
--        rc = write(fd, contents.c_str(), contents.length());
--
--        if (rc < 0)
--            throwf("write() of test file failed, errno=%d (%s)",
--                   errno, strerror(errno));
--        else {
--            unsigned int bytesWritten(rc);
--
--            if (bytesWritten != contents.length())
--                throwf("Short write");
--            else {
--                int rc;
--                rc = lseek(fd, 0, SEEK_SET);
--                
--                if (rc < 0)
--                    throwf("lseek(0) of test file failed, errno=%d (%s)",
--                           errno, strerror(errno));
--            }
--        }
--        *fdP = fd;
-+        this->serverFd = sockets[SERVER];
-+        this->clientFd = sockets[CLIENT];
-     }
- }
-+client::~client() {
-+
-+    XMLRPC_CLOSESOCKET(this->clientFd);
-+    XMLRPC_CLOSESOCKET(this->serverFd);
-+}
-+
-+
-+
-+void
-+client::sendCall(string const& packetBytes) const {
-+
-+    int rc;
-+
-+    rc = send(this->clientFd, packetBytes.c_str(), packetBytes.length(), 0);
-+
-+    waitForNetworkTransport();
-+
-+    if (rc < 0)
-+        throwf("send() of test data to socket failed, errno=%d (%s)",
-+               errno, strerror(errno));
-+    else {
-+        unsigned int bytesWritten(rc);
-+
-+        if (bytesWritten != packetBytes.length())
-+            throwf("Short write to socket");
-+    }
-+}
-+
-+
-+
-+void
-+client::hangup() {
-+
-+    // Closing the socket (close()) would be a better simulation of the
-+    // real world, and easier, but we shut down just the client->server
-+    // half of the socket and remain open to receive an RPC response.
-+    // That's because this test program is lazy and does the client and
-+    // server in the same thread, depending on socket buffering on the
-+    // receive side to provide parallelism.  We need to be able to do the
-+    // following sequence:
-+    //
-+    //   - Client sends call
-+    //   - Client hangs up
-+    //   - Server gets call
-+    //   - Server sends response
-+    //   - Client gets response
-+    //   - Server notices hangup
-+
-+    shutdown(this->clientFd, 1);  // Shutdown for transmission only
-+}
-+
-+
-+
-+void
-+client::recvResp(string * const packetBytesP) const {
-+
-+    char buffer[4096];
-+    int rc;
-+
-+    waitForNetworkTransport();
-+
-+    rc = recv(this->clientFd, buffer, sizeof(buffer), 0);
-+
-+    if (rc < 0)
-+        throwf("recv() from socket failed, errno=%d (%s)",
-+               errno, strerror(errno));
-+    else {
-+        unsigned int bytesReceived(rc);
-+
-+        *packetBytesP = string(buffer, bytesReceived);
-+    }
-+}
-+
-+
-+
-+static void
-+testEmptyStream(registry const& myRegistry) {
-+/*----------------------------------------------------------------------------
-+   Here we send the pstream server an empty stream; i.e. we close the
-+   socket from the client end without sending anything.
-+
-+   This should cause the server to recognize EOF.
-+-----------------------------------------------------------------------------*/
-+
-+    client client;
-+
-+    serverPstreamConn server(serverPstreamConn::constrOpt()
-+                             .registryP(&myRegistry)
-+                             .socketFd(client.serverFd));
-+
-+    client.hangup();
-+
-+    bool eof;
-+    server.runOnce(&eof);
-+
-+    TEST(eof);
-+}
-+
-+
-+
-+static void
-+testBrokenPacket(registry const& myRegistry) {
-+/*----------------------------------------------------------------------------
-+   Here we send a stream that is not a legal packetsocket stream: it
-+   doesn't have any control word.
-+-----------------------------------------------------------------------------*/
-+    client client;
-+
-+    serverPstreamConn server(serverPstreamConn::constrOpt()
-+                             .registryP(&myRegistry)
-+                             .socketFd(client.serverFd));
-+
-+    client.sendCall("junk");
-+    client.hangup();
-+
-+    bool eof;
-+
-+    EXPECT_ERROR(
-+        server.runOnce(&eof);
-+        );
-+}
-+
-+
-+
-+static void
-+testEmptyPacket(registry const& myRegistry) {
-+/*----------------------------------------------------------------------------
-+   Here we send the pstream server one empty packet.  It should respond
-+   with one packet, being an XML-RPC fault response complaining that the
-+   call is not valid XML.
-+-----------------------------------------------------------------------------*/
-+    client client;
-+
-+    serverPstreamConn server(serverPstreamConn::constrOpt()
-+                             .registryP(&myRegistry)
-+                             .socketFd(client.serverFd));
-+
-+    client.sendCall(packetStart + packetEnd);
-+
-+    bool eof;
-+    server.runOnce(&eof);
-+
-+    TEST(!eof);
-+
-+    string response;
-+    client.recvResp(&response);
-+
-+    // We ought to validate that the response is a complaint about
-+    // the empty call
-+
-+    client.hangup();
-+
-+    server.runOnce(&eof);
-+
-+    TEST(eof);
-+}
-+
-+
-+
-+static void
-+testCallInfo(client *            const  clientP,
-+             serverPstreamConn * const  serverP) {
-+    
-+    string const testCallInfoCallStream(
-+        packetStart + testCallInfoCallXml + packetEnd
-+        );
-+
-+    string const testCallInfoResponseStream(
-+        packetStart + testCallInfoResponseXml + packetEnd
-+        );
-+
-+    clientP->sendCall(testCallInfoCallStream);
-+    
-+    callInfo_test callInfo;
-+    int nointerrupt(0);
-+    bool eof;
-+    serverP->runOnce(&callInfo, &nointerrupt, &eof);
-+
-+    TEST(!eof);
-+
-+    string response;
-+    clientP->recvResp(&response);
-+
-+    TEST(response == testCallInfoResponseStream);
-+}
-+
-+
-+
-+static void
-+testNormalCall(registry const& myRegistry) {
-+
-+    string const sampleAddGoodCallStream(
-+        packetStart + sampleAddCallXml + packetEnd
-+        );
-+
-+    string const sampleAddGoodResponseStream(
-+        packetStart + sampleAddResponseXml + packetEnd
-+        );
-+
-+    client client;
-+
-+    serverPstreamConn server(serverPstreamConn::constrOpt()
-+                             .registryP(&myRegistry)
-+                             .socketFd(client.serverFd));
-+
-+    client.sendCall(sampleAddGoodCallStream);
-+
-+    bool eof;
-+
-+    int interrupt(1);
-+    server.runOnce(&interrupt, &eof); // returns without reading socket
-+    TEST(!eof);
-+
-+    server.runOnce(&eof);
-+
-+    TEST(!eof);
-+
-+    string response;
-+    client.recvResp(&response);
-+
-+    TEST(response == sampleAddGoodResponseStream);
-+    
-+    testCallInfo(&client, &server);
-+
-+    client.hangup();
-+
-+    server.runOnce(&eof);
-+
-+    TEST(eof);
-+}
-+
-+
-+
-+static void
-+testNoWaitCall(registry const& myRegistry) {
-+
-+    string const sampleAddGoodCallStream(
-+        packetStart +
-+        xmlPrologue +
-+        "<methodCall>\r\n"
-+        "<methodName>sample.add</methodName>\r\n"
-+        "<params>\r\n"
-+        "<param><value><i4>5</i4></value></param>\r\n"
-+        "<param><value><i4>7</i4></value></param>\r\n"
-+        "</params>\r\n"
-+        "</methodCall>\r\n" +
-+        packetEnd
-+        );
-+    
-+
-+    string const sampleAddGoodResponseStream(
-+        packetStart +
-+        xmlPrologue +
-+        "<methodResponse>\r\n"
-+        "<params>\r\n"
-+        "<param><value><i4>12</i4></value></param>\r\n"
-+        "</params>\r\n"
-+        "</methodResponse>\r\n" +
-+        packetEnd
-+        );
-+
-+    client client;
-+
-+    serverPstreamConn server(serverPstreamConn::constrOpt()
-+                             .registryP(&myRegistry)
-+                             .socketFd(client.serverFd));
-+
-+    bool eof;
-+    bool gotOne;
-+    string response;
-+
-+    server.runOnceNoWait(&eof, &gotOne);
-+
-+    TEST(!eof);
-+    TEST(!gotOne);
-+
-+    server.runOnceNoWait(&eof);
-+
-+    TEST(!eof);
-+
-+    client.sendCall(sampleAddGoodCallStream);
-+
-+    server.runOnceNoWait(&eof, &gotOne);
-+
-+    TEST(!eof);
-+    TEST(gotOne);
-+
-+    client.recvResp(&response);
-+
-+    TEST(response == sampleAddGoodResponseStream);
-+    
-+    client.sendCall(sampleAddGoodCallStream);
-+
-+    server.runOnce(&eof);
-+
-+    TEST(!eof);
-+    client.recvResp(&response);
-+    TEST(response == sampleAddGoodResponseStream);
-+
-+    client.hangup();
-+
-+    server.runOnce(&eof);
-+
-+    TEST(eof);
-+}
-+
-+
-+
-+static void
-+testMultiRpcRunNoRpc(registry const& myRegistry) {
-+
-+    client client;
-+
-+    serverPstreamConn server(serverPstreamConn::constrOpt()
-+                             .registryP(&myRegistry)
-+                             .socketFd(client.serverFd));
-+
-+    client.hangup();
-+
-+    server.run();
-+}
-+
-+
-+
-+static void
-+testMultiRpcRunOneRpc(registry const& myRegistry) {
-+
-+    string const sampleAddGoodCallStream(
-+        packetStart +
-+        xmlPrologue +
-+        "<methodCall>\r\n"
-+        "<methodName>sample.add</methodName>\r\n"
-+        "<params>\r\n"
-+        "<param><value><i4>5</i4></value></param>\r\n"
-+        "<param><value><i4>7</i4></value></param>\r\n"
-+        "</params>\r\n"
-+        "</methodCall>\r\n" +
-+        packetEnd
-+        );
-+    
-+
-+    string const sampleAddGoodResponseStream(
-+        packetStart +
-+        xmlPrologue +
-+        "<methodResponse>\r\n"
-+        "<params>\r\n"
-+        "<param><value><i4>12</i4></value></param>\r\n"
-+        "</params>\r\n"
-+        "</methodResponse>\r\n" +
-+        packetEnd
-+        );
-+
-+    client client;
-+
-+    serverPstreamConn server(serverPstreamConn::constrOpt()
-+                             .registryP(&myRegistry)
-+                             .socketFd(client.serverFd));
-+
-+
-+    client.sendCall(sampleAddGoodCallStream);
-+    client.hangup();
-+
-+    int interrupt;
-+
-+    interrupt = 1;
-+    server.run(&interrupt);  // Returns without reading socket
-+
-+    interrupt = 0;
-+    server.run(&interrupt);  // Does the buffered RPC
-+
-+    string response;
-+    client.recvResp(&response);
-+
-+    TEST(response == sampleAddGoodResponseStream);
-+}
-+
-+
-+
- class serverPstreamConnTestSuite : public testSuite {
- public:
-@@ -97,14 +644,12 @@ public:
-         return "serverPstreamConnTestSuite";
-     }
-     virtual void runtests(unsigned int const) {
--        int const devNullFd(open("/dev/null", 0));
--
--        if (devNullFd < 0)
--            throwf("Failed to open /dev/null, needed for test.");
--
-         registry myRegistry;
-         
--        myRegistry.addMethod("sample.add", methodPtr(new sampleAddMethod));
-+        myRegistry.addMethod("sample.add",
-+                             methodPtr(new sampleAddMethod));
-+        myRegistry.addMethod("test.callinfo",
-+                             methodPtr(new testCallInfoMethod));
-         registryPtr myRegistryP(new registry);
-@@ -125,43 +670,140 @@ public:
-                                      .registryP(&myRegistry));
-             );
-         
--        EXPECT_ERROR(  // No such file descriptor
--            serverPstreamConn server(serverPstreamConn::constrOpt()
--                                     .registryP(&myRegistry)
--                                     .socketFd(37));
--            );
-+        testEmptyStream(myRegistry);
-+
-+        testBrokenPacket(myRegistry);
-+
-+        testEmptyPacket(myRegistry);
-+
-+        testNormalCall(myRegistry);
-+
-+        testNoWaitCall(myRegistry);
-+
-+        testMultiRpcRunNoRpc(myRegistry);
-+
-+        testMultiRpcRunOneRpc(myRegistry);
-+    }
-+};
-+
-+
-+
-+static void
-+testMultiConnInterrupt(registry const& myRegistry) {
-+
-+    // We use a nonexistent file descriptor, but the server won't
-+    // ever access it, so it won't know.
-+
-+    serverPstream server(serverPstream::constrOpt()
-+                         .registryP(&myRegistry)
-+                         .socketFd(37));
-+
-+    int interrupt(1);  // interrupt immediately
-+
-+    server.runSerial(&interrupt);
-+}
-+
-+
-+
-+class derivedServer : public xmlrpc_c::serverPstream {
-+public:
-+    derivedServer(serverPstream::constrOpt const& constrOpt) :
-+        serverPstream(constrOpt),
-+        info("this is my derived server") {}
-+
-+    string const info;
-+};
-+
-+
-+
-+class multiTestCallInfoMethod : public method2 {
-+
-+// The test isn't sophisticated enough actually to do an RPC, so this
-+// code never runs.  We just want to see if it compiles.
-+
-+public:
-+    virtual void
-+    execute(paramList        const& paramList,
-+            const callInfo * const  callInfoPtr,
-+            value *          const  retvalP) {
-+
-+        const callInfo_serverPstream * const callInfoP(
-+            dynamic_cast<const callInfo_serverPstream *>(callInfoPtr));
-+
-+        TEST(callInfoP != NULL);
-         
--        {
--            serverPstreamConn server(serverPstreamConn::constrOpt()
--                                     .registryP(&myRegistry)
--                                     .socketFd(devNullFd));
-+        paramList.verifyEnd(0);
--            bool eof;
--            server.runOnce(&eof);
--            TEST(eof);
--        }
--        {
--            int fd;
--            createTestFile("junk", &fd);
-+        derivedServer * const derivedServerP(
-+            dynamic_cast<derivedServer *>(callInfoP->serverP));
--            serverPstreamConn server(serverPstreamConn::constrOpt()
--                                     .registryP(&myRegistry)
--                                     .socketFd(fd));
-+        TEST(derivedServerP->info == string("this is my derived server"));
-+
-+        TEST(callInfoP->clientAddr.sa_family == AF_INET);
-+        TEST(callInfoP->clientAddrSize >= sizeof(struct sockaddr_in));
-+        
-+        *retvalP = value_nil();
-+    }
-+};
-+
-+static void
-+testMultiConnCallInfo() {
-+
-+    registry myRegistry;
-+        
-+    myRegistry.addMethod("testCallInfo",
-+                         methodPtr(new multiTestCallInfoMethod));
-+
-+    derivedServer server(serverPstream::constrOpt()
-+                         .registryP(&myRegistry)
-+                         .socketFd(37));
-+}
-+
-+
-+
-+class multiConnServerTestSuite : public testSuite {
-+
-+public:
-+    virtual string suiteName() {
-+        return "multiConnServerTestSuite";
-+    }
-+    virtual void runtests(unsigned int const) {
-+        registry myRegistry;
-+        
-+        myRegistry.addMethod("sample.add",
-+                             methodPtr(new sampleAddMethod));
-+
-+        registryPtr myRegistryP(new registry);
-+
-+        myRegistryP->addMethod("sample.add", methodPtr(new sampleAddMethod));
-+
-+        EXPECT_ERROR(  // Empty options
-+            serverPstream::constrOpt opt;
-+            serverPstream server(opt);
-+            );
--            bool eof;
-+        EXPECT_ERROR(  // No registry
-+            serverPstream server(serverPstream::constrOpt()
-+                                 .socketFd(3));
-+            );
--            EXPECT_ERROR(   // EOF in the middle of a packet
--                server.runOnce(&eof);
--                );
--            close(fd);
--        }
-+        EXPECT_ERROR(  // No socket fd
-+            serverPstream server(serverPstream::constrOpt()
-+                                 .registryP(&myRegistry));
-+            );
-+        
-+        testMultiConnInterrupt(myRegistry);
--        close(devNullFd);
-+        testMultiConnCallInfo();
-     }
- };
-+} // unnamed namespace
-+
-+
-+
- string
- serverPstreamTestSuite::suiteName() {
-     return "serverPstreamTestSuite";
-@@ -173,5 +815,6 @@ serverPstreamTestSuite::runtests(unsigned int const indentation) {
-     serverPstreamConnTestSuite().run(indentation + 1);
-+    multiConnServerTestSuite().run(indentation + 1);
- }
-diff --git a/libs/xmlrpc-c/src/cpp/test/test.cpp b/libs/xmlrpc-c/src/cpp/test/test.cpp
-index c92653f..e632595 100644
---- a/libs/xmlrpc-c/src/cpp/test/test.cpp
-+++ b/libs/xmlrpc-c/src/cpp/test/test.cpp
-@@ -4,6 +4,7 @@
- #include <vector>
- #include <sstream>
- #include <memory>
-+#include <cstring>
- #include <time.h>
- #include "xmlrpc-c/girerr.hpp"
-@@ -13,6 +14,9 @@ using girerr::error;
- #include "xmlrpc-c/oldcppwrapper.hpp"
- #include "xmlrpc-c/registry.hpp"
-+#include "base64.hpp"
-+#include "xml.hpp"
-+#include "value.hpp"
- #include "testclient.hpp"
- #include "registry.hpp"
- #include "server_abyss.hpp"
-@@ -189,7 +193,7 @@ void test_value (void) {
-     XmlRpcValue::makeArray().getArray();
-     XmlRpcValue::makeStruct().getStruct();
--    // Test Base64 values.
-+    // Test byte string values.
-     const unsigned char *b64_data;
-     size_t b64_len;
-     XmlRpcValue val6 = XmlRpcValue::makeBase64((unsigned char*) "a\0\0b", 4);
-@@ -216,7 +220,7 @@ void test_value (void) {
-     TEST(strct.structSize() == 2);
-     TEST(strct.structHasKey("bar"));
-     TEST(!strct.structHasKey("nosuch"));
--    for (size_t i = 0; i < strct.structSize(); i++) {
-+    for (int i = 0; i < (int)strct.structSize(); ++i) {
-         string key;
-         XmlRpcValue value;
-         strct.structGetKeyAndValue(i, key, value);
-@@ -240,285 +244,66 @@ testXmlRpcCpp() {
--class intTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "intTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        value_int int1(7);
--        TEST(static_cast<int>(int1) == 7);
--        value_int int2(-7);
--        TEST(static_cast<int>(int2) == -7);
--        value val1(int1);
--        TEST(val1.type() == value::TYPE_INT);
--        value_int int3(val1);
--        TEST(static_cast<int>(int3) == 7);
--        try {
--            value_int int4(value_double(3.7));
--            TEST_FAILED("invalid cast double-int suceeded");
--        } catch (error) {}
--    }
--};
--
--
--
--class doubleTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "doubleTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        value_double double1(3.14);
--        TEST(static_cast<double>(double1) == 3.14);
--        value val1(double1);
--        TEST(val1.type() == value::TYPE_DOUBLE);
--        value_double double2(val1);
--        TEST(static_cast<double>(double2) == 3.14);
--        try {
--            value_double double4(value_int(4));
--            TEST_FAILED("invalid cast int-double suceeded");
--        } catch (error) {}
--    }
--};
--
--
--
--class booleanTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "booleanTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        value_boolean boolean1(true); 
--        TEST(static_cast<bool>(boolean1) == true);
--        value_boolean boolean2(false);
--        TEST(static_cast<bool>(boolean2) == false);
--        value val1(boolean1);
--        TEST(val1.type() == value::TYPE_BOOLEAN);
--        value_boolean boolean3(val1);
--        TEST(static_cast<bool>(boolean3) == true);
--        try {
--            value_boolean boolean4(value_int(4));
--            TEST_FAILED("invalid cast int-boolean suceeded");
--        } catch (error) {}
--    }
--};
--
--
--
--class datetimeTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "datetimeTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        time_t const testTime(900684535);
--        value_datetime datetime1("19980717T14:08:55");
--        TEST(static_cast<time_t>(datetime1) == testTime);
--        value_datetime datetime2(testTime);
--        TEST(static_cast<time_t>(datetime2) == testTime);
--        value val1(datetime1);
--        TEST(val1.type() == value::TYPE_DATETIME);
--        value_datetime datetime3(val1);
--        TEST(static_cast<time_t>(datetime3) == testTime);
--        try {
--            value_datetime datetime4(value_int(4));
--            TEST_FAILED("invalid cast int-datetime suceeded");
--        } catch (error) {}
--    }
--};
--
--
--
--class stringTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "stringTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        value_string string1("hello world");
--        TEST(static_cast<string>(string1) == "hello world");
--        value_string string2("embedded\0null");
--        TEST(static_cast<string>(string2) == "embedded\0null");
--        value val1(string1);
--        TEST(val1.type() == value::TYPE_STRING);
--        value_string string3(val1);
--        TEST(static_cast<string>(string3) == "hello world");
--        try {
--            value_string string4(value_int(4));
--            TEST_FAILED("invalid cast int-string succeeded");
--        } catch (error) {}
--        value_string string5("hello world", value_string::nlCode_all);
--        TEST(static_cast<string>(string5) == "hello world");
--        value_string string6("hello\nthere\rworld\r\n\n",
--                             value_string::nlCode_all);
--        TEST(static_cast<string>(string6) == "hello\nthere\nworld\n\n");
--        TEST(string6.crlfValue() == "hello\r\nthere\r\nworld\r\n\r\n");
--        value_string string7("hello\nthere\rworld\r\n\n",
--                             value_string::nlCode_lf);
--        TEST(static_cast<string>(string7) == "hello\nthere\rworld\r\n\n");
--    }
--};
--
--
--
--class bytestringTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "bytestringTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        unsigned char bytestringArray[] = {0x10, 0x11, 0x12, 0x13, 0x14};
--        vector<unsigned char> 
--            bytestringData(&bytestringArray[0], &bytestringArray[4]);
--        value_bytestring bytestring1(bytestringData);
--
--        vector<unsigned char> const dataReadBack1(
--            bytestring1.vectorUcharValue());
--        TEST(dataReadBack1 == bytestringData);
--        value val1(bytestring1);
--        TEST(val1.type() == value::TYPE_BYTESTRING);
--        value_bytestring bytestring2(val1);
--        vector<unsigned char> const dataReadBack2(
--            bytestring2.vectorUcharValue());
--        TEST(dataReadBack2 == bytestringData);
--        try {
--            value_bytestring bytestring4(value_int(4));
--            TEST_FAILED("invalid cast int-bytestring suceeded");
--        } catch (error) {}
--    }
--};
--
--
--
--class nilTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "nilTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        value_nil nil1;
--        value val1(nil1);
--        TEST(val1.type() == value::TYPE_NIL);
--        value_nil nil2(val1);
--        try {
--            value_nil nil4(value_int(4));
--            TEST_FAILED("invalid cast int-nil suceeded");
--        } catch (error) {}
--    }
--};
--
--
--
--class i8TestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "i8TestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        value_i8 int1(7);
--        TEST(static_cast<xmlrpc_int64>(int1) == 7);
--        value_i8 int2(-7);
--        TEST(static_cast<xmlrpc_int64>(int2) == -7);
--        value_i8 int5(1ull << 40);
--        TEST(static_cast<xmlrpc_int64>(int5) == (1ull << 40));
--        value val1(int1);
--        TEST(val1.type() == value::TYPE_I8);
--        value_i8 int3(val1);
--        TEST(static_cast<xmlrpc_int64>(int3) == 7);
--        try {
--            value_i8 int4(value_double(3.7));
--            TEST_FAILED("invalid cast double-i8 suceeded");
--        } catch (error) {}
--    }
--};
--
--
--
--class structTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "structTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        map<string, value> structData;
--        pair<string, value> member("the_integer", value_int(9));
--        structData.insert(member);
--        
--        value_struct struct1(structData);
--
--        map<string, value> dataReadBack(struct1);
--
--        TEST(static_cast<int>(value_int(dataReadBack["the_integer"])) == 9);
--
--        value val1(struct1);
--        TEST(val1.type() == value::TYPE_STRUCT);
--        value_struct struct2(val1);
--        try {
--            value_struct struct4(value_int(4));
--            TEST_FAILED("invalid cast int-struct suceeded");
--        } catch (error) {}
--    }
--};
--
--
--
--class arrayTestSuite : public testSuite {
--public:
--    virtual string suiteName() {
--        return "arrayTestSuite";
--    }
--    virtual void runtests(unsigned int const) {
--        vector<value> arrayData;
--        arrayData.push_back(value_int(7));
--        arrayData.push_back(value_double(2.78));
--        arrayData.push_back(value_string("hello world"));
--        value_array array1(arrayData);
--
--        TEST(array1.size() == 3);
--        vector<value> dataReadBack1(array1.vectorValueValue());
--        TEST(dataReadBack1[0].type() ==  value::TYPE_INT);
--        TEST(static_cast<int>(value_int(dataReadBack1[0])) == 7);
--        TEST(dataReadBack1[1].type() ==  value::TYPE_DOUBLE);
--        TEST(static_cast<double>(value_double(dataReadBack1[1])) == 2.78);
--        TEST(dataReadBack1[2].type() ==  value::TYPE_STRING);
--        TEST(static_cast<string>(value_string(dataReadBack1[2])) == 
--             "hello world");
--
--        value val1(array1);
--        TEST(val1.type() == value::TYPE_ARRAY);
--        value_array array2(val1);
--        TEST(array2.size() == 3);
--        try {
--            value_array array4(value_int(4));
--            TEST_FAILED("invalid cast int-array suceeded");
--        } catch (error) {}
--    }
--};
-+static void
-+buildParamListWithAdd(paramList * const paramListP,
-+                      time_t    const  timeFuture) {
-+
-+    paramListP->add(value_int(7));
-+    paramListP->add(value_boolean(true)).add(value_double(3.14));
-+    time_t const timeZero(0);
-+    paramListP->add(value_datetime(timeZero));
-+    paramListP->add(value_datetime(timeFuture));
-+    paramListP->add(value_string("hello world"));
-+    unsigned char bytestringArray[] = {0x10, 0x11, 0x12, 0x13, 0x14};
-+    vector<unsigned char> 
-+        bytestringData(&bytestringArray[0], &bytestringArray[4]);
-+    paramListP->add(value_bytestring(bytestringData));
-+    vector<value> arrayData;
-+    arrayData.push_back(value_int(7));
-+    arrayData.push_back(value_double(2.78));
-+    arrayData.push_back(value_string("hello world"));
-+    paramListP->add(value_array(arrayData));
-+    map<string, value> structData;
-+    pair<string, value> member("the_integer", value_int(9));
-+    structData.insert(member);
-+    paramListP->add(value_struct(structData));
-+    paramListP->add(value_nil());
-+    paramListP->add(value_i8((xmlrpc_int64)UINT_MAX + 1));
-+}
--class valueTestSuite : public testSuite {
-+static void
-+verifyParamList(paramList const& paramList,
-+                time_t    const  timeFuture) {
-+
-+    TEST(paramList.size() == 11);
-+
-+    TEST(paramList.getInt(0) == 7);
-+    TEST(paramList.getInt(0, 7) == 7);
-+    TEST(paramList.getInt(0, -5, 7) == 7);
-+    TEST(paramList.getBoolean(1) == true);
-+    TEST(paramList.getDouble(2) == 3.14);
-+    TEST(paramList.getDouble(2, 1) == 3.14);
-+    TEST(paramList.getDouble(2, 1, 4) == 3.14);
-+    time_t const timeZero(0);
-+    TEST(paramList.getDatetime_sec(3) == timeZero);
-+    TEST(paramList.getDatetime_sec(3, paramList::TC_ANY) == timeZero);
-+    TEST(paramList.getDatetime_sec(3, paramList::TC_NO_FUTURE) 
-+         == timeZero);
-+    TEST(paramList.getDatetime_sec(4, paramList::TC_NO_PAST)
-+         == timeFuture);
-+    TEST(paramList.getString(5) == "hello world");
-+    TEST(paramList.getBytestring(6)[0] == 0x10);
-+    TEST(paramList.getArray(7).size() == 3);
-+    TEST(paramList.getArray(7, 3).size() == 3);
-+    TEST(paramList.getArray(7, 1, 3).size() == 3);
-+    paramList.getStruct(8)["the_integer"];
-+    paramList.getNil(9);
-+    TEST(paramList.getI8(10) == (xmlrpc_int64)UINT_MAX + 1);
-+    paramList.verifyEnd(11);
-+}
--public:
--    virtual string suiteName() {
--        return "valueTestSuite";
--    }
--    virtual void runtests(unsigned int const indentation) {
--
--        intTestSuite().run(indentation+1);
--        doubleTestSuite().run(indentation+1);
--        booleanTestSuite().run(indentation+1);
--        datetimeTestSuite().run(indentation+1);
--        stringTestSuite().run(indentation+1);
--        bytestringTestSuite().run(indentation+1);
--        nilTestSuite().run(indentation+1);
--        i8TestSuite().run(indentation+1);
--        structTestSuite().run(indentation+1);
--        arrayTestSuite().run(indentation+1);
--    }
--};
- class paramListTestSuite : public testSuite {
-@@ -529,60 +314,24 @@ public:
-     }
-     virtual void runtests(unsigned int const) {
-+        time_t const timeFuture(time(NULL)+100);
-+
-         paramList paramList1;
-         TEST(paramList1.size() == 0);
--        paramList1.add(value_int(7));
--        paramList1.add(value_boolean(true));
--        paramList1.add(value_double(3.14));
--        time_t const timeZero(0);
--        paramList1.add(value_datetime(timeZero));
--        time_t const timeFuture(time(NULL)+100);
--        paramList1.add(value_datetime(timeFuture));
--        paramList1.add(value_string("hello world"));
--        unsigned char bytestringArray[] = {0x10, 0x11, 0x12, 0x13, 0x14};
--        vector<unsigned char> 
--            bytestringData(&bytestringArray[0], &bytestringArray[4]);
--        paramList1.add(value_bytestring(bytestringData));
--        vector<value> arrayData;
--        arrayData.push_back(value_int(7));
--        arrayData.push_back(value_double(2.78));
--        arrayData.push_back(value_string("hello world"));
--        paramList1.add(value_array(arrayData));
--        map<string, value> structData;
--        pair<string, value> member("the_integer", value_int(9));
--        structData.insert(member);
--        paramList1.add(value_struct(structData));
--        paramList1.add(value_nil());
--        paramList1.add(value_i8((xmlrpc_int64)UINT_MAX + 1));
--
--        TEST(paramList1.size() == 11);
--
--        TEST(paramList1.getInt(0) == 7);
--        TEST(paramList1.getInt(0, 7) == 7);
--        TEST(paramList1.getInt(0, -5, 7) == 7);
--        TEST(paramList1.getBoolean(1) == true);
--        TEST(paramList1.getDouble(2) == 3.14);
--        TEST(paramList1.getDouble(2, 1) == 3.14);
--        TEST(paramList1.getDouble(2, 1, 4) == 3.14);
--        TEST(paramList1.getDatetime_sec(3) == 0);
--        TEST(paramList1.getDatetime_sec(3, paramList::TC_ANY) == timeZero);
--        TEST(paramList1.getDatetime_sec(3, paramList::TC_NO_FUTURE) 
--             == timeZero);
--        TEST(paramList1.getDatetime_sec(4, paramList::TC_NO_PAST)
--             == timeFuture);
--        TEST(paramList1.getString(5) == "hello world");
--        TEST(paramList1.getBytestring(6)[0] == 0x10);
--        TEST(paramList1.getArray(7).size() == 3);
--        TEST(paramList1.getArray(7, 3).size() == 3);
--        TEST(paramList1.getArray(7, 1, 3).size() == 3);
--        paramList1.getStruct(8)["the_integer"];
--        paramList1.getNil(9);
--        TEST(paramList1.getI8(10) == (xmlrpc_int64)UINT_MAX + 1);
--        paramList1.verifyEnd(11);
-+        buildParamListWithAdd(&paramList1, timeFuture);
-+
-+        verifyParamList(paramList1, timeFuture);
-         paramList paramList2(5);
-         TEST(paramList2.size() == 0);
-+
-+        paramList2.addc(7);
-+        paramList2.addc(true).addc(3.14);
-+        TEST(paramList2.size() == 3);
-+        TEST(paramList2.getInt(0) == 7);
-+        TEST(paramList2.getBoolean(1) == true);
-+        TEST(paramList2.getDouble(2) == 3.14);
-     }
- };
-@@ -604,13 +353,13 @@ main(int argc, char**) {
-     try {
-         // Add your test suites here.
-+        base64TestSuite().run(0);
-+        xmlTestSuite().run(0);
-         valueTestSuite().run(0);
-         paramListTestSuite().run(0);
-         registryTestSuite().run(0);
-         serverAbyssTestSuite().run(0);
--#ifndef  WIN32
-         serverPstreamTestSuite().run(0);
--#endif
-         clientTestSuite().run(0);
-         testXmlRpcCpp();
-diff --git a/libs/xmlrpc-c/src/cpp/test/testclient.cpp b/libs/xmlrpc-c/src/cpp/test/testclient.cpp
-index 6eadf8d..f8a2b3a 100644
---- a/libs/xmlrpc-c/src/cpp/test/testclient.cpp
-+++ b/libs/xmlrpc-c/src/cpp/test/testclient.cpp
-@@ -32,10 +32,12 @@ using namespace std;
-+namespace {
-+
- class sampleAddMethod : public method {
- public:
-     sampleAddMethod() {
--        this->_signature = "ii";
-+        this->_signature = "i:ii";
-         this->_help = "This method adds two integers together";
-     }
-     void
-@@ -78,7 +80,15 @@ public:
- class clientXmlTransport_direct : public clientXmlTransport {
-+/*----------------------------------------------------------------------------
-+   Though this fills the shoes of a client XML transport, it's really a
-+   simulation, because it doesn't transport anything anywhere.  The call()
-+   method, which is supposed to transport a call to a server and then
-+   transport the response back, actually just executes the method itself.
-+   Part of a carriage parameter for a transport of this class is the handle
-+   of a method registry, so the transport knows how to execute the method.
-+-----------------------------------------------------------------------------*/
- public:    
-     void
-     call(xmlrpc_c::carriageParm * const  carriageParmP,
-@@ -158,6 +168,64 @@ public:
-+class MyRpc : public rpc {
-+
-+public:
-+    MyRpc(std::string const  methodName,
-+          paramList   const& paramList) :
-+        rpc(methodName, paramList) {}
-+
-+    void
-+    progress(struct xmlrpc_progress_data const& data) const {
-+
-+        // The way the tests are currently written, this never actually
-+        // runs; we're just testing for ability to compile.
-+
-+        cout << "Progress of " << this << ": "
-+             << data.call.total << " "
-+             << data.call.now << " "
-+             << data.response.total << " "
-+             << data.response.now
-+             << endl;
-+    }
-+};
-+
-+
-+
-+class clientDerivedRpcTestSuite : public testSuite {
-+/*----------------------------------------------------------------------------
-+  The object of this class tests the ability to derive a class
-+  from xmlrpc_c::rpc in order to override certain methods.
-+-----------------------------------------------------------------------------*/
-+public:
-+    virtual string suiteName() {
-+        return "clientDerivedRpcTestSuite";
-+    }
-+    virtual void runtests(unsigned int const ) {
-+        registry myRegistry;
-+        
-+        myRegistry.addMethod("sample.add", methodPtr(new sampleAddMethod));
-+        
-+        carriageParm_direct carriageParmDirect(&myRegistry);
-+        clientXmlTransport_direct transportDirect;
-+        client_xml clientDirect(&transportDirect);
-+        paramList paramListSampleAdd;
-+        paramListSampleAdd.add(value_int(5));
-+        paramListSampleAdd.add(value_int(7));
-+        {
-+            /* Test a successful RPC */
-+            rpcPtr rpcSampleAddP(new MyRpc("sample.add", paramListSampleAdd));
-+            rpcSampleAddP->call(&clientDirect, &carriageParmDirect);
-+            TEST(rpcSampleAddP->isFinished());
-+            TEST(rpcSampleAddP->isSuccessful());
-+            value_int const resultDirect(rpcSampleAddP->getResult());
-+            TEST(static_cast<int>(resultDirect) == 12);
-+        }
-+    }
-+};
-+
-+
-+
- class clientDirectTestSuite : public testSuite {
- /*----------------------------------------------------------------------------
-   The object of this class tests the client facilities by using a
-@@ -241,6 +309,8 @@ public:
-             // Same as above
-         
-         clientDirectAsyncTestSuite().run(indentation+1);
-+
-+        clientDerivedRpcTestSuite().run(indentation+1);
-     }
- };
-@@ -263,6 +333,7 @@ public:
-             .network_interface("eth0")
-             .no_ssl_verifypeer(true)
-             .no_ssl_verifyhost(true)
-+            .dont_advertise(true)
-             .user_agent("my user agent")
-             .ssl_cert("/etc/sslcert")
-             .sslcerttype("PEM")
-@@ -278,6 +349,10 @@ public:
-             .randomfile("/dev/random")
-             .egdsocket("/tmp/egdsocket")
-             .ssl_cipher_list("RC4-SHA:DEFAULT")
-+            .proxy("example.com")
-+            .proxy_port(8080)
-+            .proxy_userpwd("password")
-+            .proxy_type(XMLRPC_HTTPPROXY_SOCKS5)
-             );            
-         clientXmlTransport_curl transport5(
-@@ -831,6 +906,10 @@ public:
-+} // unnamed namespace
-+
-+
-+
- string
- clientTestSuite::suiteName() {
-     return "clientTestSuite";
-diff --git a/libs/xmlrpc-c/src/cpp/test/value.cpp b/libs/xmlrpc-c/src/cpp/test/value.cpp
-new file mode 100644
-index 0000000..f8d8e3f
---- /dev/null
-+++ b/libs/xmlrpc-c/src/cpp/test/value.cpp
-@@ -0,0 +1,453 @@
-+#include <string>
-+#include <iostream>
-+#include <iomanip>
-+#include <vector>
-+#include <sstream>
-+#include <memory>
-+#include <cstring>
-+#include <time.h>
-+
-+#include "xmlrpc-c/girerr.hpp"
-+using girerr::error;
-+#include "transport_config.h"
-+#include "xmlrpc-c/base.hpp"
-+#include "xmlrpc-c/oldcppwrapper.hpp"
-+#include "xmlrpc-c/registry.hpp"
-+#include "c_util.h"
-+
-+#include "tools.hpp"
-+
-+#include "value.hpp"
-+
-+using namespace xmlrpc_c;
-+using namespace std;
-+
-+
-+
-+namespace {
-+
-+class intTestSuite : public testSuite {
-+public:
-+    virtual string suiteName() {
-+        return "intTestSuite";
-+    }
-+    virtual void runtests(unsigned int const) {
-+        value_int int1(7);
-+        TEST(static_cast<int>(int1) == 7);
-+        value_int int2(-7);
-+        TEST(static_cast<int>(int2) == -7);
-+        value val1(int1);
-+        TEST(val1.type() == value::TYPE_INT);
-+        value_int int3(val1);
-+        TEST(static_cast<int>(int3) == 7);
-+        try {
-+            value_int int4(value_double(3.7));
-+            TEST_FAILED("invalid cast double-int suceeded");
-+        } catch (error) {}
-+
-+        value const int1x(toValue(7));
-+        TEST(int1x.type() == value::TYPE_INT);
-+        TEST(static_cast<int>(value_int(int1x)) == 7);
-+
-+        int test1x;
-+        fromValue(test1x, int1x);
-+        TEST(test1x == 7);
-+    }
-+};
-+
-+
-+
-+class doubleTestSuite : public testSuite {
-+public:
-+    virtual string suiteName() {
-+        return "doubleTestSuite";
-+    }
-+    virtual void runtests(unsigned int const) {
-+        value_double double1(3.14);
-+        TEST(static_cast<double>(double1) == 3.14);
-+        value val1(double1);
-+        TEST(val1.type() == value::TYPE_DOUBLE);
-+        value_double double2(val1);
-+        TEST(static_cast<double>(double2) == 3.14);
-+        try {
-+            value_double double4(value_int(4));
-+            TEST_FAILED("invalid cast int-double suceeded");
-+        } catch (error) {}
-+
-+        value const double1x(toValue(3.14));
-+        TEST(double1x.type() == value::TYPE_DOUBLE);
-+        TEST(static_cast<double>(value_double(double1x)) == 3.14);
-+
-+        double test1x;
-+        fromValue(test1x, double1x);
-+        TEST(test1x == 3.14);
-+    }
-+};
-+
-+
-+
-+class booleanTestSuite : public testSuite {
-+public:
-+    virtual string suiteName() {
-+        return "booleanTestSuite";
-+    }
-+    virtual void runtests(unsigned int const) {
-+        value_boolean boolean1(true); 
-+        TEST(static_cast<bool>(boolean1) == true);
-+        value_boolean boolean2(false);
-+        TEST(static_cast<bool>(boolean2) == false);
-+        value val1(boolean1);
-+        TEST(val1.type() == value::TYPE_BOOLEAN);
-+        value_boolean boolean3(val1);
-+        TEST(static_cast<bool>(boolean3) == true);
-+        try {
-+            value_boolean boolean4(value_int(4));
-+            TEST_FAILED("invalid cast int-boolean suceeded");
-+        } catch (error) {}
-+
-+        value const boolean1x(toValue(true));
-+        TEST(boolean1x.type() == value::TYPE_BOOLEAN);
-+        TEST(static_cast<bool>(value_boolean(boolean1x)) == true);
-+
-+        bool test1x;
-+        fromValue(test1x, boolean1x);
-+        TEST(test1x == true);
-+    }
-+};
-+
-+
-+
-+#if XMLRPC_HAVE_TIMEVAL
-+
-+static struct timeval
-+makeTv(time_t       const secs,
-+       unsigned int const usecs) {
-+
-+    struct timeval retval;
-+
-+    retval.tv_sec  = secs;
-+    retval.tv_usec = usecs;
-+
-+    return retval;
-+}
-+
-+static bool
-+tvIsEqual(struct timeval const comparand,
-+          struct timeval const comparator) {
-+    return
-+        comparand.tv_sec  == comparator.tv_sec &&
-+        comparand.tv_usec == comparator.tv_usec;
-+}
-+#endif
-+
-+
-+
-+#if XMLRPC_HAVE_TIMESPEC
-+
-+static struct timespec
-+makeTs(time_t       const secs,
-+       unsigned int const usecs) {
-+
-+    struct timespec retval;
-+
-+    retval.tv_sec  = secs;
-+    retval.tv_nsec = usecs * 1000;
-+
-+    return retval;
-+}
-+
-+static bool
-+tsIsEqual(struct timespec const comparand,
-+          struct timespec const comparator) {
-+    return
-+        comparand.tv_sec  == comparator.tv_sec &&
-+        comparand.tv_nsec == comparator.tv_nsec;
-+}
-+#endif
-+
-+
-+
-+class datetimeTestSuite : public testSuite {
-+public:
-+    virtual string suiteName() {
-+        return "datetimeTestSuite";
-+    }
-+    virtual void runtests(unsigned int const) {
-+        time_t const testTime(900684535);
-+        value_datetime datetime1("19980717T14:08:55");
-+        TEST(static_cast<time_t>(datetime1) == testTime);
-+        value_datetime datetime2(testTime);
-+        TEST(static_cast<time_t>(datetime2) == testTime);
-+        value val1(datetime1);
-+        TEST(val1.type() == value::TYPE_DATETIME);
-+        value_datetime datetime3(val1);
-+        TEST(static_cast<time_t>(datetime3) == testTime);
-+#if XMLRPC_HAVE_TIMEVAL
-+        struct timeval const testTimeTv(makeTv(testTime, 0));
-+        value_datetime datetime4(testTimeTv);
-+        TEST(static_cast<time_t>(datetime4) == testTime);
-+        TEST(tvIsEqual(static_cast<timeval>(datetime4), testTimeTv));
-+#endif
-+#if XMLRPC_HAVE_TIMESPEC
-+        struct timespec const testTimeTs(makeTs(testTime, 0));
-+        value_datetime datetime5(testTimeTs);
-+        TEST(static_cast<time_t>(datetime5) == testTime);
-+        TEST(tsIsEqual(static_cast<timespec>(datetime5), testTimeTs));
-+#endif
-+        try {
-+            value_datetime datetime4(value_int(4));
-+            TEST_FAILED("invalid cast int-datetime suceeded");
-+        } catch (error) {}
-+    }
-+};
-+
-+
-+
-+class stringTestSuite : public testSuite {
-+public:
-+    virtual string suiteName() {
-+        return "stringTestSuite";
-+    }
-+    virtual void runtests(unsigned int const) {
-+        value_string string1("hello world");
-+        TEST(static_cast<string>(string1) == "hello world");
-+        value_string string2("embedded\0null");
-+        TEST(static_cast<string>(string2) == "embedded\0null");
-+        value val1(string1);
-+        TEST(val1.type() == value::TYPE_STRING);
-+        value_string string3(val1);
-+        TEST(static_cast<string>(string3) == "hello world");
-+        try {
-+            value_string string4(value_int(4));
-+            TEST_FAILED("invalid cast int-string succeeded");
-+        } catch (error) {}
-+        value_string string5("hello world", value_string::nlCode_all);
-+        TEST(static_cast<string>(string5) == "hello world");
-+        value_string string6("hello\nthere\rworld\r\n\n",
-+                             value_string::nlCode_all);
-+        TEST(static_cast<string>(string6) == "hello\nthere\nworld\n\n");
-+        TEST(string6.crlfValue() == "hello\r\nthere\r\nworld\r\n\r\n");
-+        value_string string7("hello\nthere\rworld\r\n\n",
-+                             value_string::nlCode_lf);
-+        TEST(static_cast<string>(string7) == "hello\nthere\rworld\r\n\n");
-+
-+        value const string1x(toValue("hello world"));
-+        TEST(string1x.type() == value::TYPE_STRING);
-+        TEST(static_cast<string>(value_string(string1x)) == "hello world");
-+
-+        string test1x;
-+        fromValue(test1x, string1x);
-+        TEST(test1x == "hello world");
-+
-+        value const string2x(toValue(string("hello world")));
-+        TEST(string2x.type() == value::TYPE_STRING);
-+        TEST(static_cast<string>(value_string(string2x)) == "hello world");
-+    }
-+};
-+
-+
-+
-+class bytestringTestSuite : public testSuite {
-+public:
-+    virtual string suiteName() {
-+        return "bytestringTestSuite";
-+    }
-+    virtual void runtests(unsigned int const) {
-+        unsigned char bytestringArray[] = {0x10, 0x11, 0x12, 0x13, 0x14};
-+        cbytestring
-+            bytestringData(&bytestringArray[0], &bytestringArray[4]);
-+        value_bytestring bytestring1(bytestringData);
-+
-+        cbytestring const dataReadBack1(bytestring1.vectorUcharValue());
-+        TEST(dataReadBack1 == bytestringData);
-+        value val1(bytestring1);
-+        TEST(val1.type() == value::TYPE_BYTESTRING);
-+        value_bytestring bytestring2(val1);
-+        vector<unsigned char> const dataReadBack2(
-+            bytestring2.vectorUcharValue());
-+        TEST(dataReadBack2 == bytestringData);
-+        try {
-+            value_bytestring bytestring4(value_int(4));
-+            TEST_FAILED("invalid cast int-bytestring suceeded");
-+        } catch (error) {}
-+
-+        value const bytestring1x(toValue(bytestringData));
-+        TEST(bytestring1x.type() == value::TYPE_BYTESTRING);
-+        vector<unsigned char> const dataReadBack1x(
-+            value_bytestring(bytestring1x).vectorUcharValue());
-+        TEST(dataReadBack1x == bytestringData);
-+
-+        vector<unsigned char> test1x;
-+        fromValue(test1x, bytestring1x);
-+        TEST(test1x == bytestringData);
-+
-+    }
-+};
-+
-+
-+
-+class nilTestSuite : public testSuite {
-+public:
-+    virtual string suiteName() {
-+        return "nilTestSuite";
-+    }
-+    virtual void runtests(unsigned int const) {
-+        value_nil nil1;
-+        value val1(nil1);
-+        TEST(val1.type() == value::TYPE_NIL);
-+        value_nil nil2(val1);
-+        try {
-+            value_nil nil4(value_int(4));
-+            TEST_FAILED("invalid cast int-nil suceeded");
-+        } catch (error) {}
-+    }
-+};
-+
-+
-+
-+class i8TestSuite : public testSuite {
-+public:
-+    virtual string suiteName() {
-+        return "i8TestSuite";
-+    }
-+    virtual void runtests(unsigned int const) {
-+        value_i8 int1(7);
-+        TEST(static_cast<xmlrpc_int64>(int1) == 7);
-+        value_i8 int2(-7);
-+        TEST(static_cast<xmlrpc_int64>(int2) == -7);
-+        value_i8 int5(1ull << 40);
-+        TEST(static_cast<xmlrpc_int64>(int5) == (1ull << 40));
-+        value val1(int1);
-+        TEST(val1.type() == value::TYPE_I8);
-+        value_i8 int3(val1);
-+        TEST(static_cast<xmlrpc_int64>(int3) == 7);
-+        try {
-+            value_i8 int4(value_double(3.7));
-+            TEST_FAILED("invalid cast double-i8 suceeded");
-+        } catch (error) {}
-+    }
-+};
-+
-+
-+
-+class structTestSuite : public testSuite {
-+public:
-+    virtual string suiteName() {
-+        return "structTestSuite";
-+    }
-+    virtual void runtests(unsigned int const) {
-+        cstruct structData;
-+        pair<string, value> member("the_integer", value_int(9));
-+        structData.insert(member);
-+        
-+        value_struct struct1(structData);
-+
-+        map<string, value> dataReadBack(struct1);
-+
-+        TEST(static_cast<int>(value_int(dataReadBack["the_integer"])) == 9);
-+
-+        value val1(struct1);
-+        TEST(val1.type() == value::TYPE_STRUCT);
-+        value_struct struct2(val1);
-+        try {
-+            value_struct struct4(value_int(4));
-+            TEST_FAILED("invalid cast int-struct suceeded");
-+        } catch (error) {}
-+
-+        map<string, int> structDatax;
-+        structDatax["one"] = 1;
-+        structDatax["two"] = 2;
-+
-+        value const struct5(toValue(structDatax));
-+        TEST(struct5.type() == value::TYPE_STRUCT);
-+        map<string, value> dataReadBackx;
-+        dataReadBackx = value_struct(struct5);
-+
-+        TEST(static_cast<int>(value_int(dataReadBackx["two"])) == 2);
-+
-+        map<string, int> test5x;
-+        fromValue(test5x, struct5);
-+        TEST(test5x["two"] == 2);
-+    }
-+};
-+
-+
-+
-+class arrayTestSuite : public testSuite {
-+public:
-+    virtual string suiteName() {
-+        return "arrayTestSuite";
-+    }
-+    virtual void runtests(unsigned int const) {
-+        carray arrayData;
-+        arrayData.push_back(value_int(7));
-+        arrayData.push_back(value_double(2.78));
-+        arrayData.push_back(value_string("hello world"));
-+        value_array array1(arrayData);
-+
-+        TEST(array1.size() == 3);
-+        vector<value> dataReadBack1(array1.vectorValueValue());
-+        TEST(dataReadBack1[0].type() ==  value::TYPE_INT);
-+        TEST(static_cast<int>(value_int(dataReadBack1[0])) == 7);
-+        TEST(dataReadBack1[1].type() ==  value::TYPE_DOUBLE);
-+        TEST(static_cast<double>(value_double(dataReadBack1[1])) == 2.78);
-+        TEST(dataReadBack1[2].type() ==  value::TYPE_STRING);
-+        TEST(static_cast<string>(value_string(dataReadBack1[2])) == 
-+             "hello world");
-+
-+        value val1(array1);
-+        TEST(val1.type() == value::TYPE_ARRAY);
-+        value_array array2(val1);
-+        TEST(array2.size() == 3);
-+        try {
-+            value_array array4(value_int(4));
-+            TEST_FAILED("invalid cast int-array suceeded");
-+        } catch (error) {}
-+
-+        int const arrayDatax[] = {7, 4};
-+
-+        value const array5(
-+            arrayValueArray(arrayDatax, ARRAY_SIZE(arrayDatax)));
-+        TEST(array5.type() == value::TYPE_ARRAY);
-+        TEST(value_array(array5).size() == 2);
-+        vector<value> dataReadBackx(value_array(array5).vectorValueValue());
-+
-+        TEST(dataReadBackx.size() == 2);
-+        TEST(static_cast<int>(value_int(dataReadBackx[0])) == 7);
-+        vector<int> test5x;
-+        fromValue(test5x, array5);
-+        TEST(test5x[1] == 4);
-+
-+        vector<string> arrayDataVec;
-+        arrayDataVec.push_back("hello world");
-+        value const array6(toValue(arrayDataVec));
-+        TEST(array6.type() == value::TYPE_ARRAY);
-+        TEST(value_array(array6).size() == 1);
-+    }
-+};
-+
-+
-+} // unnamed namespace
-+
-+
-+string
-+valueTestSuite::suiteName() {
-+    return "valueTestSuite";
-+}
-+
-+
-+
-+void
-+valueTestSuite::runtests(unsigned int const indentation) {
-+
-+        intTestSuite().run(indentation+1);
-+        doubleTestSuite().run(indentation+1);
-+        booleanTestSuite().run(indentation+1);
-+        datetimeTestSuite().run(indentation+1);
-+        stringTestSuite().run(indentation+1);
-+        bytestringTestSuite().run(indentation+1);
-+        nilTestSuite().run(indentation+1);
-+        i8TestSuite().run(indentation+1);
-+        structTestSuite().run(indentation+1);
-+        arrayTestSuite().run(indentation+1);
-+}
-diff --git a/libs/xmlrpc-c/src/cpp/test/value.hpp b/libs/xmlrpc-c/src/cpp/test/value.hpp
-new file mode 100644
-index 0000000..65d0d90
---- /dev/null
-+++ b/libs/xmlrpc-c/src/cpp/test/value.hpp
-@@ -0,0 +1,9 @@
-+#include "tools.hpp"
-+
-+class valueTestSuite : public testSuite {
-+
-+public:
-+    virtual std::string suiteName();
-+    virtual void runtests(unsigned int const indentation);
-+};
-+
-diff --git a/libs/xmlrpc-c/src/cpp/test/xml.cpp b/libs/xmlrpc-c/src/cpp/test/xml.cpp
-new file mode 100644
-index 0000000..0a73e24
---- /dev/null
-+++ b/libs/xmlrpc-c/src/cpp/test/xml.cpp
-@@ -0,0 +1,100 @@
-+/*=============================================================================
-+                                   xml
-+===============================================================================
-+  Test the XML generator and parser C++ facilities of XML-RPC for C/C++.
-+  
-+=============================================================================*/
-+
-+#include <string>
-+
-+#include "xmlrpc-c/girerr.hpp"
-+using girerr::error;
-+using girerr::throwf;
-+#include "xmlrpc-c/base.hpp"
-+#include "xmlrpc-c/xml.hpp"
-+
-+#include "tools.hpp"
-+#include "xml.hpp"
-+
-+using namespace xmlrpc_c;
-+using namespace std;
-+
-+
-+namespace  {
-+
-+class callTestSuite : public testSuite {
-+
-+public:
-+    virtual string suiteName() {
-+        return "callTestSuite";
-+    }
-+    virtual void runtests(unsigned int const) {
-+
-+        string callXml;
-+
-+        string const methodName0("myMethod");
-+        paramList const paramList0;
-+
-+        xml::generateCall(methodName0, paramList(), &callXml);
-+
-+        string methodName;
-+        paramList paramList;
-+
-+        xml::parseCall(callXml, &methodName, &paramList);
-+
-+        TEST(methodName == methodName0);
-+        TEST(paramList.size() == paramList0.size());
-+    }
-+};
-+
-+
-+
-+class responseTestSuite : public testSuite {
-+
-+public:
-+    virtual string suiteName() {
-+        return "responseTestSuite";
-+    }
-+    virtual void runtests(unsigned int const) {
-+
-+        string respXml;
-+
-+        rpcOutcome outcome0(value_int(7));
-+
-+        xml::generateResponse(outcome0, &respXml);
-+
-+        rpcOutcome outcome;
-+
-+        xml::parseResponse(respXml, &outcome);
-+        
-+        TEST((int)value_int(outcome.getResult()) ==
-+             (int)value_int(outcome0.getResult()));
-+
-+        value result;
-+
-+        xml::parseSuccessfulResponse(respXml, &result);
-+
-+        TEST((int)value_int(result) == (int)value_int(outcome0.getResult()));
-+    }
-+};
-+
-+
-+
-+}  // unnamed namespace
-+
-+
-+
-+string
-+xmlTestSuite::suiteName() {
-+    return "XMLTestSuite";
-+}
-+
-+
-+
-+void
-+xmlTestSuite::runtests(unsigned int const indentation) {
-+
-+    callTestSuite().run(indentation+1);
-+
-+    responseTestSuite().run(indentation+1);
-+}
-diff --git a/libs/xmlrpc-c/src/cpp/test/xml.hpp b/libs/xmlrpc-c/src/cpp/test/xml.hpp
-new file mode 100644
-index 0000000..3946f46
---- /dev/null
-+++ b/libs/xmlrpc-c/src/cpp/test/xml.hpp
-@@ -0,0 +1,9 @@
-+#include "tools.hpp"
-+
-+class xmlTestSuite : public testSuite {
-+
-+public:
-+    virtual std::string suiteName();
-+    virtual void runtests(unsigned int const indentation);
-+};
-+
-diff --git a/libs/xmlrpc-c/src/cpp/value.cpp b/libs/xmlrpc-c/src/cpp/value.cpp
-index 6dcba93..3af785c 100644
---- a/libs/xmlrpc-c/src/cpp/value.cpp
-+++ b/libs/xmlrpc-c/src/cpp/value.cpp
-@@ -64,6 +64,22 @@ public:
-         this->valueP = xmlrpc_datetime_new_sec(&env.env_c, cppvalue);
-         throwIfError(env);
-     }
-+#if XMLRPC_HAVE_TIMEVAL
-+    cDatetimeValueWrapper(struct timeval const cppvalue) {
-+        env_wrap env;
-+        
-+        this->valueP = xmlrpc_datetime_new_timeval(&env.env_c, cppvalue);
-+        throwIfError(env);
-+    }
-+#endif
-+#if XMLRPC_HAVE_TIMESPEC
-+    cDatetimeValueWrapper(struct timespec const cppvalue) {
-+        env_wrap env;
-+        
-+        this->valueP = xmlrpc_datetime_new_timespec(&env.env_c, cppvalue);
-+        throwIfError(env);
-+    }
-+#endif
-     ~cDatetimeValueWrapper() {
-         xmlrpc_DECREF(this->valueP);
-     }
-@@ -93,13 +109,13 @@ public:
- namespace xmlrpc_c {
--value::value() {
-+value::value() {   // default constructor
-     this->cValueP = NULL;
- }
--value::value(xmlrpc_value * const valueP) {  // default constructor
-+value::value(xmlrpc_value * const valueP) {
-     this->instantiate(valueP);
- }
-@@ -135,7 +151,7 @@ value::~value() {
- bool
- value::isInstantiated() const {
- /*----------------------------------------------------------------------------
--   Return whether the value is actually a value, as opposed to a placeholder
-+   Return whether the object is actually a value, as opposed to a placeholder
-    variable waiting to be assigned a value.
- -----------------------------------------------------------------------------*/
-     return (this->cValueP != NULL);
-@@ -144,6 +160,20 @@ value::isInstantiated() const {
- void
-+value::validateInstantiated() const {    // private
-+/*----------------------------------------------------------------------------
-+   Throw an exception if the object is just a placeholder, rather than an
-+   actual XML-RPC value.
-+-----------------------------------------------------------------------------*/
-+    if (!this->cValueP)
-+        throw(error("Reference to xmlrpc_c::value that has not been "
-+                    "instantiated.  (xmlrpc_c::value::isInstantiated may be "
-+                    "useful in diagnosing)"));
-+}
-+
-+
-+
-+void
- value::instantiate(xmlrpc_value * const valueP) {
-     xmlrpc_INCREF(valueP);
-@@ -168,6 +198,8 @@ value::appendToCArray(xmlrpc_value * const arrayP) const {
- /*----------------------------------------------------------------------------
-   Append this value to the C array 'arrayP'.
- ----------------------------------------------------------------------------*/
-+    this->validateInstantiated();
-+
-     env_wrap env;
-     xmlrpc_array_append_item(&env.env_c, arrayP, this->cValueP);
-@@ -183,6 +215,8 @@ value::addToCStruct(xmlrpc_value * const structP,
- /*----------------------------------------------------------------------------
-   Add this value to the C array 'arrayP' with key 'key'.
- ----------------------------------------------------------------------------*/
-+    this->validateInstantiated();
-+
-     env_wrap env;
-     xmlrpc_struct_set_value_n(&env.env_c, structP,
-@@ -196,8 +230,11 @@ value::addToCStruct(xmlrpc_value * const structP,
- value::type_t 
- value::type() const {
-+
-+    this->validateInstantiated();
-+
-     /* You'd think we could just cast from xmlrpc_type to
--       value:type_t, but Gcc warns if we do that.  So we have to do this
-+       value::type_t, but Gcc warns if we do that.  So we have to do this
-        even messier union nonsense.
-     */
-     union {
-@@ -212,6 +249,15 @@ value::type() const {
-+ostream& operator<<(ostream& out, value::type_t const& type) {
-+
-+    string typeName;
-+
-+    return out << string(xmlrpc_type_name((xmlrpc_type)type));
-+}
-+
-+
-+
- value_int::value_int(int const cppvalue) {
-     class cWrapper {
-@@ -249,6 +295,8 @@ value_int::value_int(xmlrpc_c::value const baseValue) {
- value_int::operator int() const {
-+    this->validateInstantiated();
-+
-     int retval;
-     env_wrap env;
-@@ -260,6 +308,14 @@ value_int::operator int() const {
-+int
-+value_int::cvalue() const {
-+
-+    return static_cast<int>(*this);
-+}
-+
-+
-+
- value_double::value_double(double const cppvalue) {
-     class cWrapper {
-@@ -295,6 +351,8 @@ value_double::value_double(xmlrpc_c::value const baseValue) {
- value_double::operator double() const {
-+    this->validateInstantiated();
-+
-     double retval;
-     env_wrap env;
-@@ -307,6 +365,14 @@ value_double::operator double() const {
-+double
-+value_double::cvalue() const {
-+
-+    return static_cast<double>(*this);
-+}
-+
-+
-+
- value_boolean::value_boolean(bool const cppvalue) {
-     class cWrapper {
-@@ -331,8 +397,21 @@ value_boolean::value_boolean(bool const cppvalue) {
-+value_boolean::value_boolean(xmlrpc_c::value const baseValue) {
-+
-+    if (baseValue.type() != xmlrpc_c::value::TYPE_BOOLEAN)
-+        throw(error("Not boolean type.  See type() method"));
-+    else {
-+        this->instantiate(baseValue.cValueP);
-+    }
-+}
-+
-+
-+
- value_boolean::operator bool() const {
-+    this->validateInstantiated();
-+
-     xmlrpc_bool retval;
-     env_wrap env;
-@@ -345,13 +424,10 @@ value_boolean::operator bool() const {
--value_boolean::value_boolean(xmlrpc_c::value const baseValue) {
-+bool
-+value_boolean::cvalue() const {
--    if (baseValue.type() != xmlrpc_c::value::TYPE_BOOLEAN)
--        throw(error("Not boolean type.  See type() method"));
--    else {
--        this->instantiate(baseValue.cValueP);
--    }
-+    return static_cast<bool>(*this);
- }
-@@ -393,7 +469,7 @@ value_datetime::value_datetime(time_t const cppvalue) {
- #if XMLRPC_HAVE_TIMEVAL
- value_datetime::value_datetime(struct timeval const& cppvalue) {
--    cDatetimeValueWrapper wrapper(cppvalue.tv_sec);
-+    cDatetimeValueWrapper wrapper(cppvalue);
-     this->instantiate(wrapper.valueP);
- }
-@@ -404,7 +480,7 @@ value_datetime::value_datetime(struct timeval const& cppvalue) {
- #if XMLRPC_HAVE_TIMESPEC
- value_datetime::value_datetime(struct timespec const& cppvalue) {
--    cDatetimeValueWrapper wrapper(cppvalue.tv_sec);
-+    cDatetimeValueWrapper wrapper(cppvalue);
-     this->instantiate(wrapper.valueP);
- }
-@@ -425,6 +501,8 @@ value_datetime::value_datetime(xmlrpc_c::value const baseValue) {
- value_datetime::operator time_t() const {
-+    this->validateInstantiated();
-+
-     time_t retval;
-     env_wrap env;
-@@ -436,6 +514,50 @@ value_datetime::operator time_t() const {
-+#if XMLRPC_HAVE_TIMEVAL
-+
-+value_datetime::operator timeval() const {
-+
-+    this->validateInstantiated();
-+
-+    struct timeval retval;
-+    env_wrap env;
-+
-+    xmlrpc_read_datetime_timeval(&env.env_c, this->cValueP, &retval);
-+    throwIfError(env);
-+
-+    return retval;
-+}
-+#endif
-+
-+
-+
-+#if XMLRPC_HAVE_TIMESPEC
-+
-+value_datetime::operator timespec() const {
-+
-+    this->validateInstantiated();
-+
-+    struct timespec retval;
-+    env_wrap env;
-+
-+    xmlrpc_read_datetime_timespec(&env.env_c, this->cValueP, &retval);
-+    throwIfError(env);
-+
-+    return retval;
-+}
-+#endif
-+
-+
-+
-+time_t
-+value_datetime::cvalue() const {
-+
-+    return static_cast<time_t>(*this);
-+}
-+
-+
-+
- class cNewStringWrapper {
- public:
-     xmlrpc_value * valueP;
-@@ -517,6 +639,8 @@ value_string::crlfValue() const {
-         }
-     };
-     
-+    this->validateInstantiated();
-+
-     cWrapper wrapper(this->cValueP);
-     return string(wrapper.str, wrapper.length);
-@@ -526,7 +650,7 @@ value_string::crlfValue() const {
- value_string::operator string() const {
--    env_wrap env;
-+    this->validateInstantiated();
-     cStringWrapper adapter(this->cValueP);
-@@ -535,6 +659,14 @@ value_string::operator string() const {
-+std::string
-+value_string::cvalue() const {
-+
-+    return static_cast<std::string>(*this);
-+}
-+
-+
-+
- value_bytestring::value_bytestring(
-     vector<unsigned char> const& cppvalue) {
-@@ -561,6 +693,17 @@ value_bytestring::value_bytestring(
-+value_bytestring::value_bytestring(xmlrpc_c::value const baseValue) {
-+
-+    if (baseValue.type() != xmlrpc_c::value::TYPE_BYTESTRING)
-+        throw(error("Not byte string type.  See type() method"));
-+    else {
-+        this->instantiate(baseValue.cValueP);
-+    }
-+}
-+
-+
-+
- vector<unsigned char>
- value_bytestring::vectorUcharValue() const {
-@@ -580,6 +723,8 @@ value_bytestring::vectorUcharValue() const {
-         }
-     };
-     
-+    this->validateInstantiated();
-+
-     cWrapper wrapper(this->cValueP);
-     return vector<unsigned char>(&wrapper.contents[0], 
-@@ -588,9 +733,19 @@ value_bytestring::vectorUcharValue() const {
-+vector<unsigned char>
-+value_bytestring::cvalue() const {
-+
-+    return this->vectorUcharValue();
-+}
-+
-+
-+
- size_t
- value_bytestring::length() const {
-+    this->validateInstantiated();
-+
-     env_wrap env;
-     size_t length;
-@@ -602,17 +757,6 @@ value_bytestring::length() const {
--value_bytestring::value_bytestring(xmlrpc_c::value const baseValue) {
--
--    if (baseValue.type() != xmlrpc_c::value::TYPE_BYTESTRING)
--        throw(error("Not byte string type.  See type() method"));
--    else {
--        this->instantiate(baseValue.cValueP);
--    }
--}
--
--
--
- value_array::value_array(vector<xmlrpc_c::value> const& cppvalue) {
-     
-     class cWrapper {
-@@ -655,6 +799,8 @@ value_array::value_array(xmlrpc_c::value const baseValue) {
- vector<xmlrpc_c::value>
- value_array::vectorValueValue() const {
-+    this->validateInstantiated();
-+
-     env_wrap env;
-     unsigned int arraySize;
-@@ -693,9 +839,19 @@ value_array::vectorValueValue() const {
-+vector<xmlrpc_c::value>
-+value_array::cvalue() const {
-+
-+    return this->vectorValueValue();
-+}
-+
-+
-+
- size_t
- value_array::size() const {
-+    this->validateInstantiated();
-+
-     env_wrap env;
-     unsigned int arraySize;
-@@ -752,6 +908,8 @@ value_struct::value_struct(xmlrpc_c::value const baseValue) {
- value_struct::operator map<string, xmlrpc_c::value>() const {
-+    this->validateInstantiated();
-+
-     env_wrap env;
-     unsigned int structSize;
-@@ -796,6 +954,14 @@ value_struct::operator map<string, xmlrpc_c::value>() const {
-+map<string, xmlrpc_c::value>
-+value_struct::cvalue() const {
-+
-+    return static_cast<map<string, xmlrpc_c::value> >(*this);
-+}
-+
-+
-+
- value_nil::value_nil() {
-     
-     class cWrapper {
-@@ -831,6 +997,14 @@ value_nil::value_nil(xmlrpc_c::value const baseValue) {
-+void *
-+value_nil::cvalue() const {
-+
-+    return NULL;
-+}
-+
-+
-+
- value_i8::value_i8(xmlrpc_int64 const cppvalue) {
-     class cWrapper {
-@@ -868,6 +1042,8 @@ value_i8::value_i8(xmlrpc_c::value const baseValue) {
- value_i8::operator xmlrpc_int64() const {
-+    this->validateInstantiated();
-+
-     xmlrpc_int64 retval;
-     env_wrap env;
-@@ -879,4 +1055,12 @@ value_i8::operator xmlrpc_int64() const {
-+xmlrpc_int64
-+value_i8::cvalue() const {
-+
-+    return static_cast<xmlrpc_int64>(*this);
-+}
-+
-+
-+
- } // namespace
-diff --git a/libs/xmlrpc-c/src/cpp/xml.cpp b/libs/xmlrpc-c/src/cpp/xml.cpp
-index 9c57bf3..79802b9 100644
---- a/libs/xmlrpc-c/src/cpp/xml.cpp
-+++ b/libs/xmlrpc-c/src/cpp/xml.cpp
-@@ -21,14 +21,38 @@ class cValueWrapper {
- /*----------------------------------------------------------------------------
-    Use an object of this class to set up to remove a reference to an
-    xmlrpc_value object (a C object with manual reference management)
--   at then end of a scope -- even if the scope ends with a throw.
-+   at the end of a scope -- even if the scope ends with a throw.
- -----------------------------------------------------------------------------*/
- public:
--    xmlrpc_value * valueP;
-+    xmlrpc_value * const valueP;
-     cValueWrapper(xmlrpc_value * valueP) : valueP(valueP) {}
-     ~cValueWrapper() { xmlrpc_DECREF(valueP); }
- };
-+
-+
-+class cStringWrapper {
-+public:
-+    const char * const cString;
-+    cStringWrapper(const char * const cString) : cString(cString) {}
-+    ~cStringWrapper() { xmlrpc_strfree(cString); }
-+};
-+    
-+
-+
-+class memblockWrapper {
-+    xmlrpc_mem_block * const memblockP;
-+public:
-+    memblockWrapper(xmlrpc_mem_block * const memblockP) :
-+        memblockP(memblockP) {}
-+
-+    ~memblockWrapper() {
-+        XMLRPC_MEMBLOCK_FREE(char, memblockP);
-+    }
-+};
-+
-+
-+
- xmlrpc_value *
- cArrayFromParamList(paramList const& paramList) {
-@@ -53,6 +77,42 @@ cArrayFromParamList(paramList const& paramList) {
-     return paramArrayP;
- }
-+
-+
-+paramList const 
-+paramListFromCArray(xmlrpc_value * const cArrayP) {
-+
-+    paramList retval;
-+    env_wrap env;
-+
-+    unsigned int const nParam(xmlrpc_array_size(&env.env_c, cArrayP));
-+
-+    if (!env.env_c.fault_occurred) {
-+        for (unsigned int i = 0;
-+             i < nParam && !env.env_c.fault_occurred;
-+             ++i) {
-+
-+            xmlrpc_value * cParamP;
-+
-+            xmlrpc_array_read_item(&env.env_c, cArrayP, i, &cParamP);
-+
-+            if (!env.env_c.fault_occurred) {
-+
-+                cValueWrapper const paramAuto(cParamP);
-+                    // Causes xmlrpc_DECREF(cParamP) at end of scope
-+
-+                retval.add(cParamP);
-+            }
-+        }
-+    }
-+    if (env.env_c.fault_occurred)
-+        throw(error(env.env_c.fault_string));
-+
-+    return retval;
-+}
-+
-+
-+
- } // namespace
-@@ -71,17 +131,6 @@ generateCall(string         const& methodName,
-    Use dialect 'dialect' of XML-RPC.
- -----------------------------------------------------------------------------*/
--    class memblockWrapper {
--        xmlrpc_mem_block * const memblockP;
--    public:
--        memblockWrapper(xmlrpc_mem_block * const memblockP) :
--            memblockP(memblockP) {}
--
--        ~memblockWrapper() {
--            XMLRPC_MEMBLOCK_FREE(char, memblockP);
--        }
--    };
--
-     xmlrpc_mem_block * callXmlMP;
-     env_wrap env;
-@@ -118,6 +167,86 @@ generateCall(string    const& methodName,
- void
-+parseCall(string      const& callXml,
-+          string *    const  methodNameP,
-+          paramList * const  paramListP) {
-+
-+    env_wrap env;
-+    const char * c_methodName;
-+    xmlrpc_value * c_paramArrayP;
-+
-+    xmlrpc_parse_call(&env.env_c, callXml.c_str(), callXml.size(),
-+                      &c_methodName, &c_paramArrayP);
-+
-+    if (env.env_c.fault_occurred)
-+        throw(error(env.env_c.fault_string));
-+    else {
-+        cValueWrapper const paramListAuto(c_paramArrayP);
-+            // Causes XMLRPC_decref(c_paramArrayP) at end of scope
-+        cStringWrapper const methodNameAuto(c_methodName);
-+            // Causes xmlrpc_strfree(c_methodName) at end of scope
-+
-+        *paramListP  = paramListFromCArray(c_paramArrayP);
-+        *methodNameP = string(c_methodName);
-+    }
-+}
-+
-+
-+
-+void
-+generateResponse(rpcOutcome     const& outcome,
-+                 xmlrpc_dialect const  dialect,
-+                 string *       const  respXmlP) {
-+/*----------------------------------------------------------------------------
-+   Generate the XML for an XML-RPC resp, given the RPC outcome.
-+
-+   Use dialect 'dialect' of XML-RPC.
-+-----------------------------------------------------------------------------*/
-+    xmlrpc_mem_block * respXmlMP;
-+    env_wrap env;
-+
-+    respXmlMP = XMLRPC_MEMBLOCK_NEW(char, &env.env_c, 0);
-+    if (!env.env_c.fault_occurred) {
-+        memblockWrapper respXmlAuto(respXmlMP);
-+            // Makes respXmlMP get freed at end of scope
-+
-+        if (outcome.succeeded()) {
-+            cValueWrapper cResult(outcome.getResult().cValue());
-+
-+            xmlrpc_serialize_response2(&env.env_c, respXmlMP,
-+                                       cResult.valueP, dialect);
-+        
-+            *respXmlP = string(XMLRPC_MEMBLOCK_CONTENTS(char, respXmlMP),
-+                                   XMLRPC_MEMBLOCK_SIZE(char, respXmlMP));
-+        } else {
-+            env_wrap cFault;
-+
-+            xmlrpc_env_set_fault(&cFault.env_c, outcome.getFault().getCode(),
-+                                 outcome.getFault().getDescription().c_str());
-+
-+            xmlrpc_serialize_fault(&env.env_c, respXmlMP, &cFault.env_c);
-+        
-+            *respXmlP = string(XMLRPC_MEMBLOCK_CONTENTS(char, respXmlMP),
-+                                   XMLRPC_MEMBLOCK_SIZE(char, respXmlMP));
-+        }
-+    }
-+    if (env.env_c.fault_occurred)
-+        throw(error(env.env_c.fault_string));
-+}
-+
-+
-+
-+void
-+generateResponse(rpcOutcome const& outcome,
-+                 string *   const  respXmlP) {
-+
-+    generateResponse(outcome, xmlrpc_dialect_i8, respXmlP);
-+
-+}
-+
-+
-+
-+void
- parseResponse(string       const& responseXml,
-               rpcOutcome * const  outcomeP) {
- /*----------------------------------------------------------------------------
-diff --git a/libs/xmlrpc-c/src/double.c b/libs/xmlrpc-c/src/double.c
-index 1968d40..f96728b 100644
---- a/libs/xmlrpc-c/src/double.c
-+++ b/libs/xmlrpc-c/src/double.c
-@@ -3,6 +3,7 @@
- #include <float.h>
- #include "xmlrpc-c/util.h"
-+#include "xmlrpc-c/util_int.h"
- #include "double.h"
-@@ -34,8 +35,8 @@ bufferConcat(buffer * const bufferP,
-     if (bufferP->bytes) {
-         if (bufferP->next >= bufferP->end) {
--            unsigned int const oldSize = bufferP->end - bufferP->bytes;
--            unsigned int const newSize = oldSize + 64;
-+            size_t const oldSize = bufferP->end - bufferP->bytes;
-+            size_t const newSize = oldSize + 64;
-             bufferP->bytes = realloc(bufferP->bytes, newSize);
-             bufferP->next = bufferP->bytes + oldSize;
-             bufferP->end  = bufferP->bytes + newSize;
-@@ -58,6 +59,23 @@ digitChar(unsigned int const digitValue) {
-+static unsigned int
-+leadDigit(double const arg,
-+          double const precision) {
-+/*----------------------------------------------------------------------------
-+   Assuming 'arg' has one digit before the decimal point (which may be zero),
-+   return that digit.
-+
-+   We assume the precision of 'arg' is plus or minus 'precision', and bias our
-+   estimation of the first digit up.  We do that bias in order to bias toward
-+   shorter decimal ciphers: It's cleaner to consider 2.9999999 to be 3 than to
-+   consider 3 to be 2.999999.
-+-----------------------------------------------------------------------------*/
-+    return MIN(9, (unsigned int)(arg + precision));
-+}
-+
-+
-+
- static void
- floatWhole(double   const value,
-            buffer * const formattedP,
-@@ -88,7 +106,8 @@ floatWhole(double   const value,
-             */
-             leastValue = 0;
-         } else
--            leastValue = (unsigned int)(value - nonLeastAmount * 10);
-+            leastValue = leadDigit(value - nonLeastAmount * 10,
-+                                   nonLeastPrecision * 10);
-         bufferConcat(formattedP, digitChar(leastValue));
-         
-@@ -120,7 +139,7 @@ floatFractionPart(double   const value,
-         unsigned int digitValue;
-         d *= 10;
--        digitValue = (unsigned int) d;
-+        digitValue = leadDigit(d, precision);
-         d -= digitValue;
-@@ -154,7 +173,7 @@ floatFraction(double   const value,
-     precision = DBL_EPSILON;
-     while (d > precision) {
--        unsigned int const digitValue = (unsigned int) d;
-+        unsigned int const digitValue = leadDigit(d, precision);
-         bufferConcat(formattedP, digitChar(digitValue));
-diff --git a/libs/xmlrpc-c/src/json.c b/libs/xmlrpc-c/src/json.c
-new file mode 100644
-index 0000000..e422687
---- /dev/null
-+++ b/libs/xmlrpc-c/src/json.c
-@@ -0,0 +1,1466 @@
-+/*=============================================================================
-+                               json.c
-+===============================================================================
-+
-+  Bo Lorentsen (bl@lue.dk) had the idea to do XML-RPC values in JSON
-+  and wrote the original version of this code in February and March
-+  2010.
-+
-+  Bryan Henderson restructured the code and improved diagnostic information
-+  (made it tell you where the JSON is screwed up) before its first release
-+  in XML-RPC for C and C++ in Release 1.22.
-+
-+  JSON: RFC-4627
-+=============================================================================*/
-+
-+#include "xmlrpc_config.h"
-+
-+#include <assert.h>
-+#include <ctype.h>
-+#include <string.h>
-+#include <unistd.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <stdarg.h>
-+
-+#include "xmlrpc-c/json.h"
-+#include "xmlrpc-c/util.h"
-+#include "xmlrpc-c/base_int.h"
-+#include "xmlrpc-c/string_int.h"
-+#include "xmlrpc-c/string_number.h"
-+
-+
-+
-+/*=============================================================================
-+    Tokenizer for the json parser
-+=============================================================================*/
-+enum ttype {
-+    typeNone,
-+    typeOpenBrace,
-+    typeCloseBrace,
-+    typeOpenBracket,
-+    typeCloseBracket,
-+    typeColon,
-+    typeComma,
-+    typeString,
-+    typeInteger,
-+    typeFloat,
-+    typeNull,
-+    typeUndefined,
-+    typeTrue,
-+    typeFalse,
-+    typeEof,
-+} ;
-+
-+static const char *
-+tokTypeName(enum ttype const type) {
-+
-+    switch (type) {
-+    case typeNone:         return "None";
-+    case typeOpenBrace:    return "Open brace";
-+    case typeCloseBrace:   return "Close brace";
-+    case typeOpenBracket:  return "Open bracket";
-+    case typeCloseBracket: return "Close bracket";
-+    case typeColon:        return "Colon";
-+    case typeComma:        return "Comma";
-+    case typeString:       return "String";
-+    case typeInteger:      return "Integer";
-+    case typeFloat:        return "Float";
-+    case typeNull:         return "Null";
-+    case typeUndefined:    return "Undefined";
-+    case typeTrue:         return "True";
-+    case typeFalse:        return "False";
-+    case typeEof:          return "Eof";
-+    default:               return "???";
-+    }
-+}
-+
-+
-+
-+typedef struct {
-+    const char * original;
-+    size_t       size;
-+    const char * begin;
-+    const char * end;
-+    enum ttype   type;
-+} Tokenizer;
-+
-+
-+
-+static void
-+initializeTokenizer(Tokenizer *  const tokP,
-+                    const char * const str) {
-+
-+    tokP->original = str;
-+    tokP->end      = str;  /* end of the "previous" token */
-+    tokP->type     = typeNone;
-+}
-+
-+
-+
-+static void
-+terminateTokenizer(Tokenizer * const tokP ATTR_UNUSED ) {
-+
-+}
-+
-+
-+
-+struct docPosition {
-+    /* A position in the document, as meaningful to the user */
-+    unsigned int lineNum;  /* First line is 1 */
-+    unsigned int colNum;   /* First column is 1 */
-+};
-+
-+
-+
-+static struct docPosition
-+currentDocumentPosition(Tokenizer * const tokP) {
-+/*----------------------------------------------------------------------------
-+   Return the document position (line & column) of the start of the current
-+   token
-+-----------------------------------------------------------------------------*/
-+    struct docPosition retval;
-+
-+    unsigned int curLine;
-+    unsigned int curCol;
-+    const char * cursor;
-+
-+    curLine = 0;
-+    curCol  = 0;
-+
-+    for (cursor = tokP->original; cursor < tokP->begin; ++cursor) {
-+        ++curCol;
-+
-+        if (*cursor == '\n') {
-+            ++curLine;
-+            curCol = 0;
-+        }
-+    }
-+    retval.lineNum = curLine + 1;
-+    retval.colNum  = curCol  + 1;
-+
-+    return retval;
-+}
-+
-+
-+
-+static void
-+setParseErr(xmlrpc_env *   const envP,
-+            Tokenizer * const tokP,
-+            const char *   const format,
-+            ...) {
-+
-+    struct docPosition const pos = currentDocumentPosition(tokP);
-+
-+    va_list args;
-+    const char * msg;
-+
-+    XMLRPC_ASSERT(envP != NULL);
-+    XMLRPC_ASSERT(format != NULL);
-+
-+    va_start(args, format);
-+
-+    xmlrpc_vasprintf(&msg, format, args);
-+
-+    xmlrpc_env_set_fault_formatted(
-+        envP, XMLRPC_PARSE_ERROR,
-+        "JSON parse error at Line %u, Column %u: %s",
-+        pos.lineNum, pos.colNum, msg);
-+
-+    xmlrpc_strfree(msg);
-+
-+    va_end(args);
-+}
-+
-+
-+
-+static void
-+finishStringToken(xmlrpc_env *   const envP,
-+                  Tokenizer * const tokP) {
-+
-+    ++tokP->end;
-+
-+    while (*tokP->end != '"' && *tokP->end != '\0' && !envP->fault_occurred) {
-+        if (*tokP->end == '\\') {
-+            ++tokP->end;
-+            switch (*tokP->end) {
-+            case '"':
-+            case '\\':
-+            case '/':
-+            case 'b':
-+            case 'f':
-+            case 'n':
-+            case 'r':
-+            case 't':
-+                ++tokP->end;
-+                break;
-+            case 'u': {
-+                const char * cur;
-+
-+                ++tokP->end;
-+
-+                cur = tokP->end;
-+
-+                while (isxdigit(*cur) && cur - tokP->end < 4)
-+                    ++cur;
-+                
-+                if (cur - tokP->end < 4)
-+                    setParseErr(envP, tokP,
-+                                "hex unicode must contain 4 digits.  "
-+                                "There are only %u here", cur - tokP->end);
-+                else
-+                    tokP->end = cur;
-+            } break;
-+
-+            default:
-+                setParseErr(envP, tokP, "unknown escape character "
-+                            "after backslash: '%c'", *tokP->end);
-+            }
-+        } else
-+            ++tokP->end;
-+    }
-+    if (!envP->fault_occurred) {
-+        if (*tokP->end == '\0')
-+            setParseErr(envP, tokP, "JSON document ends in the middle "
-+                        "of a backslash escape sequence");
-+        else {
-+            ++tokP->end;
-+            tokP->size = (tokP->end - tokP->begin) - 1;
-+        }
-+    }
-+}
-+
-+
-+
-+static bool
-+isInteger(const char * const token,
-+          unsigned int const tokSize) {
-+
-+    if (tokSize < 1)
-+        return false;
-+    else {
-+        unsigned int i;
-+
-+        i = 0;
-+
-+        if (token[0] == '-')
-+            ++i;
-+
-+        while (i < tokSize) {
-+            if (!isdigit(token[i]))
-+                return false;
-+            ++i;
-+        }
-+        return true;
-+    }
-+}
-+
-+
-+
-+static bool
-+isFloat(const char * const token,
-+        unsigned int const tokSize) {
-+
-+    unsigned int i;
-+    bool seenPeriod;
-+    bool seenDigit;
-+
-+    seenPeriod = false;
-+    seenDigit  = false;
-+    i = 0;
-+
-+    if (tokSize >= 1 && token[0] == '-')
-+        ++i;
-+
-+    while (i < tokSize) {
-+        char const c = token[i];
-+
-+        if (c == 'e')
-+            return isInteger(&token[i], tokSize - i);
-+        else if (c == '.') {
-+            if (seenPeriod) {
-+                /* It's a second period */
-+                return false;
-+            } else {
-+                seenPeriod = true;
-+            }
-+        } else if (isdigit(c))
-+            seenDigit = true;
-+        else
-+            return false;
-+        ++i;
-+    }
-+    if (seenDigit)
-+        return true;
-+    else
-+        return false;
-+}
-+
-+
-+
-+static bool
-+isWordChar(char const candidate) {
-+/*----------------------------------------------------------------------------
-+   Return true iff 'candidate' is a character that can be in a "word" token.
-+   A word token is a multi-character token that is either a JSON keyword or a
-+   number.
-+-----------------------------------------------------------------------------*/
-+    return (isalnum(candidate) || candidate == '.' || candidate == '-');
-+}
-+
-+
-+
-+static void
-+finishAlphanumericWordToken(Tokenizer * const tokP) {
-+
-+    ++tokP->end;
-+
-+    while (isWordChar(*tokP->end))
-+        ++tokP->end;
-+
-+    tokP->size = tokP->end - tokP->begin;
-+}
-+
-+
-+
-+static void
-+finishDelimiterToken(Tokenizer * const tokP) {
-+
-+    ++tokP->end;
-+    tokP->size = tokP->end - tokP->begin;
-+}
-+
-+
-+
-+static bool
-+atComment(Tokenizer * const tokP) {
-+
-+    return (*tokP->begin == '/' && *(tokP->begin + 1) == '/');
-+}
-+
-+
-+
-+static void
-+advancePastWhiteSpace(Tokenizer * const tokP) {
-+
-+    while (isspace(*tokP->begin))
-+        ++tokP->begin;
-+}
-+
-+
-+
-+static void
-+advancePastComments(Tokenizer * const tokP) {
-+/*----------------------------------------------------------------------------
-+   Advance the pointer over any comments.
-+-----------------------------------------------------------------------------*/
-+    while (atComment(tokP)) {
-+        /* A comment ends at a newline or end of document */
-+        while (*tokP->begin != '\n' && *tokP->begin != '\0')
-+            ++tokP->begin;
-+    }
-+}
-+
-+
-+
-+static void
-+advanceToNextToken(Tokenizer * const tokP) {
-+/*----------------------------------------------------------------------------
-+   Advance the pointer over any white space and comments to the next
-+   token, or end of document, whichever comes first.
-+-----------------------------------------------------------------------------*/
-+
-+    while (*tokP->begin != '\0' &&
-+           (isspace(*tokP->begin) || atComment(tokP))) {
-+        
-+        advancePastWhiteSpace(tokP);
-+
-+        advancePastComments(tokP);
-+    }
-+}
-+
-+
-+
-+static void
-+getToken(xmlrpc_env *   const envP,
-+         Tokenizer * const tokP) {
-+
-+    /* The token starts where the last one left off */
-+    tokP->begin = tokP->end;
-+
-+    advanceToNextToken(tokP);
-+
-+    if (*tokP->begin == '\0') {
-+        /* End of document */
-+        tokP->end = tokP->begin;
-+        tokP->type = typeEof;
-+        tokP->size = tokP->end - tokP->begin;
-+    } else {
-+        tokP->end = tokP->begin;  /* initial value */
-+    
-+        if (*tokP->begin == '{') {
-+            finishDelimiterToken(tokP);
-+            tokP->type = typeOpenBrace;
-+        } else if (*tokP->begin == '}') {
-+            finishDelimiterToken(tokP);
-+            tokP->type = typeCloseBrace;
-+        } else if (*tokP->begin == '[') {
-+            finishDelimiterToken(tokP);
-+            tokP->type = typeOpenBracket;
-+        } else if (*tokP->begin == ']') {
-+            finishDelimiterToken(tokP);
-+            tokP->type = typeCloseBracket;
-+        } else if (*tokP->begin == ':') {
-+            finishDelimiterToken(tokP);
-+            tokP->type = typeColon;
-+        } else if (*tokP->begin == ',') {
-+            finishDelimiterToken(tokP);
-+            tokP->type = typeComma;
-+        } else if (*tokP->begin == '"') {
-+            finishStringToken(envP, tokP);
-+
-+            if (!envP->fault_occurred)
-+                tokP->type = typeString;
-+        } else {
-+            if (isWordChar(*tokP->begin)) {
-+                finishAlphanumericWordToken(tokP);
-+
-+                if (isInteger(tokP->begin, tokP->size))
-+                    tokP->type = typeInteger;
-+                else if (isFloat(tokP->begin, tokP->size))
-+                    tokP->type = typeFloat;
-+                else if (xmlrpc_strneq(tokP->begin, "null", tokP->size))
-+                    tokP->type = typeNull;
-+                else if (xmlrpc_strneq(tokP->begin, "undefined", tokP->size))
-+                    tokP->type = typeUndefined;
-+                else if(xmlrpc_strneq(tokP->begin, "false", tokP->size))
-+                    tokP->type = typeFalse;
-+                else if(xmlrpc_strneq(tokP->begin, "true", tokP->size))
-+                    tokP->type = typeTrue;
-+                else
-+                    setParseErr(envP, tokP, "Invalid word token -- "
-+                                "Not a valid integer, floating point "
-+                                "number, 'null', 'true', or 'false'");
-+            } else {
-+                setParseErr(envP, tokP,
-+                            "Not a valid token -- starts with '%c'; "
-+                            "a valid token starts with "
-+                            "one of []{}:,\"-. or digit or letter",
-+                            *tokP->begin);
-+            }
-+        }
-+    }
-+}
-+
-+
-+
-+/*===========================================================================*/
-+
-+
-+
-+static int
-+utf8Decode(uint32_t const c,
-+           char *   const out) {
-+/*---------------------------------------------------------------------------
-+  convert a unicode char to a utf8 char
-+---------------------------------------------------------------------------*/
-+    if (c <= 0x7F) { /* 0XXX XXXX one byte */
-+        out[0] = (char) c;
-+        return  1;
-+    } else if (c <= 0x7FF) { /* 110X XXXX  two bytes */
-+        out[0] = (char)( 0xC0 | (c >> 6) );
-+        out[1] = (char)( 0x80 | (c & 0x3F) );
-+        return 2;
-+    } else if (c <= 0xFFFF) { /* 1110 XXXX  three bytes */
-+        out[0] = (char) (0xE0 | (c >> 12));
-+        out[1] = (char) (0x80 | ((c >> 6) & 0x3F));
-+        out[2] = (char) (0x80 | (c & 0x3F));
-+        return 3;
-+     } else if (c <= 0x1FFFFF) { /* 1111 0XXX  four bytes */
-+        out[0] = (char) (0xF0 | (c >> 18));
-+        out[1] = (char) (0x80 | ((c >> 12) & 0x3F));
-+        out[2] = (char) (0x80 | ((c >> 6) & 0x3F));
-+        out[3] = (char) (0x80 | (c & 0x3F));
-+        return 4;
-+     } else
-+        return 0;
-+}
-+
-+
-+
-+static void
-+getBackslashSequence(xmlrpc_env *       const envP,
-+                     const char *       const cur,
-+                     xmlrpc_mem_block * const memBlockP,
-+                     unsigned int *     const nBytesConsumedP) {
-+
-+    char buffer[5];
-+    unsigned int tsize;
-+
-+    switch (*cur) {
-+    case '"':
-+        buffer[0] = '"';
-+        tsize = 1;
-+        *nBytesConsumedP = 1;
-+        break;
-+    case '/':
-+        buffer[0] = '/';
-+        tsize = 1;
-+        *nBytesConsumedP = 1;
-+        break;
-+    case '\\':
-+        buffer[0] = '\\';
-+        tsize = 1;
-+        *nBytesConsumedP = 1;
-+        break;
-+    case 'b':
-+        buffer[0] = '\b';
-+        tsize = 1;
-+        *nBytesConsumedP = 1;
-+        break;
-+    case 'f':
-+        buffer[0] = '\f';
-+        tsize = 1;
-+        *nBytesConsumedP = 1;
-+        break;
-+    case 'n':
-+        buffer[0] = '\n';
-+        tsize = 1;
-+        *nBytesConsumedP = 1;
-+        break;
-+    case 'r':
-+        buffer[0] = '\r';
-+        tsize = 1;
-+        *nBytesConsumedP = 1;
-+        break;
-+    case 't':
-+        buffer[0] = '\t';
-+        tsize = 1;
-+        *nBytesConsumedP = 1;
-+        break;    
-+    case 'u': {
-+        long digit;
-+        strncpy(buffer, cur + 1, 4);
-+        digit = strtol(buffer, NULL, 16);
-+        tsize = utf8Decode(digit, buffer);
-+        *nBytesConsumedP = 5;  /* uXXXX */
-+        break;
-+    }
-+    default:
-+        xmlrpc_faultf(envP, "Invalid character after backslash "
-+                      "escape: '%c'", *cur);
-+        *nBytesConsumedP = 0;  /* quiet compiler warning */
-+        tsize = 0; /* quiet compiler warning */
-+    }
-+    if (!envP->fault_occurred)
-+        XMLRPC_MEMBLOCK_APPEND(char, envP, memBlockP, buffer, tsize );
-+}
-+
-+
-+
-+static void
-+unescapeString(xmlrpc_env *       const envP,
-+               const char *       const begin,
-+               const char *       const end,
-+               xmlrpc_mem_block * const memBlockP) {
-+
-+    XMLRPC_MEMBLOCK_INIT(char, envP, memBlockP, 0);
-+
-+    if (!envP->fault_occurred) {
-+        const char * cur;
-+        const char * last;
-+
-+        cur = begin;
-+        last = cur;
-+            
-+        while (cur != end && !envP->fault_occurred) {
-+            if (*cur == '\\') {
-+                if (cur != last) {
-+                    XMLRPC_MEMBLOCK_APPEND(
-+                        char, envP, memBlockP, last, cur - last );
-+                    if (!envP->fault_occurred)
-+                        last = cur;
-+                }
-+                if (!envP->fault_occurred) {
-+                    unsigned int nBytesConsumed;
-+
-+                    cur += 1;  /* consume slash */
-+
-+                    getBackslashSequence(envP, cur, memBlockP,
-+                                         &nBytesConsumed);
-+
-+                    if (!envP->fault_occurred) {
-+                        cur += nBytesConsumed;
-+                        last = cur;
-+                    }
-+                }
-+            } else
-+                ++cur;
-+        }
-+        if (!envP->fault_occurred) {
-+            if (cur != last) {
-+                XMLRPC_MEMBLOCK_APPEND(char, envP,
-+                                       memBlockP, last, cur - last );
-+            }
-+        }
-+        if (!envP->fault_occurred) {
-+            /* Append terminating NUL */
-+            XMLRPC_MEMBLOCK_APPEND(char, envP, memBlockP, "", 1);
-+        }
-+        if (envP->fault_occurred)
-+            XMLRPC_MEMBLOCK_CLEAN(char, memBlockP);
-+    }
-+}
-+
-+
-+
-+static xmlrpc_value *
-+makeUtf8String(xmlrpc_env * const envP,
-+               const char * const begin,
-+               const char * const end) {
-+/*---------------------------------------------------------------------------- 
-+    Copy a json string directly into a string value, and convert any json
-+    escaping (\uXXXX) to something acceptable to the internal string handling.
-+
-+    Try to do this in as few chunks as possible !
-+-----------------------------------------------------------------------------*/
-+    xmlrpc_value * valP;
-+
-+    xmlrpc_createXmlrpcValue(envP, &valP);
-+
-+    if (!envP->fault_occurred) {
-+        valP->_type = XMLRPC_TYPE_STRING;
-+        valP->_wcs_block = NULL;
-+
-+        if (!envP->fault_occurred)
-+            unescapeString(envP, begin, end, &valP->_block);
-+
-+        if (envP->fault_occurred)
-+            xmlrpc_DECREF(valP);
-+    }
-+    return valP;
-+}
-+
-+
-+
-+static xmlrpc_value *
-+stringTokenValue(xmlrpc_env * const envP,
-+                 Tokenizer *  const tokP) {
-+
-+    xmlrpc_env env;
-+    xmlrpc_value * valP;
-+
-+    xmlrpc_env_init(&env);
-+
-+    assert(tokP->end >= tokP->begin + 2);
-+    assert(*tokP->begin == '"');
-+    assert(*(tokP->end-1) == '"');
-+    
-+    valP = makeUtf8String(&env, tokP->begin + 1, tokP->end - 1);
-+
-+    if (env.fault_occurred) {
-+        setParseErr(envP, tokP, "Error in string token: %s",
-+                    env.fault_string);
-+    }
-+    xmlrpc_env_clean(&env);
-+
-+    return valP;
-+}
-+
-+
-+
-+static xmlrpc_value *
-+integerTokenValue(xmlrpc_env * const envP,
-+                  Tokenizer *  const tokP) {
-+
-+    xmlrpc_env env;
-+    char valueString[tokP->size + 1];
-+    xmlrpc_int64 value;
-+    xmlrpc_value * valP;
-+
-+    xmlrpc_env_init(&env);
-+
-+    memcpy(valueString, tokP->begin, tokP->size);
-+    valueString[tokP->size] = '\0';
-+
-+    xmlrpc_parse_int64(&env, valueString, &value);
-+
-+    if (env.fault_occurred)
-+        setParseErr(envP, tokP, "Error in integer token value '%s': %s",
-+                    tokP->begin, env.fault_string);
-+    else
-+        valP = xmlrpc_i8_new(envP, value);
-+    
-+    xmlrpc_env_clean(&env);
-+
-+    return valP;
-+}
-+
-+
-+
-+/* Forward declarations for recursion: */
-+
-+static xmlrpc_value *
-+parseValue(xmlrpc_env *    const envP,
-+           Tokenizer *  const tokP);
-+
-+static xmlrpc_value *
-+parseList(xmlrpc_env *   const envP,
-+          Tokenizer * const tokP);
-+
-+static xmlrpc_value *
-+parseObject(xmlrpc_env *   const envP,
-+            Tokenizer * const tokP);
-+
-+
-+
-+static void
-+parseListElement(xmlrpc_env *   const envP,
-+                 Tokenizer * const tokP,
-+                 xmlrpc_value * const listArrayP,
-+                 bool *         const endOfListP) {
-+
-+    xmlrpc_value * itemP;
-+
-+    itemP = parseValue(envP, tokP);
-+
-+    if (!envP->fault_occurred) {
-+        xmlrpc_array_append_item(envP, listArrayP, itemP);
-+
-+        if (!envP->fault_occurred) {
-+            getToken(envP, tokP);
-+            if (!envP->fault_occurred) {
-+                if (tokP->type == typeComma) {
-+                    *endOfListP = false;
-+                } else if (tokP->type == typeCloseBracket)
-+                    *endOfListP = true;
-+                else
-+                    setParseErr(envP, tokP,
-+                                "Need comma or close bracket "
-+                                "after array item.  Instead we have %s",
-+                                tokTypeName(tokP->type));
-+            }
-+        }
-+        xmlrpc_DECREF(itemP);
-+    }
-+}
-+
-+
-+
-+static xmlrpc_value *
-+parseList(xmlrpc_env *   const envP,
-+          Tokenizer * const tokP) {
-+
-+    xmlrpc_value * retval;
-+
-+    XMLRPC_ASSERT_ENV_OK(envP);
-+
-+    retval = xmlrpc_array_new(envP);
-+    
-+    if (!envP->fault_occurred) {
-+        bool endOfList;
-+        for (endOfList = false; !endOfList && !envP->fault_occurred; ) {
-+            getToken(envP,tokP);
-+
-+            if (!envP->fault_occurred) {
-+                if (tokP->type == typeEof)
-+                    endOfList = true;
-+                else if (tokP->type == typeCloseBracket)
-+                    endOfList = true;
-+                else
-+                    parseListElement(envP, tokP, retval, &endOfList);
-+            }
-+        }
-+        if (envP->fault_occurred)
-+            xmlrpc_DECREF(retval);
-+    }
-+    return retval;
-+}
-+
-+
-+
-+static void
-+parseObjectMemberValue(xmlrpc_env *   const envP,
-+                       Tokenizer * const tokP,
-+                       xmlrpc_value * const keyP,
-+                       xmlrpc_value * const objectP) {
-+
-+    xmlrpc_value * valP;
-+
-+    getToken(envP,tokP);
-+
-+    if (!envP->fault_occurred) {
-+        valP = parseValue(envP, tokP);
-+
-+        if (!envP->fault_occurred) {
-+            xmlrpc_struct_set_value_v(envP, objectP, keyP, valP);
-+
-+            xmlrpc_DECREF(valP);
-+        }
-+    }
-+}
-+
-+
-+
-+static void
-+parseObjectMember(xmlrpc_env *   const envP,
-+                  Tokenizer * const tokP,
-+                  xmlrpc_value * const objectP) {
-+
-+    xmlrpc_env env;
-+    xmlrpc_value * keyP;
-+
-+    xmlrpc_env_init(&env);
-+
-+    /* The current token is the string which is the member name: */
-+    assert(tokP->type = typeString);
-+    assert(tokP->end >= tokP->begin + 2);
-+    assert(*tokP->begin == '"');
-+    assert(*(tokP->end-1) == '"');
-+                      
-+    keyP = makeUtf8String(&env, tokP->begin + 1, tokP->end - 1);
-+                
-+    if (env.fault_occurred)
-+        setParseErr(envP, tokP, "Error in what is supposed to be "
-+                    "the key of a member of an object: %s",
-+                    env.fault_string);
-+    else {
-+        getToken(envP, tokP);
-+
-+        if (!envP->fault_occurred) {
-+            if (tokP->type == typeColon)
-+                parseObjectMemberValue(envP, tokP, keyP, objectP);
-+            else
-+                setParseErr(envP, tokP,
-+                            "Need a colon after member key "
-+                            "in object.  Instead we have %s",
-+                            tokTypeName(tokP->type));
-+        }
-+        xmlrpc_DECREF(keyP);
-+    }
-+    xmlrpc_env_clean(&env);
-+}
-+
-+
-+ 
-+static xmlrpc_value *
-+parseObject(xmlrpc_env *   const envP,
-+            Tokenizer * const tokP) {
-+
-+    xmlrpc_value * retval;
-+
-+    XMLRPC_ASSERT_ENV_OK(envP);
-+
-+    retval = xmlrpc_struct_new(envP);
-+
-+    if (!envP->fault_occurred) {
-+        bool objectDone;
-+
-+        objectDone = false;
-+        while (!objectDone && !envP->fault_occurred) {
-+            getToken(envP, tokP);
-+
-+            if (!envP->fault_occurred) {
-+                if (tokP->type == typeCloseBrace) {
-+                    objectDone = true;
-+                } else if (tokP->type == typeString) {
-+                    parseObjectMember(envP, tokP, retval);
-+
-+                    if (!envP->fault_occurred) {
-+                        getToken(envP, tokP);
-+                        
-+                        if (!envP->fault_occurred) {
-+                            if (tokP->type == typeComma) {
-+                                /* member separator; keep going */
-+                            } else if (tokP->type == typeCloseBrace) {
-+                                /* No more members in this object */
-+                                objectDone = true;
-+                            } else
-+                                setParseErr(
-+                                    envP, tokP,
-+                                    "Need a comma or close brace after object "
-+                                    "member.  Instead we have %s",
-+                                    tokTypeName(tokP->type));
-+                        }
-+                    }
-+                } else {
-+                    setParseErr(envP, tokP,
-+                                "Need a string (i.e. starting with "
-+                                "a quotation mark) as member key "
-+                                "in object, or closing brace to end the "
-+                                "object.  Instead we have %s",
-+                                tokTypeName(tokP->type));
-+                }
-+            }
-+        }
-+        if (envP->fault_occurred)
-+            xmlrpc_DECREF(retval);
-+    }
-+    return retval;
-+}
-+
-+
-+
-+
-+
-+static xmlrpc_value *
-+parseValue(xmlrpc_env * const envP,
-+           Tokenizer *  const tokP) {
-+
-+    xmlrpc_value * retval;
-+    
-+    XMLRPC_ASSERT_ENV_OK(envP);
-+        
-+    switch (tokP->type) {
-+
-+    case typeOpenBracket:
-+        retval = parseList(envP, tokP);
-+        break;
-+
-+    case typeOpenBrace:
-+        retval = parseObject(envP, tokP);
-+        break;
-+            
-+    case typeNull:
-+        retval = xmlrpc_nil_new(envP);
-+        break;
-+
-+    case typeUndefined:
-+        retval = xmlrpc_nil_new(envP);
-+        break;
-+
-+    case typeFalse:
-+        retval = xmlrpc_bool_new(envP, (xmlrpc_bool)false);
-+        break;
-+
-+    case typeTrue:
-+        retval = xmlrpc_bool_new(envP, (xmlrpc_bool)true);
-+        break;
-+
-+    case typeInteger:
-+        retval = integerTokenValue(envP, tokP);
-+        break;
-+        
-+    case typeFloat:
-+        retval = xmlrpc_double_new(envP, strtod(tokP->begin, NULL));
-+        break;
-+
-+    case typeString:
-+        retval = stringTokenValue(envP, tokP);
-+        break;
-+            
-+    default:
-+        retval = NULL;
-+        setParseErr(envP, tokP, "Invalid token "
-+                    "where a value is supposed to begin: %s.  "
-+                    "Should be an open bracket, open brace, "
-+                    "'null', 'false', 'true', a number, or a string",
-+                    tokTypeName(tokP->type));
-+    }
-+    return retval;
-+}
-+
-+
-+
-+xmlrpc_value *
-+xmlrpc_parse_json(xmlrpc_env * const envP,
-+                  const char * const str) {
-+
-+    xmlrpc_value * retval = retval;
-+    Tokenizer tok;
-+    
-+    XMLRPC_ASSERT_ENV_OK(envP);
-+    
-+    initializeTokenizer(&tok, str);
-+
-+    getToken(envP, &tok);
-+
-+    if (!envP->fault_occurred) {
-+        retval = parseValue(envP, &tok);
-+
-+        if (!envP->fault_occurred) {
-+            getToken(envP, &tok);
-+
-+            if (!envP->fault_occurred) {
-+                if (tok.type != typeEof)
-+                    setParseErr(envP, &tok, "There is junk after the end of "
-+                                "the JSON value, to wit a %s token",
-+                                tokTypeName(tok.type));
-+            }
-+            if (envP->fault_occurred)
-+                xmlrpc_DECREF(retval);
-+        }
-+    }
-+
-+    terminateTokenizer(&tok);
-+
-+    return retval;
-+}
-+
-+
-+
-+/*============================================================================
-+      Serialize value to JSON
-+============================================================================*/
-+
-+/* Borrowed from xmlrpc_serialize */
-+
-+static void
-+formatOut(xmlrpc_env *       const envP,
-+          xmlrpc_mem_block * const outputP,
-+          const char *       const formatString, ... ) {
-+
-+    va_list args;
-+    char buffer[1024];
-+    int rc;
-+
-+    XMLRPC_ASSERT_ENV_OK(envP);
-+
-+    va_start(args, formatString);
-+
-+    rc = XMLRPC_VSNPRINTF(buffer, sizeof(buffer), formatString, args);
-+
-+    /* Old vsnprintf() (and Windows) fails with return value -1 if the full
-+       string doesn't fit in the buffer.  New vsnprintf() puts whatever will
-+       fit in the buffer, and returns the length of the full string
-+       regardless.  For us, this truncation is a failure.
-+    */
-+
-+    if (rc < 0)
-+        xmlrpc_faultf(envP, "formatOut() overflowed internal buffer");
-+    else {
-+        unsigned int const formattedLen = rc;
-+
-+        if (formattedLen + 1 >= (sizeof(buffer)))
-+            xmlrpc_faultf(envP, "formatOut() overflowed internal buffer");
-+        else
-+            XMLRPC_MEMBLOCK_APPEND(char, envP, outputP, buffer, formattedLen);
-+    }
-+    va_end(args);
-+}
-+
-+
-+
-+static void
-+indent(xmlrpc_env *       const envP,
-+       unsigned int       const level,
-+       xmlrpc_mem_block * const outP) {
-+
-+    unsigned int i;
-+
-+    for (i = 0; i < level * 2 && !envP->fault_occurred; ++i)
-+        XMLRPC_MEMBLOCK_APPEND(char, envP, outP, " ", 1);
-+}
-+
-+
-+
-+/* Forward declaration for recursion */
-+
-+static void
-+serializeValue(xmlrpc_env *       const envP,
-+               xmlrpc_value *     const valP,
-+               unsigned int       const level,
-+               xmlrpc_mem_block * const outP);
-+
-+
-+
-+static void
-+appendEscapeSeq(xmlrpc_env *       const envP,
-+                xmlrpc_mem_block * const outP,
-+                unsigned char      const c) {
-+/*----------------------------------------------------------------------------
-+   Append to *outP the escaped representation of 'c'.
-+
-+   This is e.g. "\t" for tab, or "\u001C" for something exotic.
-+-----------------------------------------------------------------------------*/
-+    unsigned int size;
-+    char buffer[6];
-+    char slashChar;
-+        /* Character that goes after the backslash, including 'u' for \uHHHH */
-+    
-+    switch (c) {
-+    case '"' : slashChar = '"';  break; /* U+0022 */
-+    case '\\': slashChar = '\\'; break; /* U+005C */
-+    case '\b': slashChar = 'b';  break; /* U+0008 */
-+    case '\f': slashChar = 'f';  break; /* U+000C */
-+    case '\n': slashChar = 'n';  break; /* U+000A */
-+    case '\r': slashChar = 'r';  break; /* U+000D */
-+    case '\t': slashChar = 't';  break; /* U+0009 */
-+    default:
-+        slashChar = 'u';
-+    };
-+
-+    buffer[0] = '\\';
-+    buffer[1] = slashChar;
-+    
-+    if (slashChar == 'u') {
-+        sprintf(&buffer[2], "%04x", c);
-+        size = 6;  /* \u1234 */
-+    } else
-+        size = 2;
-+
-+    XMLRPC_MEMBLOCK_APPEND(char, envP, outP, buffer, size);
-+}
-+
-+
-+
-+static void
-+makeJsonString(xmlrpc_env *       const envP,
-+               const char *       const value,
-+               size_t             const length,
-+               xmlrpc_mem_block * const outP) {
-+/*----------------------------------------------------------------------------
-+  Create a JSON representation of a string, appended to *outP.
-+-----------------------------------------------------------------------------*/
-+    const char * const begin = &value[0];
-+    const char * const end   = begin + length;
-+
-+    const char * cur;
-+    const char * last;
-+
-+    last = cur = begin;
-+    
-+    while (cur != end && !envP->fault_occurred) {
-+        unsigned char const c = *cur;
-+
-+        if (c < 0x1F || c == '"' || c == '\\') {
-+            /* This characters needs to be escaped.  Put a backslash escape
-+               sequence in the output for this character, after copying all
-+               the characters before it to the output.
-+            */
-+            XMLRPC_MEMBLOCK_APPEND(char, envP, outP, last, cur - last);
-+            
-+            if (!envP->fault_occurred) {
-+                appendEscapeSeq(envP, outP, c);
-+
-+                ++cur;
-+                last = cur;
-+            }
-+        } else
-+            ++cur;
-+    }
-+
-+    /* Copy all characters since the last escaped character to the output */
-+    if (cur != last)
-+        XMLRPC_MEMBLOCK_APPEND(char, envP, outP, last, cur - last);
-+
-+    if (envP->fault_occurred)
-+        XMLRPC_MEMBLOCK_CLEAN(char, outP);
-+}
-+
-+
-+
-+static void
-+makeJsonStringFromXmlRpc(xmlrpc_env *         const envP,
-+                         const xmlrpc_value * const valP,
-+                         xmlrpc_mem_block *   const outP) {
-+/*----------------------------------------------------------------------------
-+  Convert a string XML-RPC value to JSON, appended to *outP.
-+-----------------------------------------------------------------------------*/
-+    const char * value;
-+    size_t length;
-+
-+    xmlrpc_read_string_lp(envP, valP, &length, &value);
-+    if (!envP->fault_occurred) {
-+        makeJsonString(envP, value, length, outP);
-+
-+        xmlrpc_strfree(value);
-+    }
-+}
-+
-+
-+
-+static void
-+serializeInt(xmlrpc_env *       const envP,
-+             xmlrpc_value *     const valP,
-+             xmlrpc_mem_block * const outP) {
-+
-+    xmlrpc_int value;
-+
-+    xmlrpc_read_int(envP, valP, &value);
-+
-+    formatOut(envP, outP, "%d", value);
-+}
-+
-+
-+
-+static void
-+serializeI8(xmlrpc_env *       const envP,
-+            xmlrpc_value *     const valP,
-+            xmlrpc_mem_block * const outP) {
-+
-+    xmlrpc_int64 value;
-+
-+    xmlrpc_read_i8(envP, valP, &value);
-+            
-+    formatOut(envP, outP, "%" XMLRPC_PRId64, value);
-+}
-+
-+
-+
-+static void
-+serializeBool(xmlrpc_env *       const envP,
-+              xmlrpc_value *     const valP,
-+              xmlrpc_mem_block * const outP) {
-+    
-+    xmlrpc_bool value;
-+    xmlrpc_read_bool(envP, valP, &value);
-+
-+    formatOut(envP, outP, "%s", value ? "true" : "false");
-+}
-+
-+
-+
-+static void
-+serializeDouble(xmlrpc_env *       const envP,
-+                xmlrpc_value *     const valP,
-+                xmlrpc_mem_block * const outP) {
-+    
-+    xmlrpc_double value;
-+    xmlrpc_read_double(envP, valP, &value);
-+
-+    formatOut(envP, outP, "%e", value);
-+}
-+
-+
-+
-+static void
-+serializeDatetime(xmlrpc_env *       const envP,
-+                  xmlrpc_value *     const valP,
-+                  xmlrpc_mem_block * const outP) {
-+
-+    /* ISO 8601 time string as JSON does not have a datetime type */
-+
-+    formatOut(envP, outP, "\"%u%02u%02uT%02u:%02u:%02u\"",
-+              valP->_value.dt.Y,
-+              valP->_value.dt.M,
-+              valP->_value.dt.D,
-+              valP->_value.dt.h,
-+              valP->_value.dt.m,
-+              valP->_value.dt.s);
-+}
-+
-+
-+        
-+static void
-+serializeString(xmlrpc_env * const envP,
-+                xmlrpc_value *     const valP,
-+                xmlrpc_mem_block * const outP) {
-+    
-+    formatOut(envP, outP, "\"");
-+    
-+    makeJsonStringFromXmlRpc(envP, valP, outP);
-+    
-+    formatOut(envP, outP, "\"");
-+}
-+
-+
-+
-+static void
-+serializeBitstring(xmlrpc_env *       const envP,
-+                   xmlrpc_value *     const valP,
-+                   xmlrpc_mem_block * const outP) {
-+/*----------------------------------------------------------------------------
-+   Append to *outP a JSON string whose value is the bit string *valP in
-+   base64 ASCII.
-+-----------------------------------------------------------------------------*/
-+    const unsigned char * bytes;
-+    size_t size;
-+
-+    xmlrpc_read_base64(envP, valP, &size, &bytes);
-+
-+    if (!envP->fault_occurred) {
-+        xmlrpc_mem_block * const base64P =
-+            xmlrpc_base64_encode(envP, bytes, size);
-+
-+        if (!envP->fault_occurred) {
-+
-+            formatOut(envP, outP, "\"");
-+            
-+            XMLRPC_MEMBLOCK_APPEND(
-+                char, envP, outP,
-+                XMLRPC_MEMBLOCK_CONTENTS(char, base64P),
-+                XMLRPC_MEMBLOCK_SIZE(char, base64P));
-+            
-+            if (!envP->fault_occurred)
-+                formatOut(envP, outP, "\"");
-+
-+            XMLRPC_MEMBLOCK_FREE(char, base64P);
-+        }
-+        free((unsigned char*)bytes);
-+    }
-+}
-+
-+
-+
-+static void
-+serializeArray(xmlrpc_env *       const envP,
-+               xmlrpc_value *     const valP,
-+               unsigned int       const level,
-+               xmlrpc_mem_block * const outP) {
-+
-+    unsigned int const size = xmlrpc_array_size(envP, valP);
-+
-+    if (!envP->fault_occurred) {
-+        unsigned int i;
-+
-+        formatOut(envP, outP, "[\n");
-+
-+        for (i = 0; i < size && !envP->fault_occurred; ++i) {
-+            xmlrpc_value * const itemP =
-+                xmlrpc_array_get_item(envP, valP, i);
-+                    
-+            if (!envP->fault_occurred) {
-+                if (!envP->fault_occurred) {
-+                    serializeValue(envP, itemP, level + 1, outP);
-+
-+                    if (i < size - 1)
-+                        XMLRPC_MEMBLOCK_APPEND(char, envP, outP, ",\n", 2);
-+                }
-+            }
-+        }
-+        if (!envP->fault_occurred) {
-+            XMLRPC_MEMBLOCK_APPEND(char, envP, outP, "\n", 1);
-+            indent(envP, level, outP);
-+            if (!envP->fault_occurred) {
-+                XMLRPC_MEMBLOCK_APPEND(char, envP, outP, "]", 1);
-+            }
-+        }
-+    }
-+} 
-+
-+
-+
-+static void
-+serializeStructMember(xmlrpc_env *       const envP,
-+                      xmlrpc_value *     const memberKeyP,
-+                      xmlrpc_value *     const memberValueP,
-+                      unsigned int       const level,
-+                      xmlrpc_mem_block * const outP) {
-+
-+    serializeValue(envP, memberKeyP, level, outP);
-+                    
-+    if (!envP->fault_occurred) {
-+        formatOut(envP, outP, ":");
-+        
-+        if (!envP->fault_occurred)
-+            serializeValue(envP, memberValueP, level, outP);
-+    }
-+}
-+
-+
-+ 
-+static void
-+serializeStruct(xmlrpc_env *       const envP,
-+                xmlrpc_value *     const valP,
-+                unsigned int       const level,
-+                xmlrpc_mem_block * const outP) {
-+
-+    if (!envP->fault_occurred) {
-+        formatOut(envP, outP, "{\n");
-+        if (!envP->fault_occurred) {
-+            unsigned int const size = xmlrpc_struct_size(envP, valP);
-+            
-+            if (!envP->fault_occurred) {
-+                unsigned int i;
-+                for (i = 0; i < size && !envP->fault_occurred; ++i) {
-+                    xmlrpc_value * memberKeyP;
-+                    xmlrpc_value * memberValueP;
-+
-+                    xmlrpc_struct_get_key_and_value(envP, valP, i,
-+                                                    &memberKeyP,
-+                                                    &memberValueP);
-+                    if (!envP->fault_occurred) {
-+                        serializeStructMember(envP, memberKeyP, memberValueP,
-+                                              level + 1, outP);
-+                        
-+                        if (!envP->fault_occurred && i < size - 1)
-+                            XMLRPC_MEMBLOCK_APPEND(char, envP, outP, ",\n", 2);
-+                    }
-+                }
-+                if (!envP->fault_occurred) {
-+                    XMLRPC_MEMBLOCK_APPEND(char, envP, outP, "\n", 1);
-+                    indent(envP, level, outP);
-+                    XMLRPC_MEMBLOCK_APPEND(char, envP, outP, "}", 1);
-+                }
-+            }
-+        }
-+    }
-+}
-+
-+
-+
-+static void
-+serializeValue(xmlrpc_env *       const envP,
-+               xmlrpc_value *     const valP,
-+               unsigned int       const level,
-+               xmlrpc_mem_block * const outP) {
-+
-+    XMLRPC_ASSERT_ENV_OK(envP);
-+
-+    indent(envP, level, outP);
-+        
-+    switch (xmlrpc_value_type(valP)) {
-+    case XMLRPC_TYPE_INT:
-+        serializeInt(envP, valP, outP);
-+        break;
-+
-+    case XMLRPC_TYPE_I8:
-+        serializeI8(envP, valP, outP);
-+        break;
-+
-+    case XMLRPC_TYPE_BOOL:
-+        serializeBool(envP, valP, outP);
-+        break;
-+
-+    case XMLRPC_TYPE_DOUBLE:
-+        serializeDouble(envP, valP, outP);
-+        break;
-+
-+    case XMLRPC_TYPE_DATETIME:
-+        serializeDatetime(envP, valP, outP);
-+        break;
-+
-+    case XMLRPC_TYPE_STRING:
-+        serializeString(envP, valP, outP);
-+        break;
-+
-+    case XMLRPC_TYPE_BASE64:
-+        serializeBitstring(envP, valP, outP);
-+        break;      
-+
-+    case XMLRPC_TYPE_ARRAY:
-+        serializeArray(envP, valP, level, outP);
-+        break;
-+
-+    case XMLRPC_TYPE_STRUCT:
-+        serializeStruct(envP, valP, level, outP);
-+        break;
-+
-+    case XMLRPC_TYPE_C_PTR:
-+        xmlrpc_faultf(envP, "Tried to serialize a C pointer value.");
-+        break;
-+
-+    case XMLRPC_TYPE_NIL:
-+        formatOut(envP, outP, "null");
-+        break;
-+
-+    case XMLRPC_TYPE_DEAD:
-+        xmlrpc_faultf(envP, "Tried to serialize a dead value.");
-+        break;
-+
-+    default:
-+        xmlrpc_faultf(envP, "Invalid xmlrpc_value type: 0x%x",
-+                      xmlrpc_value_type(valP));
-+    }
-+}
-+
-+
-+
-+void
-+xmlrpc_serialize_json(xmlrpc_env *       const envP,
-+                      xmlrpc_value *     const valP,
-+                      xmlrpc_mem_block * const outP) {
-+
-+    serializeValue(envP, valP, 0, outP);
-+}
-diff --git a/libs/xmlrpc-c/src/method.c b/libs/xmlrpc-c/src/method.c
-index cf58b26..467bbbe 100644
---- a/libs/xmlrpc-c/src/method.c
-+++ b/libs/xmlrpc-c/src/method.c
-@@ -10,6 +10,8 @@
-   Contributed to the public domain by its author.
- =========================================================================*/
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
-+
- #include "xmlrpc_config.h"
- #include <assert.h>
-@@ -57,6 +59,7 @@ translateTypeSpecifierToName(xmlrpc_env *  const envP,
-                       "Method registry contains invalid signature "
-                       "data.  It contains the type specifier '%c'",
-                       typeSpecifier);
-+        *typeNameP = NULL;  /* quiet compiler warning */
-     }
- }
-                 
-@@ -175,9 +178,8 @@ parseOneSignature(xmlrpc_env *               const envP,
-         }
-         if (envP->fault_occurred)
-             free(signatureP);
--        else
--            *signaturePP = signatureP;
-     }
-+    *signaturePP = signatureP;
- }    
-@@ -210,7 +212,7 @@ listSignatures(xmlrpc_env *               const envP,
-     cursorP = &sigListString[0];
-     
-     while (!envP->fault_occurred && *cursorP != '\0') {
--        struct xmlrpc_signature * signatureP = NULL;
-+        struct xmlrpc_signature * signatureP;
-         
-         parseOneSignature(envP, cursorP, &signatureP, &cursorP);
-         
-@@ -293,6 +295,8 @@ makeSignatureList(xmlrpc_env *            const envP,
-     if (env.fault_occurred)
-         xmlrpc_faultf(envP, "Can't interpret signature string '%s'.  %s",
-                       signatureString, env.fault_string);
-+
-+    xmlrpc_env_clean(&env);
- }
-@@ -304,6 +308,7 @@ xmlrpc_methodCreate(xmlrpc_env *           const envP,
-                     void *                 const userData,
-                     const char *           const signatureString,
-                     const char *           const helpText,
-+                    size_t                 const stackSize,
-                     xmlrpc_methodInfo **   const methodPP) {
-     xmlrpc_methodInfo * methodP;
-@@ -319,12 +324,15 @@ xmlrpc_methodCreate(xmlrpc_env *           const envP,
-         methodP->methodFnType1  = methodFnType1;
-         methodP->methodFnType2  = methodFnType2;
-         methodP->userData       = userData;
--        methodP->helpText       = strdup(helpText);
-+        methodP->helpText       = xmlrpc_strdupsol(helpText);
-+        methodP->stackSize      = stackSize;
-         makeSignatureList(envP, signatureString, &methodP->signatureListP);
--        if (envP->fault_occurred)
-+        if (envP->fault_occurred) {
-+            xmlrpc_strfree(methodP->helpText);
-             free(methodP);
-+        }
-         *methodPP = methodP;
-     }
-diff --git a/libs/xmlrpc-c/src/method.h b/libs/xmlrpc-c/src/method.h
-index 2ceca75..f1d56cb 100644
---- a/libs/xmlrpc-c/src/method.h
-+++ b/libs/xmlrpc-c/src/method.h
-@@ -65,6 +65,10 @@ typedef struct {
-         /* The method function, if it's type 2.  Null if it's not */
-     void * userData;
-         /* Passed to method function */
-+    size_t stackSize;
-+        /* Amount of stack space 'methodFnType1' or 'methodFnType2' uses.
-+           Zero means unspecified.
-+        */
-     struct xmlrpc_signatureList * signatureListP;
-         /* Stuff returned by system method system.methodSignature.
-            Empty list doesn't mean there are no valid forms of calling the
-@@ -92,6 +96,7 @@ xmlrpc_methodCreate(xmlrpc_env *           const envP,
-                     void *                 const userData,
-                     const char *           const signatureString,
-                     const char *           const helpText,
-+                    size_t                 const stackSize,
-                     xmlrpc_methodInfo **   const methodPP);
- void
-diff --git a/libs/xmlrpc-c/src/parse_datetime.c b/libs/xmlrpc-c/src/parse_datetime.c
-new file mode 100644
-index 0000000..a6299d7
---- /dev/null
-+++ b/libs/xmlrpc-c/src/parse_datetime.c
-@@ -0,0 +1,466 @@
-+#include "xmlrpc_config.h"
-+
-+#include <stdlib.h>
-+#include <assert.h>
-+#include <ctype.h>
-+#include <string.h>
-+
-+#if HAVE_REGEX
-+#include <sys/types.h>  /* Missing from regex.h in GNU libc */
-+#include <regex.h>
-+#endif
-+
-+#include "bool.h"
-+
-+#include "xmlrpc-c/base.h"
-+#include "xmlrpc-c/base_int.h"
-+#include "xmlrpc-c/util.h"
-+
-+#include "parse_datetime.h"
-+
-+
-+
-+#if HAVE_REGEX
-+
-+static unsigned int
-+digitStringValue(const char * const string,
-+                 regmatch_t   const match) {
-+/*----------------------------------------------------------------------------
-+   Return the numerical value of the decimal whole number substring of
-+   'string' identified by 'match'.  E.g. if 'string' is 'abc34d' and
-+   'match' says start at 3 and end at 5, we return 34.
-+-----------------------------------------------------------------------------*/
-+    unsigned int i;
-+    unsigned int accum;
-+
-+    assert(match.rm_so >= 0);
-+    assert(match.rm_eo >= 0);
-+
-+    for (i = match.rm_so, accum = 0; i < (unsigned)match.rm_eo; ++i) {
-+        accum *= 10;
-+        assert(isdigit(string[i]));
-+        accum += string[i] - '0';
-+    }
-+    return accum;
-+}
-+#endif  /* HAVE_REGEX */
-+
-+
-+
-+#if HAVE_REGEX
-+
-+static unsigned int
-+digitStringMillionths(const char * const string,
-+                      regmatch_t   const match) {
-+/*----------------------------------------------------------------------------
-+   Return the number of millionths represented by the digits after the
-+   decimal point in a decimal string, where thse digits are the substring
-+   of 'string' identified by 'match'.  E.g. if the substring is
-+   34, we return 340,000.
-+-----------------------------------------------------------------------------*/
-+    unsigned int i;
-+    unsigned int accum;
-+
-+    assert(match.rm_so >= 0);
-+    assert(match.rm_eo >= 0);
-+
-+    for (i = match.rm_so, accum = 0; i < (unsigned)match.rm_so+6; ++i) {
-+        accum *= 10;
-+        if (i < (unsigned)match.rm_eo) {
-+            assert(isdigit(string[i]));
-+            accum += string[i] - '0';
-+        }
-+    }
-+    return accum;
-+}
-+#endif /* HAVE_REGEX */
-+
-+
-+#if HAVE_REGEX
-+
-+static void 
-+subParseDtRegex_standard(regmatch_t *      const matches,
-+                         const char *      const datetimeString,
-+                         xmlrpc_datetime * const dtP) {
-+
-+    dtP->Y = digitStringValue(datetimeString, matches[1]);
-+    dtP->M = digitStringValue(datetimeString, matches[2]);
-+    dtP->D = digitStringValue(datetimeString, matches[3]);
-+    dtP->h = digitStringValue(datetimeString, matches[4]);
-+    dtP->m = digitStringValue(datetimeString, matches[5]);
-+    dtP->s = digitStringValue(datetimeString, matches[6]);
-+    
-+    if (matches[7].rm_so == -1)
-+        dtP->u = 0;
-+    else
-+        dtP->u = digitStringMillionths(datetimeString, matches[7]);
-+}
-+
-+
-+
-+static void 
-+subParseDtRegex_standardtzd(regmatch_t *      const matches,
-+                            const char *      const datetimeString,
-+                            xmlrpc_datetime * const dtP) {
-+
-+    dtP->Y = digitStringValue(datetimeString, matches[1]);
-+    dtP->M = digitStringValue(datetimeString, matches[2]);
-+    dtP->D = digitStringValue(datetimeString, matches[3]);
-+    dtP->h = digitStringValue(datetimeString, matches[4]);
-+    dtP->m = digitStringValue(datetimeString, matches[5]);
-+    dtP->s = digitStringValue(datetimeString, matches[6]);
-+}
-+
-+#endif  /* HAVE_REGEX */
-+
-+
-+#if HAVE_REGEX
-+
-+typedef  void (*regparsefunc_t)(regmatch_t *      const matches,
-+                                const char *      const datetimeString,
-+                                xmlrpc_datetime * const dtP);
-+
-+
-+struct regexParser {
-+    const char * const regex;
-+    regparsefunc_t func; 
-+};
-+
-+static const struct regexParser iso8601Regex[]
-+
-+    /* Each entry of this table is instructions for recognizing and parsing
-+       some form of a "dateTime.iso8601" XML element.
-+
-+       (Note that we recognize far more than just the XML-RPC standard
-+       dateTime.iso8601).
-+    */
-+
-+    = {
-+           {
-+               /* Examples:
-+                  YYYYMMDD[T]HHMMSS
-+                  YYYY-MM-DD[T]HH:MM:SS
-+                  YYYY-MM-DD[T]HH:MM:SS.ssss
-+               */
-+
-+               "^([0-9]{4})\\-?([0-9]{2})\\-?([0-9]{2})T"
-+               "([0-9]{2}):?([0-9]{2}):?([0-9]{2})\\.?([0-9]+)?$",
-+               subParseDtRegex_standard
-+           },
-+           
-+           { 
-+               /* Examples:
-+                  YYYYMMDD[T]HHMMSS[Z]
-+                  YYYYMMDD[T]HHMMSS[+-]hh
-+                  YYYYMMDD[T]HHMMSS[+-]hhmm
-+               */
-+
-+               "^([0-9]{4})\\-?([0-9]{2})\\-?([0-9]{2})T"
-+               "([0-9]{2}):?([0-9]{2}):?([0-9]{2})[Z\\+\\-]([0-9]{2,4})?$",
-+               subParseDtRegex_standardtzd
-+           },
-+           { NULL, NULL }
-+    };
-+#endif  /* HAVE_REGEX */
-+
-+
-+
-+#if HAVE_REGEX
-+static void
-+parseDtRegex(xmlrpc_env *      const envP,
-+             const char *      const datetimeString,
-+             xmlrpc_datetime * const dtP) {
-+
-+    unsigned int i;
-+    const struct regexParser * parserP;
-+        /* The parser that matches 'datetimeString'.  Null if no match yet
-+           found.
-+        */
-+    regmatch_t matches[1024];
-+
-+    for (i = 0, parserP = NULL; iso8601Regex[i].regex && !parserP; ++i) {
-+        const struct regexParser * const thisParserP = &iso8601Regex[i];
-+
-+        regex_t re;
-+        int status;
-+
-+        status = regcomp(&re, thisParserP->regex, REG_ICASE | REG_EXTENDED);
-+
-+        /* Our regex is valid, so it must have compiled: */
-+        assert(status == 0);
-+        {
-+            int status;
-+    
-+            status = regexec(&re, datetimeString, ARRAY_SIZE(matches), 
-+                             matches, 0);
-+    
-+            if (status == 0) {
-+                assert(matches[0].rm_so != -1);  /* Match of whole regex */
-+                
-+                parserP = thisParserP;
-+            }
-+            regfree(&re);
-+        }
-+    }
-+
-+    if (parserP) {
-+        parserP->func(matches, datetimeString, dtP);
-+    } else {
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_PARSE_ERROR,
-+            "value '%s' is not of any form we recognize "
-+            "for a <dateTime.iso8601> element",
-+            datetimeString);
-+    }
-+
-+}
-+#endif  /* HAVE_REGEX */
-+
-+
-+
-+static __inline__ void
-+parseDtNoRegex(xmlrpc_env *      const envP,
-+               const char *      const datetimeString,
-+               xmlrpc_datetime * const dtP) {
-+
-+    unsigned int const dtStrlen = strlen(datetimeString);
-+
-+    char year[4+1];
-+    char month[2+1];
-+    char day[2+1];
-+    char hour[2+1];
-+    char minute[2+1];
-+    char second[2+1];
-+
-+    if (dtStrlen < 17 || dtStrlen == 18 || dtStrlen > 24)
-+        xmlrpc_faultf(envP, "could not parse date, size incompatible: '%d'",
-+                      dtStrlen);
-+    else {
-+        year[0]   = datetimeString[ 0];
-+        year[1]   = datetimeString[ 1];
-+        year[2]   = datetimeString[ 2];
-+        year[3]   = datetimeString[ 3];
-+        year[4]   = '\0';
-+
-+        month[0]  = datetimeString[ 4];
-+        month[1]  = datetimeString[ 5];
-+        month[2]  = '\0';
-+
-+        day[0]    = datetimeString[ 6];
-+        day[1]    = datetimeString[ 7];
-+        day[2]    = '\0';
-+
-+        assert(datetimeString[ 8] == 'T');
-+
-+        hour[0]   = datetimeString[ 9];
-+        hour[1]   = datetimeString[10];
-+        hour[2]   = '\0';
-+
-+        assert(datetimeString[11] == ':');
-+
-+        minute[0] = datetimeString[12];
-+        minute[1] = datetimeString[13];
-+        minute[2] = '\0';
-+
-+        assert(datetimeString[14] == ':');
-+
-+        second[0] = datetimeString[15];
-+        second[1] = datetimeString[16];
-+        second[2] = '\0';
-+
-+        if (dtStrlen > 17) {
-+            unsigned int const pad = 24 - dtStrlen;
-+            unsigned int i;
-+
-+            dtP->u = atoi(&datetimeString[18]);
-+            for (i = 0; i < pad; ++i)
-+                dtP->u *= 10;
-+        } else
-+            dtP->u = 0;
-+
-+        dtP->Y = atoi(year);
-+        dtP->M = atoi(month);
-+        dtP->D = atoi(day);
-+        dtP->h = atoi(hour);
-+        dtP->m = atoi(minute);
-+        dtP->s = atoi(second);
-+    }
-+}
-+
-+
-+
-+static void
-+validateFirst17(xmlrpc_env * const envP,
-+                const char * const dt) {
-+/*----------------------------------------------------------------------------
-+   Assuming 'dt' is at least 17 characters long, validate that the first
-+   17 characters are a valid XML-RPC datetime, e.g.
-+   "20080628T16:35:02"
-+-----------------------------------------------------------------------------*/
-+    unsigned int i;
-+
-+    for (i = 0; i < 8 && !envP->fault_occurred; ++i)
-+        if (!isdigit(dt[i]))
-+            xmlrpc_env_set_fault_formatted(
-+                envP, XMLRPC_PARSE_ERROR, "Not a digit: '%c'", dt[i]);
-+
-+    if (dt[8] != 'T')
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_PARSE_ERROR, "9th character is '%c', not 'T'",
-+            dt[8]);
-+    if (!isdigit(dt[9]))
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_PARSE_ERROR, "Not a digit: '%c'", dt[9]);
-+    if (!isdigit(dt[10]))
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_PARSE_ERROR, "Not a digit: '%c'", dt[10]);
-+    if (dt[11] != ':')
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_PARSE_ERROR, "Not a colon: '%c'", dt[11]);
-+    if (!isdigit(dt[12]))
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_PARSE_ERROR, "Not a digit: '%c'", dt[12]);
-+    if (!isdigit(dt[13]))
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_PARSE_ERROR, "Not a digit: '%c'", dt[13]);
-+    if (dt[14] != ':')
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_PARSE_ERROR, "Not a colon: '%c'", dt[14]);
-+    if (!isdigit(dt[15]))
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_PARSE_ERROR, "Not a digit: '%c'", dt[15]);
-+    if (!isdigit(dt[16]))
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_PARSE_ERROR, "Not a digit: '%c'", dt[16]);
-+}
-+
-+
-+
-+static void
-+validateFractionalSeconds(xmlrpc_env * const envP,
-+                          const char * const dt) {
-+/*----------------------------------------------------------------------------
-+   Validate the fractional seconds part of the XML-RPC datetime string
-+   'dt', if any.  That's the decimal point and everything following
-+   it.
-+-----------------------------------------------------------------------------*/
-+    if (strlen(dt) > 17) {
-+        if (dt[17] != '.') {
-+            xmlrpc_env_set_fault_formatted(
-+                envP, XMLRPC_PARSE_ERROR,
-+                "'%c' where only a period is valid", dt[17]);
-+        } else {
-+            if (dt[18] == '\0')
-+                xmlrpc_env_set_fault_formatted(
-+                    envP, XMLRPC_PARSE_ERROR, "Nothing after decimal point");
-+            else {
-+                unsigned int i;
-+                for (i = 18; dt[i] != '\0' && !envP->fault_occurred; ++i) {
-+                    if (!isdigit(dt[i]))
-+                        xmlrpc_env_set_fault_formatted(
-+                            envP, XMLRPC_PARSE_ERROR,
-+                            "Non-digit in fractional seconds: '%c'", dt[i]);
-+                }
-+            }
-+        }
-+    }
-+}
-+
-+
-+
-+static __inline__ void
-+validateFormatNoRegex(xmlrpc_env * const envP,
-+                      const char * const dt) {
-+
-+    if (strlen(dt) < 17)
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_PARSE_ERROR, 
-+            "Invalid length of %u of datetime.  "
-+            "Must be at least 17 characters",
-+            (unsigned)strlen(dt));
-+    else {
-+        validateFirst17(envP, dt);
-+
-+        validateFractionalSeconds(envP, dt);
-+    }
-+}
-+
-+
-+
-+static void
-+validateXmlrpcDatetimeSome(xmlrpc_env *    const envP,
-+                           xmlrpc_datetime const dt) {
-+/*----------------------------------------------------------------------------
-+  Type xmlrpc_datetime is defined such that it can represent a nonexistent
-+  datetime such as February 30.
-+
-+  Validate that 'dt' doesn't have glaring invalidities such as Hour 25.
-+  We leave the possibility of more subtle invalidity such as February 30.
-+-----------------------------------------------------------------------------*/
-+
-+    if (dt.M < 1 || dt.M > 12)
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_PARSE_ERROR,
-+            "Month of year value %u is not in the range 1-12", dt.M);
-+    else if (dt.D < 1 || dt.D > 31)
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_PARSE_ERROR,
-+            "Day of month value %u is not in the range 1-31", dt.D);
-+    else if (dt.h > 23)
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_PARSE_ERROR,
-+            "Hour of day value %u is not in the range 0-23", dt.h);
-+    else if (dt.m > 59)
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_PARSE_ERROR,
-+            "Minute of hour value %u is not in the range 0-59", dt.m);
-+    else if (dt.s > 59)
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_PARSE_ERROR,
-+            "Second of minute value %u is not in the range 0-59", dt.s);
-+    else if (dt.u > 999999)
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_PARSE_ERROR,
-+            "Microsecond of second value %u is not in the range 0-1M", dt.u);
-+}
-+
-+
-+
-+void
-+xmlrpc_parseDatetime(xmlrpc_env *    const envP,
-+                     const char *    const datetimeString,
-+                     xmlrpc_value ** const valuePP) {
-+/*----------------------------------------------------------------------------
-+   Parse the content of a <datetime.iso8601> XML-RPC XML element, e.g. 
-+   "20000301T00:00:00".
-+
-+   'str' is that content.
-+
-+   Example of the format we parse: "19980717T14:08:55"
-+   Note that this is not quite ISO 8601.  It's a bizarre combination of
-+   two ISO 8601 formats.
-+
-+   Note that Xmlrpc-c recognizes various extensions of the XML-RPC
-+   <datetime.iso8601> element type.
-+
-+   'str' may not be valid XML-RPC (with extensions).  In that case we fail
-+   with fault code XMLRPC_PARSE_ERROR.
-+-----------------------------------------------------------------------------*/
-+    xmlrpc_datetime dt;
-+
-+#if HAVE_REGEX
-+    parseDtRegex(envP, datetimeString, &dt);
-+#else
-+    /* Note: validation is not as strong without regex */
-+    validateFormatNoRegex(envP, datetimeString);
-+    if (!envP->fault_occurred)
-+        parseDtNoRegex(envP, datetimeString, &dt);
-+#endif
-+
-+    if (!envP->fault_occurred) {
-+        validateXmlrpcDatetimeSome(envP, dt);
-+
-+        if (!envP->fault_occurred)
-+            *valuePP = xmlrpc_datetime_new(envP, dt);
-+    }
-+}
-diff --git a/libs/xmlrpc-c/src/parse_datetime.h b/libs/xmlrpc-c/src/parse_datetime.h
-new file mode 100644
-index 0000000..85207b7
---- /dev/null
-+++ b/libs/xmlrpc-c/src/parse_datetime.h
-@@ -0,0 +1,12 @@
-+#ifndef PARSE_DATETIME_H_INCLUDED
-+#define PARSE_DATETIME_H_INCLUDED
-+
-+#include "xmlrpc-c/util.h"
-+#include "xmlrpc-c/base.h"
-+
-+void
-+xmlrpc_parseDatetime(xmlrpc_env *    const envP,
-+                     const char *    const str,
-+                     xmlrpc_value ** const valuePP);
-+
-+#endif
-diff --git a/libs/xmlrpc-c/src/parse_value.c b/libs/xmlrpc-c/src/parse_value.c
-index a00b2a1..b40cf47 100644
---- a/libs/xmlrpc-c/src/parse_value.c
-+++ b/libs/xmlrpc-c/src/parse_value.c
-@@ -13,8 +13,10 @@
- #include "xmlrpc-c/base.h"
- #include "xmlrpc-c/base_int.h"
- #include "xmlrpc-c/string_int.h"
-+#include "xmlrpc-c/string_number.h"
- #include "xmlrpc-c/util.h"
- #include "xmlrpc-c/xmlparser.h"
-+#include "parse_datetime.h"
- #include "parse_value.h"
-@@ -72,12 +74,12 @@ parseArray(xmlrpc_env *    const envP,
-     arrayP = xmlrpc_array_new(envP);
-     if (!envP->fault_occurred) {
--        unsigned int const childCount = xml_element_children_size(arrayElemP);
-+        size_t const childCount = xml_element_children_size(arrayElemP);
-         if (childCount != 1)
-             setParseFault(envP,
-                           "<array> element has %u children.  Only one <data> "
--                          "makes sense.", childCount);
-+                          "makes sense.", (unsigned int)childCount);
-         else {
-             xml_element * const dataElemP =
-                 xml_element_children(arrayElemP)[0];
-@@ -111,11 +113,11 @@ parseName(xmlrpc_env *    const envP,
-           xml_element *   const nameElemP,
-           xmlrpc_value ** const valuePP) {
--    unsigned int const childCount = xml_element_children_size(nameElemP);
-+    size_t const childCount = xml_element_children_size(nameElemP);
-     if (childCount > 0)
-         setParseFault(envP, "<name> element has %u children.  "
--                      "Should have none.", childCount);
-+                      "Should have none.", (unsigned int)childCount);
-     else {
-         const char * const cdata     = xml_element_cdata(nameElemP);
-         size_t       const cdataSize = xml_element_cdata_size(nameElemP);
-@@ -181,12 +183,12 @@ parseMember(xmlrpc_env *    const envP,
-             xmlrpc_value ** const keyPP,
-             xmlrpc_value ** const valuePP) {
--    unsigned int const childCount = xml_element_children_size(memberP);
-+    size_t const childCount = xml_element_children_size(memberP);
-     if (childCount != 2)
-         setParseFault(envP,
-                       "<member> element has %u children.  Only one <name> and "
--                      "one <value> make sense.", childCount);
-+                      "one <value> make sense.", (unsigned int)childCount);
-     else {
-         xml_element * nameElemP = NULL;
-@@ -302,12 +304,12 @@ parseInt(xmlrpc_env *    const envP,
-             /* Look for out-of-range errors which didn't produce ERANGE. */
-             if (i < XMLRPC_INT32_MIN)
-                 setParseFault(envP,
--                              "<int> value %d is below the range allowed "
-+                              "<int> value %ld is below the range allowed "
-                               "by XML-RPC (minimum is %d)",
-                               i, XMLRPC_INT32_MIN);
-             else if (i > XMLRPC_INT32_MAX)
-                 setParseFault(envP,
--                              "<int> value %d is above the range allowed "
-+                              "<int> value %ld is above the range allowed "
-                               "by XML-RPC (maximum is %d)",
-                               i, XMLRPC_INT32_MAX);
-             else {
-@@ -581,39 +583,20 @@ parseI8(xmlrpc_env *    const envP,
-                       "<i8> content '%s' starts with white space", str);
-     else {
-         xmlrpc_int64 i;
--        char * tail;
-+        xmlrpc_env env;
--        errno = 0;
--        i = strtoll(str, &tail, 10);
-+        xmlrpc_env_init(&env);
--        if (errno == ERANGE)
--            setParseFault(envP, "<i8> XML element value '%s' represents a "
--                          "number beyond the range that "
--                          "XML-RPC allows (%d - %d)", str,
--                          XMLRPC_INT64_MIN, XMLRPC_INT64_MAX);
--        else if (errno != 0)
--            setParseFault(envP, "unexpected error parsing <i8> XML element "
--                          "value '%s'.  strtoll() failed with errno %d (%s)",
--                          str, errno, strerror(errno));
--        else {
--            /* Look for out-of-range errors which didn't produce ERANGE. */
--            if (i < XMLRPC_INT64_MIN)
--                setParseFault(envP, "<i8> value %d is below the range allowed "
--                           "by XML-RPC (minimum is %d)",
--                           i, XMLRPC_INT64_MIN);
--            else if (i > XMLRPC_INT64_MAX)
--                setParseFault(envP, "<i8> value %d is above the range allowed "
--                              "by XML-RPC (maximum is %d)",
--                              i, XMLRPC_INT64_MAX);
--            else {
--                if (tail[0] != '\0')
--                    setParseFault(envP,
--                                  "<i8> value '%s' contains non-numerical "
--                                  "junk: '%s'", str, tail);
--                else
--                    *valuePP = xmlrpc_i8_new(envP, i);
--            }
--        }
-+        xmlrpc_parse_int64(&env, str, &i);
-+
-+        if (env.fault_occurred)
-+            setParseFault(envP, "<i8> XML element value '%s' is invalid "
-+                          "because it does not represent "
-+                          "a 64 bit integer.  %s", env.fault_string);
-+        else
-+            *valuePP = xmlrpc_i8_new(envP, i);
-+
-+        xmlrpc_env_clean(&env);
-     }
- }
-@@ -640,33 +623,39 @@ parseSimpleValueCdata(xmlrpc_env *    const envP,
-        UTF-8 multibyte sequences or NUL characters.  So will most of the
-        others.
--       The "ex.XXX" element names are what the Apache XML-RPC facility
--       uses: http://ws.apache.org/xmlrpc/types.html.  i1 and i2 are just
--       from my imagination.
-+       The "ex:XXX" element names are what the Apache XML-RPC facility
-+       uses: http://ws.apache.org/xmlrpc/types.html.  (Technically, it
-+       isn't "ex" but an arbitrary prefix that identifies a namespace
-+       declared earlier in the XML document -- this is an XML thing.
-+       But we aren't nearly sophisticated enough to use real XML
-+       namespaces, so we exploit the fact that XML-RPC actually uses
-+       "ex").
-+
-+       "i1" and "i2" are just from my imagination.
-     */
-     if (xmlrpc_streq(elementName, "int")   ||
-         xmlrpc_streq(elementName, "i4")    ||
-         xmlrpc_streq(elementName, "i1")    ||
-         xmlrpc_streq(elementName, "i2")    ||
--        xmlrpc_streq(elementName, "ex.i1") ||
--        xmlrpc_streq(elementName, "ex.i2"))
-+        xmlrpc_streq(elementName, "ex:i1") ||
-+        xmlrpc_streq(elementName, "ex:i2"))
-         parseInt(envP, cdata, valuePP);
-     else if (xmlrpc_streq(elementName, "boolean"))
-         parseBoolean(envP, cdata, valuePP);
-     else if (xmlrpc_streq(elementName, "double"))
-         parseDouble(envP, cdata, valuePP);
-     else if (xmlrpc_streq(elementName, "dateTime.iso8601"))
--        *valuePP = xmlrpc_datetime_new_str(envP, cdata);
-+        xmlrpc_parseDatetime(envP, cdata, valuePP);
-     else if (xmlrpc_streq(elementName, "string"))
-         *valuePP = xmlrpc_string_new_lp(envP, cdataLength, cdata);
-     else if (xmlrpc_streq(elementName, "base64"))
-         parseBase64(envP, cdata, cdataLength, valuePP);
-     else if (xmlrpc_streq(elementName, "nil") ||
--             xmlrpc_streq(elementName, "ex.nil"))
-+             xmlrpc_streq(elementName, "ex:nil"))
-         *valuePP = xmlrpc_nil_new(envP);
-     else if (xmlrpc_streq(elementName, "i8") ||
--             xmlrpc_streq(elementName, "ex.i8"))
-+             xmlrpc_streq(elementName, "ex:i8"))
-         parseI8(envP, cdata, valuePP);
-     else
-         setParseFault(envP, "Unknown value type -- XML element is named "
-@@ -680,13 +669,13 @@ parseSimpleValue(xmlrpc_env *    const envP,
-                  xml_element *   const elemP,
-                  xmlrpc_value ** const valuePP) {
-     
--    unsigned int const childCount = xml_element_children_size(elemP);
-+    size_t childCount = xml_element_children_size(elemP);
-                     
-     if (childCount > 0)
-         setParseFault(envP, "The child of a <value> element "
-                       "is neither <array> nor <struct>, "
-                       "but has %u child elements of its own.",
--                      childCount);
-+                      (unsigned int)childCount);
-     else {
-         const char * const elemName  = xml_element_name(elemP);
-         const char * const cdata     = xml_element_cdata(elemP);
-@@ -724,7 +713,7 @@ xmlrpc_parseValue(xmlrpc_env *    const envP,
-                           "<%s> element where <value> expected",
-                           xml_element_name(elemP));
-         else {
--            unsigned int const childCount = xml_element_children_size(elemP);
-+            size_t const childCount = xml_element_children_size(elemP);
-             if (childCount == 0) {
-                 /* We have no type element, so treat the value as a string. */
-@@ -733,7 +722,8 @@ xmlrpc_parseValue(xmlrpc_env *    const envP,
-                 *valuePP = xmlrpc_string_new_lp(envP, cdata_size, cdata);
-             } else if (childCount > 1)
-                 setParseFault(envP, "<value> has %u child elements.  "
--                              "Only zero or one make sense.", childCount);
-+                              "Only zero or one make sense.",
-+                              (unsigned int)childCount);
-             else {
-                 /* We should have a type tag inside our value tag. */
-                 xml_element * const childP = xml_element_children(elemP)[0];
-@@ -749,3 +739,6 @@ xmlrpc_parseValue(xmlrpc_env *    const envP,
-         }
-     }
- }
-+
-+
-+
-diff --git a/libs/xmlrpc-c/src/registry.c b/libs/xmlrpc-c/src/registry.c
-index e7eddd3..b67944a 100644
---- a/libs/xmlrpc-c/src/registry.c
-+++ b/libs/xmlrpc-c/src/registry.c
-@@ -36,6 +36,19 @@ unsigned int const xmlrpc_server_version_minor = XMLRPC_VERSION_MINOR;
- unsigned int const xmlrpc_server_version_point = XMLRPC_VERSION_POINT;
-+
-+void
-+xmlrpc_server_version(unsigned int * const majorP,
-+                      unsigned int * const minorP,
-+                      unsigned int * const pointP) {
-+
-+    *majorP = XMLRPC_VERSION_MAJOR;
-+    *minorP = XMLRPC_VERSION_MINOR;
-+    *pointP = XMLRPC_VERSION_POINT;
-+}
-+
-+
-+
- xmlrpc_registry *
- xmlrpc_registry_new(xmlrpc_env * const envP) {
-@@ -86,7 +99,8 @@ registryAddMethod(xmlrpc_env *      const envP,
-                   xmlrpc_method2          method2,
-                   const char *      const signatureString,
-                   const char *      const help,
--                  void *            const userData) {
-+                  void *            const userData,
-+                  size_t            const stackSize) {
-     const char * const helpString =
-         help ? help : "No help is available for this method.";
-@@ -99,7 +113,7 @@ registryAddMethod(xmlrpc_env *      const envP,
-     XMLRPC_ASSERT(method1 != NULL || method2 != NULL);
-     xmlrpc_methodCreate(envP, method1, method2, userData,
--                        signatureString, helpString, &methodP);
-+                        signatureString, helpString, stackSize, &methodP);
-     if (!envP->fault_occurred) {
-         xmlrpc_methodListAdd(envP, registryP->methodListP, methodName,
-@@ -126,7 +140,7 @@ xmlrpc_registry_add_method_w_doc(
-     XMLRPC_ASSERT(host == NULL);
-     registryAddMethod(envP, registryP, methodName, method, NULL,
--                      signatureString, help, serverInfo);
-+                      signatureString, help, serverInfo, 0);
- }
-@@ -156,7 +170,21 @@ xmlrpc_registry_add_method2(xmlrpc_env *      const envP,
-                             void *            const serverInfo) {
-     registryAddMethod(envP, registryP, methodName, NULL, method,
--                      signatureString, help, serverInfo);
-+                      signatureString, help, serverInfo, 0);
-+}
-+
-+
-+
-+void
-+xmlrpc_registry_add_method3(
-+    xmlrpc_env *                       const envP,
-+    xmlrpc_registry *                  const registryP,
-+    const struct xmlrpc_method_info3 * const infoP) {
-+
-+    registryAddMethod(envP, registryP, infoP->methodName, NULL,
-+                      infoP->methodFunction,
-+                      infoP->signatureString, infoP->help, infoP->serverInfo,
-+                      infoP->stackSize);
- }
-@@ -182,6 +210,43 @@ xmlrpc_registry_set_default_method(
-+/* This is our guess at what a method function requires when the user
-+   doesn't say.
-+*/
-+#define METHOD_FUNCTION_STACK 128*1024
-+
-+
-+
-+static size_t
-+methodStackSize(const xmlrpc_methodInfo * const methodP) {
-+
-+    return methodP->stackSize ==
-+        0 ? METHOD_FUNCTION_STACK : methodP->stackSize;
-+}
-+
-+
-+
-+size_t
-+xmlrpc_registry_max_stackSize(xmlrpc_registry * const registryP) {
-+/*----------------------------------------------------------------------------
-+   Return the maximum amount of stack required by the methods in registry
-+   *registryP.
-+
-+   If there are no methods, return 0.
-+-----------------------------------------------------------------------------*/
-+    xmlrpc_methodNode * p;
-+    size_t stackSize;
-+
-+    for (p = registryP->methodListP->firstMethodP, stackSize = 0;
-+         p;
-+         p = p->nextP) {
-+        
-+        stackSize = MAX(stackSize, methodStackSize(p->methodP));
-+    }
-+    return stackSize;
-+}
-+
-+
- void 
- xmlrpc_registry_set_preinvoke_method(
-diff --git a/libs/xmlrpc-c/src/system_method.c b/libs/xmlrpc-c/src/system_method.c
-index e1f77c0..ad13878 100644
---- a/libs/xmlrpc-c/src/system_method.c
-+++ b/libs/xmlrpc-c/src/system_method.c
-@@ -287,6 +287,64 @@ static struct systemMethodReg const methodListMethods = {
- /*=========================================================================
-+  system.methodExist
-+==========================================================================*/
-+
-+static void
-+determineMethodExistence(xmlrpc_env *      const envP,
-+                         const char *      const methodName,
-+                         xmlrpc_registry * const registryP,
-+                         xmlrpc_value **   const existsPP) {
-+
-+    xmlrpc_methodInfo * methodP;
-+
-+    xmlrpc_methodListLookupByName(registryP->methodListP, methodName,
-+                                  &methodP);
-+
-+    *existsPP = xmlrpc_bool_new(envP, !!methodP);
-+}
-+    
-+
-+
-+static xmlrpc_value *
-+system_methodExist(xmlrpc_env *   const envP,
-+                   xmlrpc_value * const paramArrayP,
-+                   void *         const serverInfo,
-+                   void *         const callInfo ATTR_UNUSED) {
-+
-+    xmlrpc_registry * const registryP = serverInfo;
-+
-+    xmlrpc_value * retvalP;
-+    
-+    const char * methodName;
-+
-+    XMLRPC_ASSERT_ENV_OK(envP);
-+    XMLRPC_ASSERT_VALUE_OK(paramArrayP);
-+    XMLRPC_ASSERT_PTR_OK(serverInfo);
-+
-+    xmlrpc_decompose_value(envP, paramArrayP, "(s)", &methodName);
-+
-+    if (!envP->fault_occurred) {
-+        determineMethodExistence(envP, methodName, registryP, &retvalP);
-+
-+        xmlrpc_strfree(methodName);
-+    }
-+
-+    return retvalP;
-+}
-+
-+
-+
-+static struct systemMethodReg const methodMethodExist = {
-+    "system.methodExist",
-+    &system_methodExist,
-+    "s:b",
-+    "Tell whether a method by a specified name exists on this server",
-+};
-+
-+
-+
-+/*=========================================================================
-   system.methodHelp
- =========================================================================*/
-@@ -327,7 +385,7 @@ system_methodHelp(xmlrpc_env *   const envP,
-     XMLRPC_ASSERT_ENV_OK(envP);
-     XMLRPC_ASSERT_VALUE_OK(paramArrayP);
-     XMLRPC_ASSERT_PTR_OK(serverInfo);
--
-+    
-     xmlrpc_decompose_value(envP, paramArrayP, "(s)", &methodName);
-     if (!envP->fault_occurred) {
-@@ -338,9 +396,9 @@ system_methodHelp(xmlrpc_env *   const envP,
-                 "for security reasons");
-         else
-             getHelpString(envP, methodName, registryP, &retvalP);
--    }
--    xmlrpc_strfree(methodName);
-+        xmlrpc_strfree(methodName);
-+    }
-     return retvalP;
- }
-@@ -409,8 +467,8 @@ buildSignatureValue(xmlrpc_env *              const envP,
-     if (envP->fault_occurred)
-         xmlrpc_DECREF(sigValueP);
--    else
--        *sigValuePP = sigValueP;
-+
-+    *sigValuePP = sigValueP;
- }
-                     
-@@ -471,6 +529,15 @@ getSignatureList(xmlrpc_env *      const envP,
-+/* Microsoft Visual C in debug mode produces code that complains about
-+   returning an undefined value from system_methodSignature().  It's a bogus
-+   complaint, because this function is defined to return nothing meaningful
-+   those cases.  So we disable the check.
-+*/
-+#pragma runtime_checks("u", off)
-+
-+
-+
- static xmlrpc_value *
- system_methodSignature(xmlrpc_env *   const envP,
-                        xmlrpc_value * const paramArrayP,
-@@ -487,8 +554,6 @@ system_methodSignature(xmlrpc_env *   const envP,
-     XMLRPC_ASSERT_VALUE_OK(paramArrayP);
-     XMLRPC_ASSERT_PTR_OK(serverInfo);
--    retvalP = NULL;  /* quiet compiler unset variable warning */
--
-     xmlrpc_env_init(&env);
-     /* Turn our arguments into something more useful. */
-@@ -522,10 +587,14 @@ system_methodSignature(xmlrpc_env *   const envP,
-+#pragma runtime_checks("u", restore)
-+
-+
-+
- static struct systemMethodReg const methodMethodSignature = {
-     "system.methodSignature",
-     &system_methodSignature,
--    "s:s",
-+    "A:s",
-     "Given the name of a method, return an array of legal signatures. "
-     "Each signature is an array of strings.  The first item of each signature "
-     "is the return type, and any others items are parameter types.",
-@@ -556,8 +625,6 @@ system_shutdown(xmlrpc_env *   const envP,
-     xmlrpc_env_init(&env);
--    retvalP = NULL;  /* quiet compiler warning */
--
-     /* Turn our arguments into something more useful. */
-     xmlrpc_decompose_value(&env, paramArrayP, "(s)", &comment);
-     if (env.fault_occurred)
-@@ -607,9 +674,9 @@ static struct systemMethodReg const methodShutdown = {
- =========================================================================*/
- static void
--getCapabilities(xmlrpc_env *      const envP,
--                xmlrpc_registry * const registryP ATTR_UNUSED,
--                xmlrpc_value **   const capabilitiesPP) {
-+constructCapabilities(xmlrpc_env *      const envP,
-+                      xmlrpc_registry * const registryP ATTR_UNUSED,
-+                      xmlrpc_value **   const capabilitiesPP) {
-     *capabilitiesPP =
-         xmlrpc_build_value(
-@@ -648,12 +715,13 @@ system_capabilities(xmlrpc_env *   const envP,
-             envP, XMLRPC_INDEX_ERROR,
-             "There are no parameters.  You supplied %u", paramCount);
-     else
--        getCapabilities(envP, registryP, &retvalP);
-+        constructCapabilities(envP, registryP, &retvalP);
-     return retvalP;
- }
-+
- static struct systemMethodReg const methodCapabilities = {
-     "system.capabilities",
-     &system_capabilities,
-@@ -664,6 +732,72 @@ static struct systemMethodReg const methodCapabilities = {
-+/*=========================================================================
-+  system.getCapabilities
-+=========================================================================*/
-+
-+/* This implements a standard.
-+   See http://tech.groups.yahoo.com/group/xml-rpc/message/2897 .
-+*/
-+
-+static void
-+listCapabilities(xmlrpc_env *      const envP,
-+                 xmlrpc_registry * const registryP ATTR_UNUSED,
-+                 xmlrpc_value **   const capabilitiesPP) {
-+
-+    *capabilitiesPP =
-+        xmlrpc_build_value(
-+            envP, "{s:{s:s,s:i}}",
-+            "introspect",
-+              "specUrl",
-+                "http://xmlrpc-c.sourceforge.net/xmlrpc-c/introspection.html",
-+              "specVersion",
-+                 1
-+            );
-+}
-+
-+
-+
-+static xmlrpc_value *
-+system_getCapabilities(xmlrpc_env *   const envP,
-+                       xmlrpc_value * const paramArrayP,
-+                       void *         const serverInfo,
-+                       void *         const callInfo ATTR_UNUSED) {
-+    
-+    xmlrpc_registry * const registryP = serverInfo;
-+
-+    xmlrpc_value * retvalP;
-+    
-+    unsigned int paramCount;
-+
-+    XMLRPC_ASSERT_ENV_OK(envP);
-+    XMLRPC_ASSERT_VALUE_OK(paramArrayP);
-+    XMLRPC_ASSERT_PTR_OK(serverInfo);
-+
-+    paramCount = xmlrpc_array_size(envP, paramArrayP);
-+
-+    if (paramCount > 0)
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_INDEX_ERROR,
-+            "There are no parameters.  You supplied %u", paramCount);
-+    else
-+        listCapabilities(envP, registryP, &retvalP);
-+
-+    return retvalP;
-+}
-+
-+
-+
-+static struct systemMethodReg const methodGetCapabilities = {
-+    "system.getCapabilities",
-+    &system_getCapabilities,
-+    "S:",
-+    "Return the list of standard capabilities of XML-RPC server.  "
-+    "See http://tech.groups.yahoo.com/group/xml-rpc/message/2897"
-+};
-+
-+
-+
- /*============================================================================
-   Installer of system methods
- ============================================================================*/
-@@ -699,12 +833,15 @@ xmlrpc_installSystemMethods(xmlrpc_env *      const envP,
-     if (!envP->fault_occurred)
-         registerSystemMethod(envP, registryP, methodListMethods);
--    if (!envP->fault_occurred) 
--        registerSystemMethod(envP, registryP, methodMethodSignature);
-+    if (!envP->fault_occurred)
-+        registerSystemMethod(envP, registryP, methodMethodExist);
-     if (!envP->fault_occurred)
-         registerSystemMethod(envP, registryP, methodMethodHelp);
-+    if (!envP->fault_occurred) 
-+        registerSystemMethod(envP, registryP, methodMethodSignature);
-+
-     if (!envP->fault_occurred)
-         registerSystemMethod(envP, registryP, methodMulticall);
-@@ -713,6 +850,9 @@ xmlrpc_installSystemMethods(xmlrpc_env *      const envP,
-     if (!envP->fault_occurred)
-         registerSystemMethod(envP, registryP, methodCapabilities);
-+
-+    if (!envP->fault_occurred)
-+        registerSystemMethod(envP, registryP, methodGetCapabilities);
- }
-diff --git a/libs/xmlrpc-c/src/test/.cvsignore b/libs/xmlrpc-c/src/test/.cvsignore
-deleted file mode 100644
-index b5e32d3..0000000
---- a/libs/xmlrpc-c/src/test/.cvsignore
-+++ /dev/null
-@@ -1,3 +0,0 @@
--Makefile
--test
--cgitest1
-diff --git a/libs/xmlrpc-c/src/test/Makefile b/libs/xmlrpc-c/src/test/Makefile
-index 946a377..0215902 100644
---- a/libs/xmlrpc-c/src/test/Makefile
-+++ b/libs/xmlrpc-c/src/test/Makefile
-@@ -19,7 +19,7 @@ LDADD_CGI_SERVER = \
- default: all
--INCLUDES = -I$(BLDDIR) -I $(SRCDIR)/include -I$(SRCDIR)/lib/util/include \
-+INCLUDES = -I$(BLDDIR) -Isrcdir/include -Isrcdir/lib/util/include \
- PROGS = test cgitest1
-@@ -28,6 +28,7 @@ all: $(PROGS)
- LDFLAGS = $(LADD)
- TEST_OBJS = \
-+  testtool.o \
-   test.o \
-   abyss.o \
-   cgi.o \
-@@ -37,6 +38,7 @@ TEST_OBJS = \
-   serialize_value.o \
-   server_abyss.o \
-   value.o \
-+  value_datetime.o \
-   xml_data.o \
- ifeq ($(MUST_BUILD_CLIENT),yes)
-@@ -49,6 +51,11 @@ endif
- include $(SRCDIR)/common.mk
-+# This 'common.mk' dependency makes sure the symlinks get built before
-+# this make file is used for anything.
-+
-+$(SRCDIR)/common.mk: srcdir blddir
-+
- test: \
-   $(XMLRPC_C_CONFIG) \
-   $(TEST_OBJS) $(LIBXMLRPC_A) $(LIBXMLRPC_UTIL_A) \
-@@ -59,16 +66,16 @@ test: \
-       $(CCLD) -o $@ $(LDFLAGS) \
-           $(TEST_OBJS) $(LDADD_CLIENT) $(LDADD_ABYSS_SERVER) $(CASPRINTF)
--cgitest1:%:%.o $(LIBXMLRPC_SERVER_A) $(LIBXMLRPC_SERVER_CGI_A) \
--  $(LIBXMLRPC_A) $(LIBXMLRPC_UTIL_A) $(LIBXMLRPC_XML)
--      $(CCLD) -o $@ $< $(LDFLAGS) $(LDADD_CGI_SERVER)
-+CGITEST1_OBJS = cgitest1.o testtool.o
--CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
-+cgitest1: $(CGITEST1_OBJS) $(LIBXMLRPC_SERVER_A) $(LIBXMLRPC_SERVER_CGI_A) \
-+  $(LIBXMLRPC_A) $(LIBXMLRPC_UTIL_A) $(LIBXMLRPC_XML)
-+      $(CCLD) -o $@ $(CGITEST1_OBJS) $(LDFLAGS) $(LDADD_CGI_SERVER)
- OBJS = $(TEST_OBJS) cgitest1.o
- $(OBJS):%.o:%.c
--      $(CC) -c $(INCLUDES) $(CFLAGS) $<
-+      $(CC) -c $(INCLUDES) $(CFLAGS_ALL) $<
- # Note the difference between 'check' and 'runtests'.  'check' means to check
- # our own correctness.  'runtests' means to run the tests that check our
-@@ -94,4 +101,4 @@ distclean: clean distclean-common
- .PHONY: dep
- dep: dep-common
--include Makefile.depend
-+include depend.mk
-diff --git a/libs/xmlrpc-c/src/test/abyss.c b/libs/xmlrpc-c/src/test/abyss.c
-index 1e39f51..b86eaa8 100644
---- a/libs/xmlrpc-c/src/test/abyss.c
-+++ b/libs/xmlrpc-c/src/test/abyss.c
-@@ -15,11 +15,12 @@
- #include "xmlrpc_config.h"
- #include "int.h"
-+#include "casprintf.h"
- #include "xmlrpc-c/base.h"
- #include "xmlrpc-c/server.h"
- #include "xmlrpc-c/abyss.h"
--#include "test.h"
-+#include "testtool.h"
- #include "abyss.h"
-@@ -87,7 +88,7 @@ chanSwitchCreate(uint16_t       const portNumber,
- static void
- channelCreateFd(int const fd,
--                TChannel ** const channelPP,
-+                TChannel **   const channelPP,
-                 const char ** const errorP) {
- #ifdef WIN32
-@@ -104,7 +105,7 @@ channelCreateFd(int const fd,
- static void
- testChanSwitchOsSocket(void) {
--    int rc;
-+    XMLRPC_SOCKET rc;
-     rc = socket(AF_INET, SOCK_STREAM, 0);
-     if (rc < 0) {
-@@ -165,7 +166,7 @@ testChanSwitch(void) {
- static void
- testChannel(void) {
--    int rc;
-+    XMLRPC_SOCKET rc;
-     rc = socket(AF_INET, SOCK_STREAM, 0);
-     if (rc < 0) {
-@@ -183,6 +184,8 @@ testChannel(void) {
-         TEST(error);
-         TEST(strstr(error, "not in connected"));
-+
-+        strfree(error);
-     }
- }
-@@ -191,7 +194,7 @@ testChannel(void) {
- static void
- testOsSocket(void) {
--    int rc;
-+    XMLRPC_SOCKET rc;
-     rc = socket(AF_INET, SOCK_STREAM, 0);
-     if (rc < 0) {
-diff --git a/libs/xmlrpc-c/src/test/cgi.c b/libs/xmlrpc-c/src/test/cgi.c
-index 52c0c08..18dfa9b 100644
---- a/libs/xmlrpc-c/src/test/cgi.c
-+++ b/libs/xmlrpc-c/src/test/cgi.c
-@@ -5,7 +5,7 @@
- #include "xmlrpc_config.h"
--#include "test.h"
-+#include "testtool.h"
- #include "cgi.h"
- static const char cgiResponse1[] =
-diff --git a/libs/xmlrpc-c/src/test/cgitest1.c b/libs/xmlrpc-c/src/test/cgitest1.c
-index 7ce6909..ce758b1 100644
---- a/libs/xmlrpc-c/src/test/cgitest1.c
-+++ b/libs/xmlrpc-c/src/test/cgitest1.c
-@@ -16,7 +16,7 @@
- #include "xmlrpc-c/server.h"
- #include "xmlrpc-c/server_cgi.h"
--#include "test.h"
-+#include "testtool.h"
- int total_tests;
-diff --git a/libs/xmlrpc-c/src/test/client.c b/libs/xmlrpc-c/src/test/client.c
-index 140ffc0..e3b8bc7 100644
---- a/libs/xmlrpc-c/src/test/client.c
-+++ b/libs/xmlrpc-c/src/test/client.c
-@@ -10,10 +10,30 @@
- #include "xmlrpc-c/client.h"
- #include "xmlrpc-c/transport.h"
--#include "test.h"
-+#include "bool.h"
-+#include "testtool.h"
- #include "client.h"
-+
-+static void
-+testVersion(void) {
-+
-+    unsigned int major, minor, point;
-+
-+    xmlrpc_client_version(&major, &minor, &point);
-+
-+#ifndef WIN32    
-+    /* xmlrpc_client_version_major, etc. are not exported from a Windows DLL */
-+
-+    TEST(major = xmlrpc_client_version_major);
-+    TEST(minor = xmlrpc_client_version_minor);
-+    TEST(point = xmlrpc_client_version_point);
-+#endif
-+}
-+
-+
-+
- static void
- testGlobalConst(void) {
-@@ -38,6 +58,22 @@ testGlobalConst(void) {
-+static xmlrpc_progress_fn myProgress;
-+
-+static void
-+myProgress(void *                      const userHandle,
-+           struct xmlrpc_progress_data const data) {
-+
-+    printf("Progress of %p: %f, %f, %f, %f\n",
-+           userHandle,
-+           data.call.total,
-+           data.call.now,
-+           data.response.total,
-+           data.response.now);
-+}
-+
-+
-+
- static void
- testCreateCurlParms(void) {
-     
-@@ -78,6 +114,33 @@ testCreateCurlParms(void) {
-     TEST_NO_FAULT(&env);
-     xmlrpc_client_destroy(clientP);
-+    curlTransportParms1.ssl_cert          = NULL;
-+    curlTransportParms1.sslcerttype       = NULL;
-+    curlTransportParms1.sslcertpasswd     = NULL;
-+    curlTransportParms1.sslkey            = NULL;
-+    curlTransportParms1.sslkeytype        = NULL;
-+    curlTransportParms1.sslkeypasswd      = NULL;
-+    curlTransportParms1.sslengine         = NULL;
-+    curlTransportParms1.sslengine_default = false;
-+    curlTransportParms1.sslversion        = XMLRPC_SSLVERSION_DEFAULT;
-+    curlTransportParms1.cainfo            = NULL;
-+    curlTransportParms1.capath            = NULL;
-+    curlTransportParms1.randomfile        = NULL;
-+    curlTransportParms1.egdsocket         = NULL;
-+    curlTransportParms1.ssl_cipher_list   = NULL;
-+    curlTransportParms1.timeout           = 0;
-+    curlTransportParms1.dont_advertise    = 1;
-+    curlTransportParms1.proxy             = NULL;
-+    curlTransportParms1.proxy_port        = 0;
-+    curlTransportParms1.proxy_type        = XMLRPC_HTTPPROXY_HTTP;
-+    curlTransportParms1.proxy_auth        = XMLRPC_HTTPAUTH_NONE;
-+    clientParms1.transportparm_size = XMLRPC_CXPSIZE(proxy_auth);
-+    xmlrpc_client_create(&env, 0, "testprog", "1.0",
-+                         &clientParms1, XMLRPC_CPSIZE(transportparm_size),
-+                         &clientP);
-+    TEST_NO_FAULT(&env);
-+    xmlrpc_client_destroy(clientP);
-+
-     xmlrpc_env_clean(&env);
- #endif  /* MUST_BUILD_CURL_CLIENT */
- }
-@@ -113,6 +176,8 @@ testCreateSeparateXport(void) {
-                          &clientP);
-     TEST_NO_FAULT(&env);
-+    xmlrpc_client_destroy(clientP);
-+
-     clientParms1.transport = "curl";
-     clientParms1.transportparmsP = &curlTransportParms1;
-     clientParms1.transportparm_size = 0;
-@@ -124,6 +189,8 @@ testCreateSeparateXport(void) {
-                          &clientP);
-     TEST_NO_FAULT(&env);
-+    xmlrpc_client_destroy(clientP);
-+
-     clientParms1.transportP = transportP;
-     xmlrpc_client_create(&env, 0, "", "",
-                          &clientParms1, XMLRPC_CPSIZE(transportP),
-@@ -150,6 +217,8 @@ testCreateSeparateXport(void) {
-     TEST_NO_FAULT(&env);
-+    xmlrpc_client_destroy(clientP);
-+
-     xmlrpc_curl_transport_ops.destroy(transportP);
-     xmlrpc_env_clean(&env);
-@@ -202,8 +271,9 @@ testCreateDestroy(void) {
-     clientParms1.transportOpsP = NULL;
-     clientParms1.transportP    = NULL;
-     clientParms1.dialect       = xmlrpc_dialect_apache;
-+    clientParms1.progressFn    = &myProgress;
-     xmlrpc_client_create(&env, 0, "testprog", "1.0",
--                         &clientParms1, XMLRPC_CPSIZE(dialect),
-+                         &clientParms1, XMLRPC_CPSIZE(progressFn),
-                          &clientP);
-     TEST_NO_FAULT(&env);
-     xmlrpc_client_destroy(clientP);
-@@ -420,9 +490,11 @@ test_client(void) {
-     printf("Running client tests.");
-+    testVersion();
-     testGlobalConst();
-     testCreateDestroy();
-     testInitCleanup();
-+    printf("\n");
-     testServerInfo();
-     testSynchCall();
-diff --git a/libs/xmlrpc-c/src/test/method_registry.c b/libs/xmlrpc-c/src/test/method_registry.c
-index da8d304..91fa700 100644
---- a/libs/xmlrpc-c/src/test/method_registry.c
-+++ b/libs/xmlrpc-c/src/test/method_registry.c
-@@ -10,7 +10,7 @@
- #include "xmlrpc-c/base.h"
- #include "xmlrpc-c/server.h"
--#include "test.h"
-+#include "testtool.h"
- #include "xml_data.h"
- #include "method_registry.h"
-@@ -26,6 +26,25 @@
- static const char * const barHelp = "This is the help for Method test.bar.";
-+
-+static void
-+testVersion(void) {
-+
-+    unsigned int major, minor, point;
-+
-+    xmlrpc_server_version(&major, &minor, &point);
-+
-+#ifndef WIN32    
-+    /* xmlrpc_server_version_major, etc. are not exported from a Windows DLL */
-+
-+    TEST(major = xmlrpc_server_version_major);
-+    TEST(minor = xmlrpc_server_version_minor);
-+    TEST(point = xmlrpc_server_version_point);
-+#endif
-+}
-+
-+
-+
- static xmlrpc_value *
- test_foo(xmlrpc_env *   const envP,
-          xmlrpc_value * const paramArrayP,
-@@ -297,6 +316,8 @@ test_system_methodSignature(xmlrpc_registry * const registryP) {
-     TEST_NO_FAULT(&env);
-     TEST(streq(type0, "int"));
-     TEST(streq(type1, "int"));
-+    strfree(type0);
-+    strfree(type1);
-     xmlrpc_DECREF(resultP);
-     xmlrpc_DECREF(argArrayP);
-@@ -310,7 +331,7 @@ test_signature(void) {
-     xmlrpc_env env;
-     xmlrpc_registry * registryP;
--    uint i;
-+    unsigned int i;
-     xmlrpc_env_init(&env);
-@@ -409,16 +430,19 @@ static const char * const expectedMethodName[] = {
-    The list we expect back from system.listMethods.
- -----------------------------------------------------------------------------*/
-     "system.listMethods",
--    "system.methodSignature",
-+    "system.methodExist",
-     "system.methodHelp",
-+    "system.methodSignature",
-     "system.multicall",
-     "system.shutdown",
-     "system.capabilities",
-+    "system.getCapabilities",
-     "test.foo",
-     "test.bar"
- };
-+
- static void
- test_system_listMethods(xmlrpc_registry * const registryP) {
- /*----------------------------------------------------------------------------
-@@ -427,7 +451,7 @@ test_system_listMethods(xmlrpc_registry * const registryP) {
-     xmlrpc_env env;
-     xmlrpc_value * resultP;
-     xmlrpc_value * argArrayP;
--    const char * methodName[8];
-+    const char * methodName[ARRAY_SIZE(expectedMethodName)];
-     unsigned int size;
-     unsigned int i;
-@@ -449,13 +473,16 @@ test_system_listMethods(xmlrpc_registry * const registryP) {
-     TEST(size == ARRAY_SIZE(expectedMethodName));
--    xmlrpc_decompose_value(&env, resultP, "(ssssssss)",
-+    xmlrpc_decompose_value(&env, resultP, "(ssssssssss)",
-                            &methodName[0], &methodName[1],
-                            &methodName[2], &methodName[3],
-                            &methodName[4], &methodName[5],
--                           &methodName[6], &methodName[7]);
-+                           &methodName[6], &methodName[7],
-+                           &methodName[8], &methodName[9]);
-+
-+    TEST_NO_FAULT(&env);
--    for (i = 0; i < ARRAY_SIZE(methodName); ++i) {
-+    for (i = 0; i < ARRAY_SIZE(expectedMethodName); ++i) {
-         TEST(streq(methodName[i], expectedMethodName[i]));
-         strfree(methodName[i]);
-     }
-@@ -472,18 +499,70 @@ test_system_listMethods(xmlrpc_registry * const registryP) {
- static void
--test_system_methodHelp(xmlrpc_registry * const registryP) {
-+test_system_methodExist(xmlrpc_registry * const registryP) {
- /*----------------------------------------------------------------------------
--   Test system.methodHelp
-+   Test system.methodExist
- -----------------------------------------------------------------------------*/
-     xmlrpc_env env;
-     xmlrpc_value * resultP;
-     xmlrpc_value * argArrayP;
--    const char * helpString;
-+    xmlrpc_bool exists;
-     xmlrpc_env_init(&env);
--    printf("  Running system.methodHelp tests.");
-+    printf("  Running system.methodExist tests.");
-+
-+    argArrayP = xmlrpc_build_value(&env, "(s)", "test.foo");
-+    TEST_NO_FAULT(&env);
-+
-+    doRpc(&env, registryP, "system.methodExist", argArrayP, NULL, &resultP);
-+    TEST_NO_FAULT(&env);
-+
-+    TEST(xmlrpc_value_type(resultP) == XMLRPC_TYPE_BOOL);
-+
-+    xmlrpc_read_bool(&env, resultP, &exists);
-+    TEST_NO_FAULT(&env);
-+
-+    TEST(exists);
-+
-+    xmlrpc_DECREF(resultP);
-+
-+    xmlrpc_DECREF(argArrayP);
-+
-+
-+    argArrayP = xmlrpc_build_value(&env, "(s)", "nosuchmethod");
-+    TEST_NO_FAULT(&env);
-+
-+    doRpc(&env, registryP, "system.methodExist", argArrayP, NULL, &resultP);
-+    TEST_NO_FAULT(&env);
-+
-+    TEST(xmlrpc_value_type(resultP) == XMLRPC_TYPE_BOOL);
-+
-+    xmlrpc_read_bool(&env, resultP, &exists);
-+    TEST_NO_FAULT(&env);
-+
-+    TEST(!exists);
-+
-+    xmlrpc_DECREF(resultP);
-+
-+    xmlrpc_DECREF(argArrayP);
-+
-+    xmlrpc_env_clean(&env);
-+
-+    printf("\n");
-+}
-+
-+
-+
-+static void 
-+testNoHelp(xmlrpc_registry * const registryP) {
-+
-+    xmlrpc_env env;
-+    xmlrpc_value * resultP;
-+    xmlrpc_value * argArrayP;
-+    const char * helpString;
-+
-+    xmlrpc_env_init(&env);
-     argArrayP = xmlrpc_build_value(&env, "(s)", "test.foo");
-     TEST_NO_FAULT(&env);
-@@ -498,10 +577,26 @@ test_system_methodHelp(xmlrpc_registry * const registryP) {
-     TEST(streq(helpString, "No help is available for this method."));
-+    strfree(helpString);
-+
-     xmlrpc_DECREF(resultP);
-     xmlrpc_DECREF(argArrayP);
-+    xmlrpc_env_clean(&env);
-+}
-+
-+
-+
-+static void 
-+testExistentHelp(xmlrpc_registry * const registryP) {
-+
-+    xmlrpc_env env;
-+    xmlrpc_value * resultP;
-+    xmlrpc_value * argArrayP;
-+    const char * helpString;
-+
-+    xmlrpc_env_init(&env);
-     argArrayP = xmlrpc_build_value(&env, "(s)", "test.bar");
-     TEST_NO_FAULT(&env);
-@@ -516,11 +611,31 @@ test_system_methodHelp(xmlrpc_registry * const registryP) {
-     TEST(streq(helpString, barHelp));
-+    strfree(helpString);
-+
-     xmlrpc_DECREF(resultP);
-     xmlrpc_DECREF(argArrayP);
-     xmlrpc_env_clean(&env);
-+}
-+
-+
-+
-+static void
-+test_system_methodHelp(xmlrpc_registry * const registryP) {
-+/*----------------------------------------------------------------------------
-+   Test system.methodHelp
-+-----------------------------------------------------------------------------*/
-+    xmlrpc_env env;
-+
-+    xmlrpc_env_init(&env);
-+
-+    printf("  Running system.methodHelp tests.");
-+
-+    testNoHelp(registryP);
-+
-+    testExistentHelp(registryP);
-     printf("\n");
- }
-@@ -560,6 +675,53 @@ test_system_capabilities(xmlrpc_registry * const registryP) {
-     TEST(streq(facility, "xmlrpc-c"));
-     TEST(protocol_version == 2);
-+    strfree(facility);
-+
-+    xmlrpc_DECREF(resultP);
-+
-+    xmlrpc_DECREF(argArrayP);
-+
-+    xmlrpc_env_clean(&env);
-+
-+    printf("\n");
-+}
-+
-+
-+
-+static void
-+test_system_getCapabilities(xmlrpc_registry * const registryP) {
-+/*----------------------------------------------------------------------------
-+   Test system.getCapabilities
-+-----------------------------------------------------------------------------*/
-+    xmlrpc_env env;
-+    xmlrpc_value * resultP;
-+    xmlrpc_value * argArrayP;
-+    const char * specUrl;
-+    int specVersion;
-+
-+    xmlrpc_env_init(&env);
-+
-+    printf("  Running system.getCapabilities tests.");
-+
-+    argArrayP = xmlrpc_array_new(&env);
-+    TEST_NO_FAULT(&env);
-+
-+    doRpc(&env, registryP, "system.getCapabilities", argArrayP, NULL,
-+          &resultP);
-+    TEST_NO_FAULT(&env);
-+
-+    xmlrpc_decompose_value(&env, resultP, "{s:{s:s,s:i,*},*}",
-+                           "introspect",
-+                           "specUrl", &specUrl,
-+                           "specVersion", &specVersion);
-+    TEST_NO_FAULT(&env);
-+
-+    TEST(streq(specUrl,
-+               "http://xmlrpc-c.sourceforge.net/xmlrpc-c/introspection.html"));
-+    TEST(specVersion == 1);
-+
-+    strfree(specUrl);
-+
-     xmlrpc_DECREF(resultP);
-     xmlrpc_DECREF(argArrayP);
-@@ -629,11 +791,12 @@ test_system_multicall(xmlrpc_registry * const registryP) {
-     TEST_NO_FAULT(&env);    
-     TEST(foo1_result == 42);
-     TEST(bar_code == 123);
--    TEST(strcmp(bar_string, "Test fault") == 0);
-+    TEST(streq(bar_string, "Test fault"));
-     TEST(nosuch_code == XMLRPC_NO_SUCH_METHOD_ERROR);
-     TEST(foo2_result == 42);
-     xmlrpc_DECREF(multiP);
-     free(bar_string);
-+    free(nosuch_string);
-     
-     /* Now for some invalid multi calls */
-@@ -737,7 +900,7 @@ testCall(xmlrpc_registry * const registryP) {
-     doRpc(&env2, registryP, "test.bar", argArrayP, BAR_CALLINFO, &valueP);
-     TEST(env2.fault_occurred);
-     TEST(env2.fault_code == 123);
--    TEST(env2.fault_string && strcmp(env2.fault_string, "Test fault") == 0);
-+    TEST(env2.fault_string && streq(env2.fault_string, "Test fault"));
-     xmlrpc_env_clean(&env2);
-     /* Call a non-existant method and check the result. */
-@@ -813,11 +976,11 @@ test_apache_dialect(void) {
-     char const expectedResp[] =
-         XML_PROLOGUE
--        "<methodResponse>\r\n"
-+        "<methodResponse " XMLNS_APACHE ">\r\n"
-         "<params>\r\n"
-         "<param><value><array><data>\r\n"
--            "<value><ex.i8>8</ex.i8></value>\r\n"
--            "<value><ex.nil/></value>\r\n"
-+            "<value><ex:i8>8</ex:i8></value>\r\n"
-+            "<value><ex:nil/></value>\r\n"
-         "</data></array></value></param>\r\n"
-         "</params>\r\n"
-         "</methodResponse>\r\n";
-@@ -891,6 +1054,8 @@ test_method_registry(void) {
-     xmlrpc_env_init(&env);
-+    testVersion();
-+
-     printf("Running method registry tests.");
-     /* Create a new registry. */
-@@ -932,10 +1097,14 @@ test_method_registry(void) {
-     test_system_listMethods(registryP);
-+    test_system_methodExist(registryP);
-+
-     test_system_methodHelp(registryP);
-     test_system_capabilities(registryP);
-+    test_system_getCapabilities(registryP);
-+
-     test_signature();
-     test_disable_introspection();
-diff --git a/libs/xmlrpc-c/src/test/parse_xml.c b/libs/xmlrpc-c/src/test/parse_xml.c
-index ff98ab2..0f3237d 100644
---- a/libs/xmlrpc-c/src/test/parse_xml.c
-+++ b/libs/xmlrpc-c/src/test/parse_xml.c
-@@ -8,7 +8,7 @@
- #include "xmlrpc-c/base.h"
- #include "xmlrpc-c/xmlparser.h"
--#include "test.h"
-+#include "testtool.h"
- #include "xml_data.h"
- #include "parse_xml.h"
-@@ -74,7 +74,7 @@ char const xmldata[] =
-     "<param><value><i2>10</i2></value></param>\r\n"
-     "<param><value><i4>10</i4></value></param>\r\n"
-     "<param><value><i8>10</i8></value></param>\r\n"
--    "<param><value><ex.i8>10</ex.i8></value></param>\r\n"
-+    "<param><value><ex:i8>10</ex:i8></value></param>\r\n"
-     "<param><value><double>10</double></value></param>\r\n"
-     "<param><value><double>10.1</double></value></param>\r\n"
-     "<param><value><double>-10.1</double></value></param>\r\n"
-@@ -152,9 +152,12 @@ char const xmldata[] =
-     "<param><value><boolean>1</boolean></value></param>\r\n"
-     "<param><value><dateTime.iso8601>19980717T14:08:55</dateTime.iso8601>"
-        "</value></param>\r\n"
-+    "<param><value>"
-+       "<dateTime.iso8601>19980717T14:08:55.123456</dateTime.iso8601>"
-+       "</value></param>\r\n"
-     "<param><value><base64>YmFzZTY0IGRhdGE=</base64></value></param>\r\n"
-     "<param><value><nil/></value></param>\r\n"
--    "<param><value><ex.nil/></value></param>\r\n"
-+    "<param><value><ex:nil/></value></param>\r\n"
-     "</params>\r\n"
-     "</methodCall>\r\n";
-     
-@@ -164,7 +167,8 @@ char const xmldata[] =
-     int arraySize;
-     const char * str_hello;
-     xmlrpc_bool b_false, b_true;
--    const char * datetime;
-+    const char * datetime_sec;
-+    const char * datetime_usec;
-     unsigned char * b64_data;
-     size_t b64_len;
-@@ -177,24 +181,27 @@ char const xmldata[] =
-     arraySize = xmlrpc_array_size(&env, paramArrayP);
-     TEST_NO_FAULT(&env);
--    TEST(arraySize == 7);
-+    TEST(arraySize == 8);
-     xmlrpc_decompose_value(
--        &env, paramArrayP, "(sbb86nn)", 
--        &str_hello, &b_false, &b_true, &datetime, &b64_data, &b64_len);
-+        &env, paramArrayP, "(sbb886nn)", 
-+        &str_hello, &b_false, &b_true, &datetime_sec, &datetime_usec,
-+        &b64_data, &b64_len);
-     TEST_NO_FAULT(&env);
-     TEST(streq(str_hello, "hello"));
-     TEST(!b_false);
-     TEST(b_true);
--    TEST(streq(datetime, "19980717T14:08:55")); 
-+    TEST(streq(datetime_sec, "19980717T14:08:55")); 
-+    TEST(streq(datetime_usec, "19980717T14:08:55.123456")); 
-     TEST(b64_len == 11);
-     TEST(memcmp(b64_data, "base64 data", b64_len) == 0);
-     free(b64_data);
-     strfree(str_hello);
--    strfree(datetime);
-+    strfree(datetime_sec);
-+    strfree(datetime_usec);
-     xmlrpc_DECREF(paramArrayP);
-     strfree(methodName);
-@@ -496,7 +503,7 @@ testParseFaultResponse(void) {
- static void
--test_parse_xml_call(void) {
-+testParseXmlCall(void) {
-     xmlrpc_env env;
-     const char *method_name;
-@@ -547,6 +554,38 @@ test_parse_xml_call(void) {
-+static void
-+testParseXmlValue(void) {
-+
-+    const char * const xmlInt7 = "<value><int>7</int ></value>";
-+    const char * const xmlBadVal1 = "hello";
-+    const char * const xmlBadVal2 = "<junk/>";
-+
-+    xmlrpc_value * valueP;
-+
-+    xmlrpc_env env;
-+
-+    xmlrpc_env_init(&env);    
-+
-+    xmlrpc_parse_value_xml(&env, xmlInt7, strlen(xmlInt7), &valueP);
-+
-+    TEST_NO_FAULT(&env);
-+
-+    xmlrpc_DECREF(valueP);
-+
-+    xmlrpc_parse_value_xml(&env, xmlBadVal1, strlen(xmlBadVal1), &valueP);
-+    TEST_FAULT(&env, XMLRPC_PARSE_ERROR);
-+    xmlrpc_env_clean(&env);
-+
-+    xmlrpc_env_init(&env);
-+    xmlrpc_parse_value_xml(&env, xmlBadVal2, strlen(xmlBadVal2), &valueP);
-+    TEST_FAULT(&env, XMLRPC_PARSE_ERROR);
-+
-+    xmlrpc_env_clean(&env);    
-+}
-+
-+
-+
- void
- test_parse_xml(void) {
-@@ -557,7 +596,8 @@ test_parse_xml(void) {
-     testParseGoodResponse();
-     testParseFaultResponse();
-     testParseBadResponse();
--    test_parse_xml_call();
-+    testParseXmlCall();
-+    testParseXmlValue();
-     printf("\n");
-     printf("XML parsing tests done.\n");
- }
-diff --git a/libs/xmlrpc-c/src/test/req_out_of_order.xml b/libs/xmlrpc-c/src/test/req_out_of_order.xml
-deleted file mode 100644
-index 8b078a4..0000000
---- a/libs/xmlrpc-c/src/test/req_out_of_order.xml
-+++ /dev/null
-@@ -1,12 +0,0 @@
--<?xml version="1.0" encoding="UTF-8"?>
--<methodCall>
--  <params>
--    <param>
--      <value><int>2</int></value>
--    </param>
--    <param>
--      <value><int>2</int></value>
--    </param>
--  </params>
--  <methodName>add</methodName>
--</methodCall>
-diff --git a/libs/xmlrpc-c/src/test/req_value_name.xml b/libs/xmlrpc-c/src/test/req_value_name.xml
-deleted file mode 100644
-index b55d4f0..0000000
---- a/libs/xmlrpc-c/src/test/req_value_name.xml
-+++ /dev/null
-@@ -1,14 +0,0 @@
--<?xml version="1.0" encoding="UTF-8"?>
--<methodCall>
--  <methodName>foo</methodName>
--  <params>
--    <param>
--      <value><struct>
--        <member>
--          <value><i4>0</i4></value>
--          <name>child elements reversed!</name>
--        </member>
--      </struct></value>
--    </param>
--  </params>
--</methodCall>
-diff --git a/libs/xmlrpc-c/src/test/sample_add_call.xml b/libs/xmlrpc-c/src/test/sample_add_call.xml
-deleted file mode 100644
-index b11336a..0000000
---- a/libs/xmlrpc-c/src/test/sample_add_call.xml
-+++ /dev/null
-@@ -1,8 +0,0 @@
--<?xml version="1.0" encoding="UTF-8"?>\r
--<methodCall>\r
--<methodName>sample.add</methodName>\r
--<params>\r
--<param><value><i4>5</i4></value></param>\r
--<param><value><i4>7</i4></value></param>\r
--</params>\r
--</methodCall>\r
-diff --git a/libs/xmlrpc-c/src/test/serialize.c b/libs/xmlrpc-c/src/test/serialize.c
-index 74fe86c..275aa78 100644
---- a/libs/xmlrpc-c/src/test/serialize.c
-+++ b/libs/xmlrpc-c/src/test/serialize.c
-@@ -6,7 +6,7 @@
- #include "xmlrpc-c/base.h"
--#include "test.h"
-+#include "testtool.h"
- #include "xml_data.h"
- #include "girstring.h"
- #include "serialize_value.h"
-@@ -176,8 +176,8 @@ test_serialize_apache_value(void) {
-     char const serializedData[] =
-         "<value><array><data>\r\n"
-             "<value><i4>7</i4></value>\r\n"
--            "<value><ex.i8>8</ex.i8></value>\r\n"
--            "<value><ex.nil/></value>\r\n"
-+            "<value><ex:i8>8</ex:i8></value>\r\n"
-+            "<value><ex:nil/></value>\r\n"
-         "</data></array></value>";
-     xmlrpc_env env;
-@@ -214,7 +214,7 @@ test_serialize_apache_params(void) {
-     char const serializedData[] =
-         "<params>\r\n"
-             "<param><value><i4>7</i4></value></param>\r\n"
--            "<param><value><ex.i8>8</ex.i8></value></param>\r\n"
-+            "<param><value><ex:i8>8</ex:i8></value></param>\r\n"
-         "</params>\r\n";
-     xmlrpc_env env;
-@@ -251,9 +251,9 @@ test_serialize_apache_response(void) {
-     char const serializedData[] =
-         XML_PROLOGUE
--        "<methodResponse>\r\n"
-+        "<methodResponse " XMLNS_APACHE ">\r\n"
-         "<params>\r\n"
--        "<param><value><ex.i8>8</ex.i8></value></param>\r\n"
-+        "<param><value><ex:i8>8</ex:i8></value></param>\r\n"
-         "</params>\r\n"
-         "</methodResponse>\r\n";
-diff --git a/libs/xmlrpc-c/src/test/serialize_value.c b/libs/xmlrpc-c/src/test/serialize_value.c
-index 3a59253..a8d17a3 100644
---- a/libs/xmlrpc-c/src/test/serialize_value.c
-+++ b/libs/xmlrpc-c/src/test/serialize_value.c
-@@ -6,7 +6,7 @@
- #include "xmlrpc-c/base.h"
--#include "test.h"
-+#include "testtool.h"
- #include "girstring.h"
- #include "serialize_value.h"
-@@ -173,6 +173,7 @@ test_serialize_double(void) {
-     testOneDouble(1);
-     testOneDouble(0.3);
-     testOneDouble(4.9);
-+    testOneDouble(9.9999999);
-     testOneDouble(-8);
-     testOneDouble(-.7);
-     testOneDouble(-2.5);
-diff --git a/libs/xmlrpc-c/src/test/server_abyss.c b/libs/xmlrpc-c/src/test/server_abyss.c
-index 11e1476..24a8233 100644
---- a/libs/xmlrpc-c/src/test/server_abyss.c
-+++ b/libs/xmlrpc-c/src/test/server_abyss.c
-@@ -1,5 +1,6 @@
- #include "unistdx.h"
- #include <stdio.h>
-+#include "bool.h"
- #include "xmlrpc_config.h"
-@@ -8,16 +9,32 @@
- #include "xmlrpc-c/abyss.h"
- #include "xmlrpc-c/server_abyss.h"
--#include "test.h"
-+#include "testtool.h"
- #include "server_abyss.h"
-+static xmlrpc_call_processor myXmlProcessor;
-+
-+static void
-+myXmlProcessor(xmlrpc_env *        const envP ATTR_UNUSED,
-+               void *              const processorArg ATTR_UNUSED,
-+               const char *        const callXml ATTR_UNUSED,
-+               size_t              const callXmlLen ATTR_UNUSED,
-+               TSession *          const abyssSessionP ATTR_UNUSED, 
-+               xmlrpc_mem_block ** const responseXmlPP ATTR_UNUSED) {
-+
-+    printf("XML processor running\n");
-+}
-+
-+
-+
- static void
- testSetHandlers(TServer * const abyssServerP) {
-     xmlrpc_env env;
-     xmlrpc_registry * registryP;
-+    xmlrpc_server_abyss_handler_parms parms;
-     xmlrpc_env_init(&env);
-@@ -25,11 +42,32 @@ testSetHandlers(TServer * const abyssServerP) {
-     TEST_NO_FAULT(&env);
-     TEST(registryP != NULL);
-+    parms.xml_processor = &myXmlProcessor;
-+    parms.xml_processor_arg = NULL;
-+    parms.xml_processor_max_stack = 512;
-+    parms.uri_path = "/RPC6";
-+    parms.chunk_response = true;
-+    parms.allow_origin = "*";
-+
-+    xmlrpc_server_abyss_set_handler3(
-+        &env, abyssServerP, &parms, XMLRPC_AHPSIZE(xml_processor_arg));
-+    TEST_FAULT(&env, XMLRPC_INTERNAL_ERROR);  /* Parms too short */
-+    xmlrpc_server_abyss_set_handler3(
-+        &env, abyssServerP, &parms, XMLRPC_AHPSIZE(allow_origin));
-+    TEST_NO_FAULT(&env);
-+
-+    xmlrpc_server_abyss_set_handler2(abyssServerP, "/RPC5",
-+                                     &myXmlProcessor, NULL, 512, true);
-+
-     xmlrpc_server_abyss_set_handler(&env, abyssServerP, "/RPC3", registryP);
-     TEST_NO_FAULT(&env);
-     xmlrpc_server_abyss_set_handlers2(abyssServerP, "/RPC4", registryP);
-+    xmlrpc_server_abyss_set_handlers(abyssServerP, registryP);
-+    
-+    xmlrpc_server_abyss_set_default_handler(abyssServerP);
-+
-     xmlrpc_registry_free(registryP);
-     {
-@@ -57,6 +95,7 @@ testServerParms(void) {
-     parms.dont_advertise = TRUE;
-     parms.uri_path = "/RPC9";
-     parms.chunk_response = TRUE;
-+    parms.allow_origin = "*";
- };
-@@ -108,6 +147,8 @@ testObject(void) {
-     xmlrpc_server_abyss_restore_sig(oldHandlersP);
-     TEST_NO_FAULT(&env);
-+    free(oldHandlersP);
-+
-     xmlrpc_server_abyss_destroy(serverP);
-     
-     xmlrpc_registry_free(registryP);
-diff --git a/libs/xmlrpc-c/src/test/test.c b/libs/xmlrpc-c/src/test/test.c
-index 1b9c2d3..d7d0d9c 100644
---- a/libs/xmlrpc-c/src/test/test.c
-+++ b/libs/xmlrpc-c/src/test/test.c
-@@ -17,9 +17,10 @@
- #include "xmlrpc-c/base.h"
- #include "xmlrpc-c/server.h"
-+#include "xmlrpc-c/string_int.h"
- #include "bool.h"
--#include "test.h"
-+#include "testtool.h"
- #include "value.h"
- #include "serialize.h"
- #include "parse_xml.h"
-@@ -76,8 +77,26 @@ static int test_int_array_3[8] = {1, 2, 3, 4, 5, 6, 7, 8};
- **=========================================================================
- */
--static void test_env(void)
--{
-+static void
-+testVersion(void) {
-+
-+    unsigned int major, minor, point;
-+
-+    xmlrpc_version(&major, &minor, &point);
-+
-+#ifndef WIN32    
-+    /* xmlrpc_version_major, etc. are not exported from a Windows DLL */
-+
-+    TEST(major = xmlrpc_version_major);
-+    TEST(minor = xmlrpc_version_minor);
-+    TEST(point = xmlrpc_version_point);
-+#endif
-+}
-+
-+
-+
-+static void
-+testEnv(void) {
-     xmlrpc_env env, env2;
-     /* Test xmlrpc_env_init. */
-@@ -91,19 +110,19 @@ static void test_env(void)
-     TEST(env.fault_occurred);
-     TEST(env.fault_code == 1);
-     TEST(env.fault_string != test_string_1);
--    TEST(strcmp(env.fault_string, test_string_1) == 0);
-+    TEST(xmlrpc_streq(env.fault_string, test_string_1));
-     /* Change an existing fault. */
-     xmlrpc_env_set_fault(&env, 2, test_string_2);
-     TEST(env.fault_occurred);
-     TEST(env.fault_code == 2);
--    TEST(strcmp(env.fault_string, test_string_2) == 0);    
-+    TEST(xmlrpc_streq(env.fault_string, test_string_2));
-     /* Set a fault with a format string. */
-     xmlrpc_env_set_fault_formatted(&env, 3, "a%s%d", "bar", 9);
-     TEST(env.fault_occurred);
-     TEST(env.fault_code == 3);
--    TEST(strcmp(env.fault_string, "abar9") == 0);
-+    TEST(xmlrpc_streq(env.fault_string, "abar9"));
-     /* Test cleanup code (with help from memprof). */
-     xmlrpc_env_clean(&env);
-@@ -113,8 +132,10 @@ static void test_env(void)
-     xmlrpc_env_clean(&env2);
- }
--static void test_mem_block (void)
--{
-+
-+
-+static void
-+testMemBlock(void) {
-     xmlrpc_env env;
-     xmlrpc_mem_block* block;
-@@ -141,7 +162,7 @@ static void test_mem_block (void)
-     xmlrpc_mem_block_resize(&env, block, 10000);
-     TEST_NO_FAULT(&env);
-     TEST(xmlrpc_mem_block_size(block) == 10000);
--    TEST(strcmp(xmlrpc_mem_block_contents(block), test_string_1) == 0);
-+    TEST(xmlrpc_streq(xmlrpc_mem_block_contents(block), test_string_1));
-     /* Test cleanup code (with help from memprof). */
-     xmlrpc_mem_block_free(block);
-@@ -190,6 +211,8 @@ static void test_mem_block (void)
-     xmlrpc_env_clean(&env);
- }
-+
-+
- static char *(base64_triplets[]) = {
-     "", "", "\r\n",
-     "a", "YQ==", "YQ==\r\n",
-@@ -204,8 +227,11 @@ static char *(base64_triplets[]) = {
-     "ZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVo=\r\n",
-     NULL};
-+
-+
- static void
--test_base64_conversion(void) {
-+testBase64Conversion(void) {
-+
-     xmlrpc_env env;
-     char ** triplet;
-@@ -280,8 +306,9 @@ test_base64_conversion(void) {
--static void test_bounds_checks (void)
--{
-+static void
-+testBoundsChecks(void) {
-+
-     xmlrpc_env env;
-     xmlrpc_value *array;
-     int i1, i2, i3, i4;
-@@ -310,8 +337,9 @@ static void test_bounds_checks (void)
--static void test_nesting_limit (void)
--{
-+static void
-+testNestingLimit(void) {
-+
-     xmlrpc_env env;
-     xmlrpc_value *val;
-@@ -346,7 +374,7 @@ static void test_nesting_limit (void)
- static void
--test_xml_size_limit(void) {
-+testXmlSizeLimit(void) {
-     xmlrpc_env env;
-     const char * methodName;
-@@ -395,12 +423,13 @@ test_xml_size_limit(void) {
- **  We use these files to test strange-but-legal encodings, illegal-but-
- **  allowed-by-Xmlrpc-c encodings, etc.
- */
--#ifdef WIN32
--/* usually compiled in 'Windows' folder */
--#define TESTDATA_DIR ".." DIRECTORY_SEPARATOR "bin" DIRECTORY_SEPARATOR "data"
--#else
-+
-+/* The test program is designed to be run with the 'test' source directory
-+   (which also contains the test program itself) as the current
-+   directory.  Except on Windows, where the Bin directory (which also contains
-+   the test program itself) is supposed to be the current directory.
-+*/
- #define TESTDATA_DIR "data"
--#endif
- static const char * goodRequests[] = {
-     TESTDATA_DIR DIRECTORY_SEPARATOR "req_out_of_order.xml",
-@@ -649,9 +678,8 @@ test_utf8_coding(void) {
-         TEST_NO_FAULT(&env);
-         TEST(output != NULL);
-         TEST(strlen(utf8) == XMLRPC_TYPED_MEM_BLOCK_SIZE(char, output));
--        TEST(0 ==
--             strncmp(utf8, XMLRPC_TYPED_MEM_BLOCK_CONTENTS(char, output),
--                     strlen(utf8)));
-+        TEST(xmlrpc_strneq(utf8, XMLRPC_TYPED_MEM_BLOCK_CONTENTS(char, output),
-+                           strlen(utf8)));
-         xmlrpc_mem_block_free(output);
-     }
-@@ -713,18 +741,19 @@ main(int     argc,
-         fprintf(stderr, "There are no arguments.\n");
-         retval = 1;
-     } else {
--        test_env();
--        test_mem_block();
--        test_base64_conversion();
-+        testVersion();
-+        testEnv();
-+        testMemBlock();
-+        testBase64Conversion();
-         printf("\n");
-         test_value();
--        test_bounds_checks();
-+        testBoundsChecks();
-         printf("\n");
-         test_serialize();
-         test_parse_xml();
-         test_method_registry();
--        test_nesting_limit();
--        test_xml_size_limit();
-+        testNestingLimit();
-+        testXmlSizeLimit();
-         testSampleFiles();
-         printf("\n");
-         test_server_cgi_maybe();
-diff --git a/libs/xmlrpc-c/src/test/test.h b/libs/xmlrpc-c/src/test/test.h
-deleted file mode 100644
-index 70a8371..0000000
---- a/libs/xmlrpc-c/src/test/test.h
-+++ /dev/null
-@@ -1,109 +0,0 @@
--#include <stdlib.h>
--#include <stdio.h>
--#include <math.h>
--
--#include "xmlrpc_config.h"
--#include "xmlrpc-c/util.h"
--#include "xmlrpc-c/util_int.h"
--
--extern int total_tests;
--extern int total_failures;
--
--
--/* This is a good place to set a breakpoint. */
--static __inline__ void
--test_failure(const char * const file,
--             unsigned int const line,
--             const char * const label,
--             const char * const statement) {
--
--    ++total_failures;
--    printf("\n%s:%u: test failure: %s (%s)\n", file, line, label, statement);
--    abort();
--}
--
--
--
--#define TEST(statement) \
--do { \
--    ++total_tests; \
--    if ((statement)) { \
--        printf("."); \
--    } else { \
--        test_failure(__FILE__, __LINE__, "expected", #statement); \
--    } \
--   } while (0)
--
--#define TEST_NO_FAULT(env) \
--    do { \
--        ++total_tests; \
--        if (!(env)->fault_occurred) { \
--            printf("."); \
--        } else { \
--            test_failure(__FILE__, __LINE__, "fault occurred", \
--            (env)->fault_string); \
--        } \
--       } while (0)
--
--#define TEST_EPSILON 1E-5
--
--#define FORCENONZERO(x) (MAX(fabs(x), TEST_EPSILON))
--
--#define FLOATEQUAL(comparand, comparator) \
--    ((fabs((comparand)-(comparator)))/FORCENONZERO(comparand) < TEST_EPSILON)
--#define TESTFLOATEQUAL(comparand, comparator) \
--    TEST(FLOATEQUAL(comparand, comparator))
--
--static __inline__ void
--test_fault(xmlrpc_env * const envP,
--           int          const expectedCode,
--           const char * const fileName,
--           unsigned int const lineNumber) {
--
--    ++total_tests;
--
--    if (!envP->fault_occurred)
--        test_failure(fileName, lineNumber, "no fault occurred", "");
--    else if (envP->fault_code != expectedCode)
--        test_failure(fileName, lineNumber, "wrong fault occurred",
--                     envP->fault_string);
--    else
--        printf(".");
--
--    xmlrpc_env_clean(envP);
--    xmlrpc_env_init(envP);
--}
--
--
--#define TEST_FAULT(envP, code) \
--    do { test_fault(envP, code, __FILE__, __LINE__); } while(0)
--
--;
--
--
--static __inline__ void
--test_null_string(const char * const string,
--                 const char * const fileName,
--                 unsigned int const lineNumber) {
--
--    ++total_tests;
--
--    if (string != NULL)
--        test_failure(fileName, lineNumber, "string not null", string);
--    else
--        printf(".");
--}
--
--
--#define TEST_NULL_STRING(string) \
--    do { test_null_string(string, __FILE__, __LINE__); } while(0)
--
--;
--
--#define TEST_ERROR(reason) \
--do { \
--    printf("Unable to test at %s/%u.  %s", __FILE__, __LINE__, reason); \
--    abort(); \
--   } while (0)
--
--;
-diff --git a/libs/xmlrpc-c/src/test/testtool.c b/libs/xmlrpc-c/src/test/testtool.c
-new file mode 100644
-index 0000000..85d2e8c
---- /dev/null
-+++ b/libs/xmlrpc-c/src/test/testtool.c
-@@ -0,0 +1,65 @@
-+#include <stdlib.h>
-+#include <stdio.h>
-+
-+#include "xmlrpc_config.h"
-+#include "xmlrpc-c/util.h"
-+#include "xmlrpc-c/util_int.h"
-+
-+#include "testtool.h"
-+     /* Defines global variable, 'total_tests', 'total_failures' */
-+
-+
-+/* This is a good place to set a breakpoint. */
-+void
-+test_failure(const char * const file,
-+             unsigned int const line,
-+             const char * const label,
-+             const char * const statement) {
-+
-+    ++total_failures;
-+    printf("\n%s:%u: test failure: %s (%s)\n", file, line, label, statement);
-+
-+    /* We abort rather than exit so one can tell from a dump or debug session
-+       who called us.
-+    */
-+    abort();
-+}
-+
-+
-+
-+void
-+test_fault(xmlrpc_env * const envP,
-+           int          const expectedCode,
-+           const char * const fileName,
-+           unsigned int const lineNumber) {
-+
-+    ++total_tests;
-+
-+    if (!envP->fault_occurred)
-+        test_failure(fileName, lineNumber, "no fault occurred", "");
-+    else if (envP->fault_code != expectedCode)
-+        test_failure(fileName, lineNumber, "wrong fault occurred",
-+                     envP->fault_string);
-+    else
-+        printf(".");
-+
-+    xmlrpc_env_clean(envP);
-+    xmlrpc_env_init(envP);
-+}
-+
-+
-+
-+void
-+test_null_string(const char * const string,
-+                 const char * const fileName,
-+                 unsigned int const lineNumber) {
-+
-+    ++total_tests;
-+
-+    if (string != NULL)
-+        test_failure(fileName, lineNumber, "string not null", string);
-+    else
-+        printf(".");
-+}
-+
-+
-diff --git a/libs/xmlrpc-c/src/test/testtool.h b/libs/xmlrpc-c/src/test/testtool.h
-new file mode 100644
-index 0000000..8aeeebc
---- /dev/null
-+++ b/libs/xmlrpc-c/src/test/testtool.h
-@@ -0,0 +1,80 @@
-+#ifndef TESTTOOL_H_INCLUDED
-+#define TESTTOOL_H_INCLUDED
-+
-+#include <stdlib.h>
-+#include <stdio.h>
-+#include <math.h>
-+
-+#include "xmlrpc-c/util.h"
-+#include "xmlrpc-c/util_int.h"
-+
-+extern int total_tests;
-+extern int total_failures;
-+
-+
-+void
-+test_failure(const char * const file,
-+             unsigned int const line,
-+             const char * const label,
-+             const char * const statement);
-+
-+void
-+test_fault(xmlrpc_env * const envP,
-+           int          const expectedCode,
-+           const char * const fileName,
-+           unsigned int const lineNumber);
-+
-+void
-+test_null_string(const char * const string,
-+                 const char * const fileName,
-+                 unsigned int const lineNumber);
-+
-+#define TEST(statement) \
-+do { \
-+    ++total_tests; \
-+    if ((statement)) { \
-+        printf("."); \
-+    } else { \
-+        test_failure(__FILE__, __LINE__, "expected", #statement); \
-+    } \
-+   } while (0)
-+
-+#define TEST_NO_FAULT(env) \
-+    do { \
-+        ++total_tests; \
-+        if (!(env)->fault_occurred) { \
-+            printf("."); \
-+        } else { \
-+            test_failure(__FILE__, __LINE__, "fault occurred", \
-+            (env)->fault_string); \
-+        } \
-+       } while (0)
-+
-+#define TEST_EPSILON 1E-5
-+
-+#define FORCENONZERO(x) (MAX(fabs(x), TEST_EPSILON))
-+
-+#define FLOATEQUAL(comparand, comparator) \
-+    ((fabs((comparand)-(comparator)))/FORCENONZERO(comparand) < TEST_EPSILON)
-+#define TESTFLOATEQUAL(comparand, comparator) \
-+    TEST(FLOATEQUAL(comparand, comparator))
-+
-+#define TEST_FAULT(envP, code) \
-+    do { test_fault(envP, code, __FILE__, __LINE__); } while(0)
-+
-+;
-+
-+#define TEST_NULL_STRING(string) \
-+    do { test_null_string(string, __FILE__, __LINE__); } while(0)
-+
-+;
-+
-+#define TEST_ERROR(reason) \
-+do { \
-+    printf("Unable to test at %s/%u.  %s", __FILE__, __LINE__, reason); \
-+    abort(); \
-+   } while (0)
-+
-+;
-+
-+#endif
-diff --git a/libs/xmlrpc-c/src/test/value.c b/libs/xmlrpc-c/src/test/value.c
-index bda938c..6ed6c47 100644
---- a/libs/xmlrpc-c/src/test/value.c
-+++ b/libs/xmlrpc-c/src/test/value.c
-@@ -13,7 +13,9 @@
- #include "xmlrpc-c/base.h"
- #include "xmlrpc-c/string_int.h"
--#include "test.h"
-+#include "testtool.h"
-+#include "value_datetime.h"
-+
- #include "value.h"
-@@ -158,197 +160,6 @@ test_value_double(void) {
--static void
--test_value_datetime_varytime(const char * const datestring,
--                             time_t       const datetime) {
--
--    xmlrpc_value * v;
--    xmlrpc_env env;
--    const char * ds;
--    time_t dt;
--
--    xmlrpc_env_init(&env);
--
--    v = xmlrpc_datetime_new_str(&env, datestring);
--    TEST_NO_FAULT(&env);
--    TEST(XMLRPC_TYPE_DATETIME == xmlrpc_value_type(v));
--
--    xmlrpc_read_datetime_sec(&env, v, &dt);
--    TEST_NO_FAULT(&env);
--    TEST(dt == datetime);
--
--    xmlrpc_DECREF(v);
--
--    v = xmlrpc_datetime_new_sec(&env, datetime);
--    TEST_NO_FAULT(&env);
--    TEST(XMLRPC_TYPE_DATETIME == xmlrpc_value_type(v));
--
--    xmlrpc_read_datetime_str(&env, v, &ds);
--    TEST_NO_FAULT(&env);
--    TEST(streq(ds, datestring));
--    strfree(ds);
--
--    xmlrpc_DECREF(v);
--
--    xmlrpc_env_clean(&env);
--}
--
--
--
--static void
--test_value_datetime_not_unix(const char * const datestring) {
--
--    xmlrpc_value * v;
--    xmlrpc_env env;
--    time_t dt;
--
--    xmlrpc_env_init(&env);
--
--    v = xmlrpc_datetime_new_str(&env, datestring);
--    TEST_NO_FAULT(&env);
--
--    xmlrpc_read_datetime_sec(&env, v, &dt);
--    TEST_FAULT(&env, XMLRPC_INTERNAL_ERROR);
--
--    xmlrpc_DECREF(v);
--
--    xmlrpc_env_clean(&env);
--}
--
--
--
--static void
--test_value_datetime_invalid(const char * const datestring) {
--
--    /* Ideally, xmlrpc_datetime_new_str() would fail on these, but
--       the code doesn't implement that today.  However,
--       xmlrpc_read_datetime_sec() does catch many cases, so we
--       use that.
--
--       Note that xmlrpc_read_datetime_sec() doesn't catch them all.
--       Sometimes it just returns garbage, e.g. returns July 1 for
--       June 31.
--    */
--
--    xmlrpc_value * v;
--    xmlrpc_env env;
--    time_t dt;
--
--    xmlrpc_env_init(&env);
--
--    v = xmlrpc_datetime_new_str(&env, datestring);
--    TEST_NO_FAULT(&env);
--
--    xmlrpc_read_datetime_sec(&env, v, &dt);
--    TEST_FAULT(&env, XMLRPC_PARSE_ERROR);
--
--    xmlrpc_DECREF(v);
--
--    xmlrpc_env_clean(&env);
--}
--
--
--
--static void
--test_build_decomp_datetime(void) {
--
--    const char * datestring = "19980717T14:08:55";
--    time_t const datetime = 900684535;
--
--    xmlrpc_env env;
--    xmlrpc_value * v;
--    time_t dt;
--    const char * ds;
--
--    xmlrpc_env_init(&env);
--
--    v = xmlrpc_build_value(&env, "t", datetime);
--    TEST_NO_FAULT(&env);
--    TEST(v != NULL);
--    TEST(xmlrpc_value_type(v) == XMLRPC_TYPE_DATETIME);
--
--    dt = 0;
--    xmlrpc_read_datetime_sec(&env, v, &dt);
--    TEST(dt == datetime);
--
--    dt = 0;
--    xmlrpc_decompose_value(&env, v, "t", &dt);
--    xmlrpc_DECREF(v);
--    TEST_NO_FAULT(&env);
--    TEST(dt == datetime);
--
--    v = xmlrpc_int_new(&env, 9);
--    TEST_NO_FAULT(&env);
--    xmlrpc_decompose_value(&env, v, "t", &dt);
--    TEST_FAULT(&env, XMLRPC_TYPE_ERROR);
--    xmlrpc_env_clean(&env);
--    xmlrpc_env_init(&env);
--    xmlrpc_decompose_value(&env, v, "8", &ds);
--    TEST_FAULT(&env, XMLRPC_TYPE_ERROR);
--    xmlrpc_env_clean(&env);
--    xmlrpc_env_init(&env);
--    xmlrpc_DECREF(v);
--
--    v = xmlrpc_build_value(&env, "8", datestring);
--    TEST_NO_FAULT(&env);
--    TEST(v != NULL);
--    TEST(xmlrpc_value_type(v) == XMLRPC_TYPE_DATETIME);
--    xmlrpc_decompose_value(&env, v, "8", &ds);
--    xmlrpc_DECREF(v);
--    TEST_NO_FAULT(&env);
--    TEST(streq(ds, datestring));
--    strfree(ds);
--
--    xmlrpc_env_clean(&env);
--}
--
--
--
--static void
--test_value_datetime(void) {
--
--    const char * datestring = "19980717T14:08:55";
--    time_t const datetime = 900684535;
--
--    xmlrpc_env env;
--
--    xmlrpc_env_init(&env);
--
--    TEST(streq(xmlrpc_type_name(XMLRPC_TYPE_DATETIME), "DATETIME"));
--
--    /* Valid datetime, generated from XML-RPC string */
--
--    test_value_datetime_varytime(datestring, datetime);
--
--    /* Leap years */
--    test_value_datetime_varytime("20000229T23:59:59", 951868799);
--    test_value_datetime_varytime("20000301T00:00:00", 951868800);
--    test_value_datetime_varytime("20010228T23:59:59", 983404799);
--    test_value_datetime_varytime("20010301T00:00:00", 983404800);
--    test_value_datetime_varytime("20040229T23:59:59", 1078099199);
--    test_value_datetime_varytime("20040301T00:00:00", 1078099200);
--
--    /* Datetimes that can't be represented as time_t */
--    test_value_datetime_not_unix("19691231T23:59:59");
--
--    /* Invalid datetimes */
--    /* Note that the code today does a pretty weak job of validating datetimes,
--       so we test only the validation that we know is implemented.
--    */
--    test_value_datetime_invalid("19700101T25:00:00");
--    test_value_datetime_invalid("19700101T10:61:01");
--    test_value_datetime_invalid("19700101T10:59:61");
--    test_value_datetime_invalid("19700001T10:00:00");
--    test_value_datetime_invalid("19701301T10:00:00");
--    test_value_datetime_invalid("19700132T10:00:00");
--
--    test_build_decomp_datetime();
--
--    xmlrpc_env_clean(&env);
--}
--
--
--
- static xmlrpc_value *
- test_string_new_va(xmlrpc_env * const envP,
-                    const char * const format,
-@@ -711,7 +522,7 @@ test_value_string_wide_build(void) {
-     xmlrpc_env_init(&env);
-     /* Build with build_value w# */
--    valueP = xmlrpc_build_value(&env, "w#", wcs_data, 3);
-+    valueP = xmlrpc_build_value(&env, "w#", wcs_data, (size_t)3);
-     TEST_NO_FAULT(&env);
-     TEST(valueP != NULL);
-@@ -849,7 +660,7 @@ test_value_string_wide(void) {
-         TEST(str != NULL);
-         TEST(len == 4);
-         TEST(str[len] == '\0');
--        TEST(0 == strncmp(str, utf8_data, len));
-+        TEST(xmlrpc_strneq(str, utf8_data, len));
-         free((void*)str);
-     }
-@@ -952,7 +763,7 @@ test_value_base64(void) {
-     TEST_NO_FAULT(&env);
-     TEST(len == sizeof(data2));
-     TEST(memeq(data, data1, sizeof(data2)));
--    strfree(data);
-+    free((void *)data);
-     xmlrpc_env_clean(&env);
- }
-@@ -992,6 +803,7 @@ test_value_array(void) {
-     xmlrpc_value *v;
-     xmlrpc_env env;
-     size_t len;
-+    xmlrpc_value * itemP;
-     /* Basic array-building test. */
-@@ -1005,6 +817,16 @@ test_value_array(void) {
-     len = xmlrpc_array_size(&env, v);
-     TEST_NO_FAULT(&env);
-     TEST(len == 0);
-+
-+    itemP = xmlrpc_int_new(&env, 7);
-+    TEST_NO_FAULT(&env);
-+    xmlrpc_array_append_item(&env, v, itemP);
-+    TEST_NO_FAULT(&env);
-+    len = xmlrpc_array_size(&env, v);
-+    TEST_NO_FAULT(&env);
-+    TEST(len == 1);
-+    xmlrpc_DECREF(itemP);
-+
-     xmlrpc_DECREF(v);
-     v = xmlrpc_build_value(&env, "()");
-@@ -1234,20 +1056,48 @@ test_value_array_nil(void) {
- static void
-+destroyMyCptr(void * const context,
-+              void * const objectP) {
-+/*----------------------------------------------------------------------------
-+   This is a xmlrpc_cptr_dtor_fn.
-+-----------------------------------------------------------------------------*/
-+    int * const destroyConfirmationP = context;
-+    int * const objectIntP = objectP;
-+
-+    *destroyConfirmationP = *objectIntP;
-+}
-+
-+
-+
-+static void
- test_value_cptr(void) {
-+    int destroyConfirmation;
-+
-     xmlrpc_value * v;
-     xmlrpc_env env;
-     void * ptr;
--
--    /* Test C pointer storage using 'p'.
--       We don't have cleanup functions (yet). 
--    */
-+    int myObject;
-     xmlrpc_env_init(&env);
-     TEST(streq(xmlrpc_type_name(XMLRPC_TYPE_C_PTR), "C_PTR"));
-+    myObject = 7;
-+
-+    v = xmlrpc_cptr_new(&env, &myObject);
-+    TEST_NO_FAULT(&env);
-+    TEST(xmlrpc_value_type(v) == XMLRPC_TYPE_C_PTR);
-+    xmlrpc_DECREF(v);
-+
-+    v = xmlrpc_cptr_new_dtor(&env, &myObject,
-+                             &destroyMyCptr, &destroyConfirmation);
-+    TEST_NO_FAULT(&env);
-+    TEST(xmlrpc_value_type(v) == XMLRPC_TYPE_C_PTR);
-+    destroyConfirmation = 3;
-+    xmlrpc_DECREF(v);
-+    TEST(destroyConfirmation == 7);  // the destructor has set this
-+    
-     v = xmlrpc_build_value(&env, "p", (void*) 0x00000017);
-     TEST_NO_FAULT(&env);
-     TEST(XMLRPC_TYPE_C_PTR == xmlrpc_value_type(v));
-@@ -1273,7 +1123,7 @@ test_value_nil(void) {
-     v = xmlrpc_nil_new(&env);
-     TEST_NO_FAULT(&env);
--    TEST(XMLRPC_TYPE_NIL == xmlrpc_value_type(v));
-+    TEST(xmlrpc_value_type(v) == XMLRPC_TYPE_NIL);
-     xmlrpc_DECREF(v);
-     v = xmlrpc_build_value(&env, "n");
-@@ -1465,7 +1315,7 @@ test_value_parse_value(void) {
-     valueP = xmlrpc_build_value(&env, "(idb8ss#6(i){s:i}np(i))",
-                                 7, 3.14, (xmlrpc_bool)1, datestring,
--                                "hello world", "a\0b", 3, 
-+                                "hello world", "a\0b", (size_t)3,
-                                 "base64 data", strlen("base64 data"),
-                                 15, "member9", 9, &valueP, -5);
-     
-@@ -1610,7 +1460,7 @@ test_struct_get_element(xmlrpc_value * const structP,
- static void
- testStructReadout(xmlrpc_value * const structP,
--                  size_t         const expectedSize) {
-+                  unsigned int   const expectedSize) {
-     xmlrpc_env env;
-     xmlrpc_value * keyP;
-@@ -1753,6 +1603,10 @@ test_struct_decompose(xmlrpc_value * const testStructP) {
-                            "foo", &sval,
-                            "bar", &ival);
-     TEST_NO_FAULT(&env);
-+    TEST(ival == 1);
-+    TEST(!bval);
-+    TEST(streq(sval, "Hello!"));
-+    free(sval);
-     /* First value of wrong type */
-     xmlrpc_decompose_value(&env, testStructP, "{s:b,s:i,*}",
-diff --git a/libs/xmlrpc-c/src/test/value_datetime.c b/libs/xmlrpc-c/src/test/value_datetime.c
-new file mode 100644
-index 0000000..6671713
---- /dev/null
-+++ b/libs/xmlrpc-c/src/test/value_datetime.c
-@@ -0,0 +1,424 @@
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
-+
-+#include <stdlib.h>
-+#include <stdio.h>
-+#include <string.h>
-+#include <errno.h>
-+
-+#include "casprintf.h"
-+#include "girstring.h"
-+
-+#include "xmlrpc_config.h"
-+
-+#include "xmlrpc-c/base.h"
-+#include "xmlrpc-c/string_int.h"
-+
-+#include "testtool.h"
-+
-+#include "value_datetime.h"
-+
-+
-+
-+static const char *
-+truncateFracSec(const char * const datestring) {
-+/*----------------------------------------------------------------------------
-+   Return 'datestring', but with any fractional seconds chopped off.
-+   E.g. if 'datestring' is "20000301T00:00:00.654321",
-+   we return "20000301T00:00:00".
-+-----------------------------------------------------------------------------*/
-+    char * buffer;
-+    unsigned int i;
-+
-+    buffer = strdup(datestring);
-+
-+    for (i = 0; i < strlen(buffer); ++i) {
-+        if (buffer[i] == '.')
-+            buffer[i] = '\0';
-+    }
-+    return buffer;
-+}
-+
-+
-+
-+#if XMLRPC_HAVE_TIMEVAL
-+
-+static struct timeval
-+makeTv(time_t       const secs,
-+       unsigned int const usecs) {
-+
-+    struct timeval retval;
-+
-+    retval.tv_sec  = secs;
-+    retval.tv_usec = usecs;
-+
-+    return retval;
-+}
-+
-+static bool
-+tvIsEqual(struct timeval const comparand,
-+          struct timeval const comparator) {
-+    return
-+        comparand.tv_sec  == comparator.tv_sec &&
-+        comparand.tv_usec == comparator.tv_usec;
-+}
-+#endif
-+
-+
-+
-+#if XMLRPC_HAVE_TIMESPEC
-+
-+static struct timespec
-+makeTs(time_t       const secs,
-+       unsigned int const usecs) {
-+
-+    struct timespec retval;
-+
-+    retval.tv_sec  = secs;
-+    retval.tv_nsec = usecs * 1000;
-+
-+    return retval;
-+}
-+
-+static bool
-+tsIsEqual(struct timespec const comparand,
-+          struct timespec const comparator) {
-+    return
-+        comparand.tv_sec  == comparator.tv_sec &&
-+        comparand.tv_nsec == comparator.tv_nsec;
-+}
-+#endif
-+
-+
-+
-+static void
-+test_value_datetime_varytime(const char * const datestring,
-+                             time_t       const datetime,
-+                             unsigned int const usec) {
-+
-+    xmlrpc_value * v;
-+    xmlrpc_env env;
-+    const char * readBackString;
-+    time_t readBackDt;
-+    unsigned int readBackUsec;
-+    const char * datestringSec;
-+#if XMLRPC_HAVE_TIMEVAL
-+    struct timeval const dtTimeval = makeTv(datetime, usec);
-+    struct timeval readBackTv;
-+#endif
-+#if XMLRPC_HAVE_TIMESPEC
-+    struct timespec const dtTimespec = makeTs(datetime, usec);
-+    struct timespec readBackTs;
-+#endif
-+
-+    datestringSec = truncateFracSec(datestring);
-+
-+    xmlrpc_env_init(&env);
-+
-+    /* Test xmlrpc_datetime_new_str and time read functions*/
-+    v = xmlrpc_datetime_new_str(&env, datestring);
-+    TEST_NO_FAULT(&env);
-+    TEST(XMLRPC_TYPE_DATETIME == xmlrpc_value_type(v));
-+
-+    xmlrpc_read_datetime_sec(&env, v, &readBackDt);
-+    TEST_NO_FAULT(&env);
-+    TEST(readBackDt == datetime);
-+
-+    xmlrpc_read_datetime_usec(&env, v, &readBackDt, &readBackUsec);
-+    TEST_NO_FAULT(&env);
-+    TEST(readBackDt == datetime);
-+    TEST(readBackUsec == usec);
-+
-+#if XMLRPC_HAVE_TIMEVAL
-+    xmlrpc_read_datetime_timeval(&env, v, &readBackTv);
-+    TEST_NO_FAULT(&env);
-+    TEST(tvIsEqual(dtTimeval, readBackTv));
-+#endif
-+
-+#if XMLRPC_HAVE_TIMESPEC
-+    xmlrpc_read_datetime_timespec(&env, v, &readBackTs);
-+    TEST_NO_FAULT(&env);
-+    TEST(tsIsEqual(dtTimespec, readBackTs));
-+#endif
-+
-+    xmlrpc_DECREF(v);
-+
-+    /* Test xmlrpc_datetime_new_sec */
-+    v = xmlrpc_datetime_new_sec(&env, datetime);
-+    TEST_NO_FAULT(&env);
-+    TEST(XMLRPC_TYPE_DATETIME == xmlrpc_value_type(v));
-+
-+    xmlrpc_read_datetime_str(&env, v, &readBackString);
-+    TEST_NO_FAULT(&env);
-+    TEST(streq(readBackString, datestringSec));
-+    strfree(readBackString);
-+
-+    xmlrpc_DECREF(v);
-+
-+    /* Test xmlrpc_datetime_new_usec */
-+    v = xmlrpc_datetime_new_usec(&env, datetime, usec);
-+    TEST_NO_FAULT(&env);
-+    TEST(XMLRPC_TYPE_DATETIME == xmlrpc_value_type(v));
-+
-+    xmlrpc_read_datetime_str(&env, v, &readBackString);
-+    TEST_NO_FAULT(&env);
-+    TEST(streq(readBackString, datestring));
-+    strfree(readBackString);
-+
-+    xmlrpc_DECREF(v);
-+
-+#if XMLRPC_HAVE_TIMEVAL
-+    /* Test xmlrpc_datetime_new_timeval */
-+    v = xmlrpc_datetime_new_timeval(&env, dtTimeval);
-+    TEST_NO_FAULT(&env);
-+    TEST(XMLRPC_TYPE_DATETIME == xmlrpc_value_type(v));
-+
-+    xmlrpc_read_datetime_str(&env, v, &readBackString);
-+    TEST_NO_FAULT(&env);
-+    TEST(streq(readBackString, datestring));
-+    strfree(readBackString);
-+
-+    xmlrpc_DECREF(v);
-+#endif
-+
-+#if XMLRPC_HAVE_TIMESPEC
-+    /* Test xmlrpc_datetime_new_timespec */
-+    v = xmlrpc_datetime_new_timespec(&env, dtTimespec);
-+    TEST_NO_FAULT(&env);
-+    TEST(XMLRPC_TYPE_DATETIME == xmlrpc_value_type(v));
-+
-+    xmlrpc_read_datetime_str(&env, v, &readBackString);
-+    TEST_NO_FAULT(&env);
-+    TEST(streq(readBackString, datestring));
-+    strfree(readBackString);
-+
-+    xmlrpc_DECREF(v);
-+#endif
-+
-+    xmlrpc_env_clean(&env);
-+    strfree(datestringSec);
-+}
-+
-+
-+
-+static void
-+test_value_datetime_not_unix(const char * const datestring) {
-+
-+    xmlrpc_value * v;
-+    xmlrpc_env env;
-+    time_t dt;
-+
-+    xmlrpc_env_init(&env);
-+
-+    v = xmlrpc_datetime_new_str(&env, datestring);
-+    TEST_NO_FAULT(&env);
-+
-+    xmlrpc_read_datetime_sec(&env, v, &dt);
-+    TEST_FAULT(&env, XMLRPC_INTERNAL_ERROR);
-+
-+    xmlrpc_DECREF(v);
-+
-+    xmlrpc_env_clean(&env);
-+}
-+
-+
-+
-+static void
-+test_value_datetime_str_invalid1(const char * const datestring) {
-+
-+    /* Ideally, xmlrpc_datetime_new_str() would fail on these, but
-+       the code doesn't implement that today.  However,
-+       xmlrpc_read_datetime_sec() does catch many cases, so we
-+       use that.
-+
-+       Note that xmlrpc_read_datetime_sec() doesn't catch them all.
-+       Sometimes it just returns garbage, e.g. returns July 1 for
-+       June 31.
-+    */
-+
-+    xmlrpc_value * v;
-+    xmlrpc_env env;
-+    time_t dt;
-+
-+    xmlrpc_env_init(&env);
-+
-+    v = xmlrpc_datetime_new_str(&env, datestring);
-+    TEST_NO_FAULT(&env);
-+
-+    xmlrpc_read_datetime_sec(&env, v, &dt);
-+    TEST_FAULT(&env, XMLRPC_PARSE_ERROR);
-+
-+    xmlrpc_DECREF(v);
-+
-+    xmlrpc_env_clean(&env);
-+}
-+
-+
-+
-+static void
-+test_value_datetime_str_invalid2(const char * const datestring) {
-+
-+    xmlrpc_value * v;
-+    xmlrpc_env env;
-+
-+    xmlrpc_env_init(&env);
-+
-+    v = xmlrpc_datetime_new_str(&env, datestring);
-+    TEST_FAULT(&env, XMLRPC_INTERNAL_ERROR);
-+
-+    xmlrpc_env_clean(&env);
-+}
-+
-+
-+
-+static void
-+test_build_decomp_datetime(void) {
-+
-+    const char * datestring = "19980717T14:08:55";
-+    time_t const datetime = 900684535;
-+
-+    xmlrpc_env env;
-+    xmlrpc_value * v;
-+    time_t dt;
-+    const char * ds;
-+
-+    xmlrpc_env_init(&env);
-+
-+    v = xmlrpc_build_value(&env, "t", datetime);
-+    TEST_NO_FAULT(&env);
-+    TEST(v != NULL);
-+    TEST(xmlrpc_value_type(v) == XMLRPC_TYPE_DATETIME);
-+
-+    dt = 0;
-+    xmlrpc_read_datetime_sec(&env, v, &dt);
-+    TEST(dt == datetime);
-+
-+    dt = 0;
-+    xmlrpc_decompose_value(&env, v, "t", &dt);
-+    xmlrpc_DECREF(v);
-+    TEST_NO_FAULT(&env);
-+    TEST(dt == datetime);
-+
-+    v = xmlrpc_int_new(&env, 9);
-+    TEST_NO_FAULT(&env);
-+    xmlrpc_decompose_value(&env, v, "t", &dt);
-+    TEST_FAULT(&env, XMLRPC_TYPE_ERROR);
-+    xmlrpc_env_clean(&env);
-+    xmlrpc_env_init(&env);
-+    xmlrpc_decompose_value(&env, v, "8", &ds);
-+    TEST_FAULT(&env, XMLRPC_TYPE_ERROR);
-+    xmlrpc_env_clean(&env);
-+    xmlrpc_env_init(&env);
-+    xmlrpc_DECREF(v);
-+
-+    v = xmlrpc_build_value(&env, "8", datestring);
-+    TEST_NO_FAULT(&env);
-+    TEST(v != NULL);
-+    TEST(xmlrpc_value_type(v) == XMLRPC_TYPE_DATETIME);
-+    xmlrpc_decompose_value(&env, v, "8", &ds);
-+    xmlrpc_DECREF(v);
-+    TEST_NO_FAULT(&env);
-+    TEST(streq(ds, datestring));
-+    strfree(ds);
-+
-+    xmlrpc_env_clean(&env);
-+}
-+
-+
-+
-+
-+static void
-+test_value_datetime_basic(void) {
-+
-+    xmlrpc_value * v;
-+    xmlrpc_env env;
-+    xmlrpc_datetime dt;
-+    xmlrpc_datetime readBackDt;
-+
-+    xmlrpc_env_init(&env);
-+
-+    dt.Y = 2001;
-+    dt.M = 12;
-+    dt.D = 25;
-+    dt.h = 1;
-+    dt.m = 2;
-+    dt.s = 3;
-+    dt.u = 4;
-+
-+    v = xmlrpc_datetime_new(&env, dt);
-+
-+    xmlrpc_read_datetime(&env, v, &readBackDt);
-+    TEST_NO_FAULT(&env);
-+    TEST(readBackDt.Y = dt.Y);
-+    TEST(readBackDt.M = dt.M);
-+    TEST(readBackDt.D = dt.D);
-+    TEST(readBackDt.h = dt.h);
-+    TEST(readBackDt.m = dt.m);
-+    TEST(readBackDt.s = dt.s);
-+    TEST(readBackDt.u = dt.u);
-+
-+    xmlrpc_env_clean(&env);
-+}
-+
-+
-+
-+void
-+test_value_datetime(void) {
-+
-+    const char * datestring = "19980717T14:08:55";
-+    time_t const datetime = 900684535;
-+
-+    xmlrpc_env env;
-+
-+    printf("\n  Running datetime value tests");
-+
-+    xmlrpc_env_init(&env);
-+
-+    TEST(streq(xmlrpc_type_name(XMLRPC_TYPE_DATETIME), "DATETIME"));
-+
-+    test_value_datetime_basic();
-+
-+    /* Valid datetime, generated from XML-RPC string, time_t, and
-+       time_t + microseconds
-+    */
-+
-+    test_value_datetime_varytime(datestring, datetime, 0);
-+
-+    /* test microseconds */
-+    test_value_datetime_varytime("20000301T00:00:00.654321",
-+                                 951868800,  654321);
-+    test_value_datetime_varytime("20040229T23:59:59.123000",
-+                                 1078099199, 123000);
-+    test_value_datetime_varytime("20000229T23:59:59.000123",
-+                                 951868799,  123);
-+
-+    /* Leap years */
-+    test_value_datetime_varytime("20000229T23:59:59",  951868799, 0);
-+    test_value_datetime_varytime("20000301T00:00:00",  951868800, 0);
-+    test_value_datetime_varytime("20010228T23:59:59",  983404799, 0);
-+    test_value_datetime_varytime("20010301T00:00:00",  983404800, 0);
-+    test_value_datetime_varytime("20040229T23:59:59", 1078099199, 0);
-+    test_value_datetime_varytime("20040301T00:00:00", 1078099200, 0);
-+
-+    /* Datetimes that can't be represented as time_t */
-+    test_value_datetime_not_unix("19691231T23:59:59");
-+
-+    /* Invalid datetimes */
-+    /* Note that the code today does a pretty weak job of validating datetimes,
-+       so we test only the validation that we know is implemented.
-+    */
-+    test_value_datetime_str_invalid1("19700101T25:00:00");
-+    test_value_datetime_str_invalid1("19700101T10:61:01");
-+    test_value_datetime_str_invalid1("19700101T10:59:61");
-+    test_value_datetime_str_invalid1("19700001T10:00:00");
-+    test_value_datetime_str_invalid1("19701301T10:00:00");
-+    test_value_datetime_str_invalid1("19700132T10:00:00");
-+    test_value_datetime_str_invalid2("19700132T10:00:00.");
-+    test_value_datetime_str_invalid2("19700132T10:00:00,123");
-+
-+    test_build_decomp_datetime();
-+
-+    xmlrpc_env_clean(&env);
-+
-+    printf("\n");
-+    printf("  datetime value tests done.\n");
-+}
-diff --git a/libs/xmlrpc-c/src/test/value_datetime.h b/libs/xmlrpc-c/src/test/value_datetime.h
-new file mode 100644
-index 0000000..5a26f60
---- /dev/null
-+++ b/libs/xmlrpc-c/src/test/value_datetime.h
-@@ -0,0 +1,7 @@
-+#ifndef VALUE_DATETIME_H_INCLUDED
-+#define VALUE_DATETIME_H_INCLUDED
-+
-+void
-+test_value_datetime(void);
-+
-+#endif
-diff --git a/libs/xmlrpc-c/src/test/xml_data.h b/libs/xmlrpc-c/src/test/xml_data.h
-index 4b34238..89b5e49 100644
---- a/libs/xmlrpc-c/src/test/xml_data.h
-+++ b/libs/xmlrpc-c/src/test/xml_data.h
-@@ -3,6 +3,9 @@
- #define XML_PROLOGUE "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
-+#define APACHE_URL "http://ws.apache.org/xmlrpc/namespaces/extensions"
-+#define XMLNS_APACHE "xmlns:ex=\"" APACHE_URL "\""
-+
- extern char const serialized_data[];
- extern char const serialized_call[];
-diff --git a/libs/xmlrpc-c/src/trace.c b/libs/xmlrpc-c/src/trace.c
-index 53d54f3..bb65945 100644
---- a/libs/xmlrpc-c/src/trace.c
-+++ b/libs/xmlrpc-c/src/trace.c
-@@ -36,7 +36,7 @@ nextLineSize(const char * const string,
- void
- xmlrpc_traceXml(const char * const label, 
-                 const char * const xml,
--                unsigned int const xmlLength) {
-+                size_t       const xmlLength) {
-     if (getenv("XMLRPC_TRACE_XML")) {
-         size_t cursor;  /* Index into xml[] */
-@@ -60,3 +60,4 @@ xmlrpc_traceXml(const char * const label,
-     }
- }
-+
-diff --git a/libs/xmlrpc-c/src/version.c b/libs/xmlrpc-c/src/version.c
-index c286966..07a2d43 100644
---- a/libs/xmlrpc-c/src/version.c
-+++ b/libs/xmlrpc-c/src/version.c
-@@ -5,3 +5,14 @@
- unsigned int const xmlrpc_version_major = XMLRPC_VERSION_MAJOR;
- unsigned int const xmlrpc_version_minor = XMLRPC_VERSION_MINOR;
- unsigned int const xmlrpc_version_point = XMLRPC_VERSION_POINT;
-+
-+void
-+xmlrpc_version(unsigned int * const majorP,
-+               unsigned int * const minorP,
-+               unsigned int * const pointP) {
-+
-+    *majorP = XMLRPC_VERSION_MAJOR;
-+    *minorP = XMLRPC_VERSION_MINOR;
-+    *pointP = XMLRPC_VERSION_POINT;
-+}
-+
-diff --git a/libs/xmlrpc-c/src/xmlrpc_array.c b/libs/xmlrpc-c/src/xmlrpc_array.c
-index a474546..0de210e 100644
---- a/libs/xmlrpc-c/src/xmlrpc_array.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_array.c
-@@ -7,6 +7,7 @@
- #include "xmlrpc_config.h"
-+#include <assert.h>
- #include <stddef.h>
- #include <stdlib.h>
-@@ -24,7 +25,7 @@ xmlrpc_abort_if_array_bad(xmlrpc_value * const arrayP) {
-     else if (arrayP->_type != XMLRPC_TYPE_ARRAY)
-         abort();
-     else {
--        unsigned int const arraySize =
-+        size_t const arraySize =
-             XMLRPC_MEMBLOCK_SIZE(xmlrpc_value*, &arrayP->_block);
-         xmlrpc_value ** const contents = 
-             XMLRPC_MEMBLOCK_CONTENTS(xmlrpc_value*, &arrayP->_block);
-@@ -32,7 +33,7 @@ xmlrpc_abort_if_array_bad(xmlrpc_value * const arrayP) {
-         if (contents == NULL)
-             abort();
-         else {
--            unsigned int index;
-+            size_t index;
-             
-             for (index = 0; index < arraySize; ++index) {
-                 xmlrpc_value * const itemP = contents[index];
-@@ -53,12 +54,12 @@ xmlrpc_destroyArrayContents(xmlrpc_value * const arrayP) {
-    Dispose of the contents of an array (but not the array value itself).
-    The value is not valid after this.
- -----------------------------------------------------------------------------*/
--    unsigned int const arraySize =
-+    size_t const arraySize =
-         XMLRPC_MEMBLOCK_SIZE(xmlrpc_value*, &arrayP->_block);
-     xmlrpc_value ** const contents = 
-         XMLRPC_MEMBLOCK_CONTENTS(xmlrpc_value*, &arrayP->_block);
--    unsigned int index;
-+    size_t index;
-     
-     XMLRPC_ASSERT_ARRAY_OK(arrayP);
-@@ -73,25 +74,27 @@ xmlrpc_destroyArrayContents(xmlrpc_value * const arrayP) {
- int 
--xmlrpc_array_size(xmlrpc_env *         const env, 
--                  const xmlrpc_value * const array) {
-+xmlrpc_array_size(xmlrpc_env *         const envP,
-+                  const xmlrpc_value * const arrayP) {
-     int retval;
--    /* Suppress a compiler warning about uninitialized variables. */
--    retval = 0;
-+    XMLRPC_ASSERT_ENV_OK(envP);
-+    XMLRPC_ASSERT_VALUE_OK(arrayP);
--    XMLRPC_ASSERT_ENV_OK(env);
--    XMLRPC_ASSERT_VALUE_OK(array);
--    XMLRPC_TYPE_CHECK(env, array, XMLRPC_TYPE_ARRAY);
-+    if (arrayP->_type != XMLRPC_TYPE_ARRAY) {
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_TYPE_ERROR, "Value is not an array");
-+        retval = -1;
-+    } else {
-+        size_t const size =
-+            XMLRPC_MEMBLOCK_SIZE(xmlrpc_value *, &arrayP->_block);
--    retval = XMLRPC_TYPED_MEM_BLOCK_SIZE(xmlrpc_value*, &array->_block);
-+        assert((size_t)(int)(size) == size);
--                  cleanup:
--    if (env->fault_occurred)
--        return -1;
--    else
--        return retval;
-+        retval = (int)size;
-+    }
-+    return retval;
- }
-diff --git a/libs/xmlrpc-c/src/xmlrpc_base64.c b/libs/xmlrpc-c/src/xmlrpc_base64.c
-index 2f54377..30f0c02 100644
---- a/libs/xmlrpc-c/src/xmlrpc_base64.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_base64.c
-@@ -36,6 +36,7 @@
- #include "xmlrpc_config.h"
-+#include "bool.h"
- #include "xmlrpc-c/base.h"
- #define CRLF    "\015\012"
-@@ -89,178 +90,190 @@ static char table_a2b_base64[] = {
- #define BASE64_MAXBIN 57    /* Max binary chunk size (76 char line) */
- #define BASE64_LINE_SZ 128      /* Buffer size for a single line. */    
--static unsigned char table_b2a_base64[] =
-+static unsigned char const table_b2a_base64[] =
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-+
-+
- static xmlrpc_mem_block *
--xmlrpc_base64_encode_internal (xmlrpc_env *env,
--                               unsigned char *bin_data,
--                               size_t bin_len,
--                               int want_newlines)
--{
--    size_t chunk_start, chunk_left;
--    unsigned char *ascii_data;
-+base64Encode(xmlrpc_env *          const envP,
-+             const unsigned char * const binData,
-+             size_t                const binLen,
-+             bool                  const wantNewlines) {
-+
-+    size_t chunkStart, chunkLeft;
-+    unsigned char * asciiData;
-     int leftbits;
--    unsigned char this_ch;
-+    unsigned char thisCh;
-     unsigned int leftchar;
--    xmlrpc_mem_block *output;
--    unsigned char line_buffer[BASE64_LINE_SZ];
-+    xmlrpc_mem_block * outputP;
-+    unsigned char lineBuffer[BASE64_LINE_SZ];
-+    const unsigned char * cursor;
-     /* Create a block to hold our lines when we finish them. */
--    output = xmlrpc_mem_block_new(env, 0);
--    XMLRPC_FAIL_IF_FAULT(env);
-+    outputP = xmlrpc_mem_block_new(envP, 0);
-+    XMLRPC_FAIL_IF_FAULT(envP);
-     /* Deal with empty data blocks gracefully. Yuck. */
--    if (bin_len == 0) {
--        if (want_newlines)
--            XMLRPC_TYPED_MEM_BLOCK_APPEND(char, env, output, CRLF, 2);
-+    if (binLen == 0) {
-+        if (wantNewlines)
-+            XMLRPC_MEMBLOCK_APPEND(char, envP, outputP, CRLF, 2);
-         goto cleanup;
-     }
-     /* Process our binary data in line-sized chunks. */
--    for (chunk_start=0; chunk_start < bin_len; chunk_start += BASE64_MAXBIN) {
-+    for (chunkStart = 0, cursor = &binData[0];
-+         chunkStart < binLen;
-+         chunkStart += BASE64_MAXBIN) {
-         /* Set up our per-line state. */
--        ascii_data = &line_buffer[0];
--        chunk_left = bin_len - chunk_start;
--        if (chunk_left > BASE64_MAXBIN)
--            chunk_left = BASE64_MAXBIN;
-+        asciiData = &lineBuffer[0];
-+        chunkLeft = binLen - chunkStart;
-+        if (chunkLeft > BASE64_MAXBIN)
-+            chunkLeft = BASE64_MAXBIN;
-         leftbits = 0;
-         leftchar = 0;
--        for(; chunk_left > 0; chunk_left--, bin_data++) {
-+        for(; chunkLeft > 0; --chunkLeft, ++cursor) {
-             /* Shift the data into our buffer */
--            leftchar = (leftchar << 8) | *bin_data;
-+            leftchar = (leftchar << 8) | *cursor;
-             leftbits += 8;
-             /* See if there are 6-bit groups ready */
-             while (leftbits >= 6) {
--                this_ch = (leftchar >> (leftbits-6)) & 0x3f;
-+                thisCh = (leftchar >> (leftbits-6)) & 0x3f;
-                 leftbits -= 6;
--                *ascii_data++ = table_b2a_base64[this_ch];
-+                *asciiData++ = table_b2a_base64[thisCh];
-             }
-         }
-         if (leftbits == 2) {
--            *ascii_data++ = table_b2a_base64[(leftchar&3) << 4];
--            *ascii_data++ = BASE64_PAD;
--            *ascii_data++ = BASE64_PAD;
-+            *asciiData++ = table_b2a_base64[(leftchar&3) << 4];
-+            *asciiData++ = BASE64_PAD;
-+            *asciiData++ = BASE64_PAD;
-         } else if (leftbits == 4) {
--            *ascii_data++ = table_b2a_base64[(leftchar&0xf) << 2];
--            *ascii_data++ = BASE64_PAD;
-+            *asciiData++ = table_b2a_base64[(leftchar&0xf) << 2];
-+            *asciiData++ = BASE64_PAD;
-         } 
-         /* Append a courtesy CRLF. */
--        if (want_newlines) {
--            *ascii_data++ = CR;
--            *ascii_data++ = LF;
-+        if (wantNewlines) {
-+            *asciiData++ = CR;
-+            *asciiData++ = LF;
-         }
-     
-         /* Save our line. */
--        XMLRPC_TYPED_MEM_BLOCK_APPEND(char, env, output, line_buffer,
--                                      ascii_data - &line_buffer[0]);
--        XMLRPC_FAIL_IF_FAULT(env);
-+        XMLRPC_MEMBLOCK_APPEND(char, envP, outputP, lineBuffer,
-+                               asciiData - &lineBuffer[0]);
-+        XMLRPC_FAIL_IF_FAULT(envP);
-     }
-  cleanup:
--    if (env->fault_occurred) {
--        if (output)
--            xmlrpc_mem_block_free(output);
-+    if (envP->fault_occurred) {
-+        if (outputP)
-+            xmlrpc_mem_block_free(outputP);
-         return NULL;
-     }
--    return output;
-+    return outputP;
- }
-+
- xmlrpc_mem_block *
--xmlrpc_base64_encode (xmlrpc_env *env, unsigned char *bin_data, size_t bin_len)
--{
--    return xmlrpc_base64_encode_internal(env, bin_data, bin_len, 1);
-+xmlrpc_base64_encode(xmlrpc_env *          const envP,
-+                     const unsigned char * const binData,
-+                     size_t                const binLen) {
-+
-+    return base64Encode(envP, binData, binLen, true);
- }
-+
- xmlrpc_mem_block *
--xmlrpc_base64_encode_without_newlines (xmlrpc_env *env,
--                                       unsigned char *bin_data,
--                                       size_t bin_len)
--{
--    return xmlrpc_base64_encode_internal(env, bin_data, bin_len, 0);
-+xmlrpc_base64_encode_without_newlines(xmlrpc_env *          const envP,
-+                                      const unsigned char * const binData,
-+                                      size_t                const binLen) {
-+
-+    return base64Encode(envP, binData, binLen, false);
- }
-+
- xmlrpc_mem_block *
--xmlrpc_base64_decode (xmlrpc_env * const env,
--                      const char * const ascii_data,
--                      size_t       const ascii_len) {
-+xmlrpc_base64_decode(xmlrpc_env * const envP,
-+                     const char * const asciiData,
-+                     size_t       const acsiiLen) {
--    unsigned char *bin_data;
-+    unsigned char * binData;
-     int leftbits;
--    unsigned char this_ch;
-+    unsigned char thisCh;
-     unsigned int leftchar;
-     size_t npad;
--    size_t bin_len, buffer_size;
--    xmlrpc_mem_block *output;
--    const char * next_char;
--    size_t remaining_len;
-+    size_t binLen, bufferSize;
-+    xmlrpc_mem_block * outputP;
-+    const char * nextCharP;
-+    size_t remainingLen;
-     /* Create a block to hold our chunks when we finish them.
-     ** We overestimate the size now, and fix it later. */
--    buffer_size = ((ascii_len+3)/4)*3;
--    output = xmlrpc_mem_block_new(env, buffer_size);
--    XMLRPC_FAIL_IF_FAULT(env);
-+    bufferSize = ((acsiiLen + 3) / 4) * 3;
-+    outputP = xmlrpc_mem_block_new(envP, bufferSize);
-+    XMLRPC_FAIL_IF_FAULT(envP);
-     /* Set up our decoder state. */
-     leftbits = 0;
-     leftchar = 0;
-     npad = 0;
--    bin_data = XMLRPC_TYPED_MEM_BLOCK_CONTENTS(unsigned char, output);
--    bin_len = 0;
-+    binData = XMLRPC_MEMBLOCK_CONTENTS(unsigned char, outputP);
-+    binLen = 0;
--    for (remaining_len = ascii_len, next_char = ascii_data;
--         remaining_len > 0; 
--         --remaining_len, ++next_char) {
-+    for (remainingLen = acsiiLen, nextCharP = asciiData;
-+         remainingLen > 0; 
-+         --remainingLen, ++nextCharP) {
-         /* Skip some punctuation. */
--        this_ch = (*next_char & 0x7f);
--        if ( this_ch == '\r' || this_ch == '\n' || this_ch == ' ' )
-+        thisCh = (*nextCharP & 0x7f);
-+        if (thisCh == '\r' || thisCh == '\n' || thisCh == ' ')
-             continue;
--        if ( this_ch == BASE64_PAD )
--            npad++;
--        this_ch = table_a2b_base64[(*next_char) & 0x7f];
-+        if (thisCh == BASE64_PAD)
-+            ++npad;
-+        thisCh = table_a2b_base64[(*nextCharP) & 0x7f];
-         /* XXX - We just throw away invalid characters. Is this right? */
--        if ( this_ch == (unsigned char) -1 ) continue;
-+        if (thisCh == (unsigned char) -1)
-+            continue;
--        /* Shift it in on the low end, and see if there's
--        ** a byte ready for output. */
--        leftchar = (leftchar << 6) | (this_ch);
-+        /* Shift it in on the low end, and see if there's a byte ready for
-+           output.
-+        */
-+        leftchar = (leftchar << 6) | (thisCh);
-         leftbits += 6;
--        if ( leftbits >= 8 ) {
-+        if (leftbits >= 8) {
-             leftbits -= 8;
--            XMLRPC_ASSERT(bin_len < buffer_size);
--            *bin_data++ = (leftchar >> leftbits) & 0xFF;
-+            XMLRPC_ASSERT(binLen < bufferSize);
-+            *binData++ = (leftchar >> leftbits) & 0xFF;
-             leftchar &= ((1 << leftbits) - 1);
--            bin_len++;
-+            ++binLen;
-         }
-     }
-     /* Check that no bits are left. */
--    if ( leftbits )
--        XMLRPC_FAIL(env, XMLRPC_PARSE_ERROR, "Incorrect Base64 padding");
-+    if (leftbits)
-+        XMLRPC_FAIL(envP, XMLRPC_PARSE_ERROR, "Incorrect Base64 padding");
-     /* Check to make sure we have a sane amount of padding. */
--    if (npad > bin_len || npad > 2)
--        XMLRPC_FAIL(env, XMLRPC_PARSE_ERROR, "Malformed Base64 data");
-+    if (npad > binLen || npad > 2)
-+        XMLRPC_FAIL(envP, XMLRPC_PARSE_ERROR, "Malformed Base64 data");
-     /* Remove any padding and set the correct size. */
--    bin_len -= npad;
--    XMLRPC_TYPED_MEM_BLOCK_RESIZE(char, env, output, bin_len);
--    XMLRPC_ASSERT(!env->fault_occurred);
--
--                      cleanup:
--    if (env->fault_occurred) {
--        if (output)
--            xmlrpc_mem_block_free(output);
-+    binLen -= npad;
-+    XMLRPC_MEMBLOCK_RESIZE(char, envP, outputP, binLen);
-+    XMLRPC_ASSERT(!envP->fault_occurred);
-+
-+                     cleanup:
-+    if (envP->fault_occurred) {
-+        if (outputP)
-+            xmlrpc_mem_block_free(outputP);
-         return NULL;
-     }
--    return output;
-+    return outputP;
- }
-diff --git a/libs/xmlrpc-c/src/xmlrpc_build.c b/libs/xmlrpc-c/src/xmlrpc_build.c
-index 19e2a55..b44f471 100644
---- a/libs/xmlrpc-c/src/xmlrpc_build.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_build.c
-@@ -17,16 +17,6 @@
- #include "xmlrpc-c/string_int.h"
--/*=========================================================================
--**  Creating XML-RPC values.
--**=========================================================================
--**  Build new XML-RPC values from a format string. This code is heavily
--**  inspired by Py_BuildValue from Python 1.5.2. In particular, our
--**  particular abuse of the va_list data type is copied from the equivalent
--**  Python code in modsupport.c. Since Python is portable, our code should
--**  (in theory) also be portable.
--*/
--
- static void
- getString(xmlrpc_env *    const envP,
-@@ -35,11 +25,11 @@ getString(xmlrpc_env *    const envP,
-           xmlrpc_value ** const valPP) {
-     const char * str;
--    unsigned int len;
-+    size_t len;
-     
-     str = (const char*) va_arg(argsP->v, char*);
--    if (**formatP == '#') {
--        (*formatP)++;
-+    if (*(*formatP) == '#') {
-+        ++(*formatP);
-         len = (size_t) va_arg(argsP->v, size_t);
-     } else
-         len = strlen(str);
-@@ -399,10 +389,12 @@ xmlrpc_build_value(xmlrpc_env * const envP,
-     if (!envP->fault_occurred) {
-         if (*suffix != '\0')
--            xmlrpc_env_set_fault_formatted(
--                envP, XMLRPC_INTERNAL_ERROR, "Junk after the argument "
--                "specifier: '%s'.  There must be exactly one arument.",
--                suffix);
-+            xmlrpc_faultf(envP, "Junk after the format specifier: '%s'.  "
-+                          "The format string must describe exactly "
-+                          "one XML-RPC value "
-+                          "(but it might be a compound value "
-+                          "such as an array)",
-+                          suffix);
-     
-         if (envP->fault_occurred)
-             xmlrpc_DECREF(retval);
-diff --git a/libs/xmlrpc-c/src/xmlrpc_builddecomp.c b/libs/xmlrpc-c/src/xmlrpc_builddecomp.c
-deleted file mode 100644
-index e770652..0000000
---- a/libs/xmlrpc-c/src/xmlrpc_builddecomp.c
-+++ /dev/null
-@@ -1,973 +0,0 @@
--/* Copyright information is at end of file */
--
--#include "xmlrpc_config.h"
--
--#include <stddef.h>
--#include <stdlib.h>
--#include <stdarg.h>
--#include <string.h>
--
--#include "bool.h"
--#include "xmlrpc-c/base.h"
--#include "xmlrpc-c/base_int.h"
--
--/* Borrowed from Python 1.5.2.
--** MPW pushes 'extended' for float and double types with varargs */
--#ifdef MPW
--typedef extended va_double;
--#else
--typedef double va_double;
--#endif
--
--/* Borrowed from Python 1.5.2.
--** Python copies its va_list objects before using them in certain
--** tricky fashions. We don't why Python does this, but since we're
--** abusing our va_list objects in a similar fashion, we'll copy them
--** too. */
--#if VA_LIST_IS_ARRAY
--#define VA_LIST_COPY(dest,src) memcpy((dest), (src), sizeof(va_list))
--#else
--#if __sun
--#define VA_LIST_COPY(dest,src) va_copy((dest),(src))
--#else
--#define VA_LIST_COPY(dest,src) ((dest) = (src))
--#endif
--#endif
--
--/*=========================================================================
--**  Creating XML-RPC values.
--**=========================================================================
--**  Build new XML-RPC values from a format string. This code is heavily
--**  inspired by Py_BuildValue from Python 1.5.2. In particular, our
--**  particular abuse of the va_list data type is copied from the equivalent
--**  Python code in modsupport.c. Since Python is portable, our code should
--**  (in theory) also be portable.
--*/
--
--
--static void
--getString(xmlrpc_env *    const envP,
--          const char **   const formatP,
--          va_list *       const args,
--          xmlrpc_value ** const valPP) {
--
--    const char * str;
--    unsigned int len;
--    
--    str = (const char*) va_arg(*args, char*);
--    if (**formatP == '#') {
--        (*formatP)++;
--        len = (size_t) va_arg(*args, size_t);
--    } else
--        len = strlen(str);
--
--    *valPP = xmlrpc_string_new_lp(envP, len, str);
--}
--
--
--
--#ifdef HAVE_UNICODE_WCHAR
--static void
--mkWideString(xmlrpc_env *    const envP,
--             wchar_t *       const wcs,
--             size_t          const wcs_len,
--             xmlrpc_value ** const valPP) {
--
--    xmlrpc_value * valP;
--    char *contents;
--    wchar_t *wcs_contents;
--    int block_is_inited;
--    xmlrpc_mem_block *utf8_block;
--    char *utf8_contents;
--    size_t utf8_len;
--
--    /* Error-handling preconditions. */
--    valP = NULL;
--    utf8_block = NULL;
--    block_is_inited = 0;
--
--    /* Initialize our XML-RPC value. */
--    valP = (xmlrpc_value*) malloc(sizeof(xmlrpc_value));
--    XMLRPC_FAIL_IF_NULL(valP, envP, XMLRPC_INTERNAL_ERROR,
--                        "Could not allocate memory for wide string");
--    valP->_refcount = 1;
--    valP->_type = XMLRPC_TYPE_STRING;
--
--    /* More error-handling preconditions. */
--    valP->_wcs_block = NULL;
--
--    /* Build our wchar_t block first. */
--    valP->_wcs_block =
--        XMLRPC_TYPED_MEM_BLOCK_NEW(wchar_t, envP, wcs_len + 1);
--    XMLRPC_FAIL_IF_FAULT(envP);
--    wcs_contents =
--        XMLRPC_TYPED_MEM_BLOCK_CONTENTS(wchar_t, valP->_wcs_block);
--    memcpy(wcs_contents, wcs, wcs_len * sizeof(wchar_t));
--    wcs_contents[wcs_len] = '\0';
--    
--    /* Convert the wcs block to UTF-8. */
--    utf8_block = xmlrpc_wcs_to_utf8(envP, wcs_contents, wcs_len + 1);
--    XMLRPC_FAIL_IF_FAULT(envP);
--    utf8_contents = XMLRPC_TYPED_MEM_BLOCK_CONTENTS(char, utf8_block);
--    utf8_len = XMLRPC_TYPED_MEM_BLOCK_SIZE(char, utf8_block);
--
--    /* XXX - We need an extra memcopy to initialize _block. */
--    XMLRPC_TYPED_MEM_BLOCK_INIT(char, envP, &valP->_block, utf8_len);
--    XMLRPC_FAIL_IF_FAULT(envP);
--    block_is_inited = 1;
--    contents = XMLRPC_TYPED_MEM_BLOCK_CONTENTS(char, &valP->_block);
--    memcpy(contents, utf8_contents, utf8_len);
--
-- cleanup:
--    if (utf8_block)
--        xmlrpc_mem_block_free(utf8_block);
--    if (envP->fault_occurred) {
--        if (valP) {
--            if (valP->_wcs_block)
--                xmlrpc_mem_block_free(valP->_wcs_block);
--            if (block_is_inited)
--                xmlrpc_mem_block_clean(&valP->_block);
--            free(valP);
--        }
--    }
--    *valPP = valP;
--}
--#endif /* HAVE_UNICODE_WCHAR */
--
--
--
--static void
--getWideString(xmlrpc_env *    const envP,
--              const char **   const formatP,
--              va_list *       const args,
--              xmlrpc_value ** const valPP) {
--#ifdef HAVE_UNICODE_WCHAR
--
--    wchar_t *wcs;
--    size_t len;
--    
--    wcs = (wchar_t*) va_arg(*args, wchar_t*);
--    if (**formatP == '#') {
--        (*formatP)++;
--        len = (size_t) va_arg(*args, size_t);
--    } else
--        len = wcslen(wcs);
--
--    mkWideString(envP, wcs, len, valPP);
--
--#endif /* HAVE_UNICODE_WCHAR */
--}
--
--
--
--static void
--getBase64(xmlrpc_env *    const envP,
--          va_list *       const args,
--          xmlrpc_value ** const valPP) {
--
--    unsigned char * value;
--    size_t          length;
--    
--    value  = (unsigned char*) va_arg(*args, unsigned char*);
--    length = (size_t)         va_arg(*args, size_t);
--
--    *valPP = xmlrpc_base64_new(envP, length, value);
--}
--
--
--
--static void
--getValue(xmlrpc_env *    const envP, 
--         const char**    const format, 
--         va_list *             args,
--         xmlrpc_value ** const valPP);
--
--
--
--static void
--getArray(xmlrpc_env *    const envP,
--         const char **   const formatP,
--         char            const delimiter,
--         va_list *       const args,
--         xmlrpc_value ** const arrayPP) {
--
--    xmlrpc_value * arrayP;
--
--    arrayP = xmlrpc_array_new(envP);
--
--    /* Add items to the array until we hit our delimiter. */
--    
--    while (**formatP != delimiter && !envP->fault_occurred) {
--        
--        xmlrpc_value * itemP;
--        
--        if (**formatP == '\0')
--            xmlrpc_env_set_fault(
--                envP, XMLRPC_INTERNAL_ERROR,
--                "format string ended before closing ')'.");
--        else {
--            getValue(envP, formatP, args, &itemP);
--            if (!envP->fault_occurred) {
--                xmlrpc_array_append_item(envP, arrayP, itemP);
--                xmlrpc_DECREF(itemP);
--            }
--        }
--    }
--    if (envP->fault_occurred)
--        xmlrpc_DECREF(arrayP);
--
--    *arrayPP = arrayP;
--}
--
--
--
--static void
--getStructMember(xmlrpc_env *    const envP,
--                const char **   const formatP,
--                va_list *       const args,
--                xmlrpc_value ** const keyPP,
--                xmlrpc_value ** const valuePP) {
--
--
--    /* Get the key */
--    getValue(envP, formatP, args, keyPP);
--    if (!envP->fault_occurred) {
--        if (**formatP != ':')
--            xmlrpc_env_set_fault(
--                envP, XMLRPC_INTERNAL_ERROR,
--                "format string does not have ':' after a "
--                "structure member key.");
--        else {
--            /* Skip over colon that separates key from value */
--            (*formatP)++;
--            
--            /* Get the value */
--            getValue(envP, formatP, args, valuePP);
--        }
--        if (envP->fault_occurred)
--            xmlrpc_DECREF(*keyPP);
--    }
--}
--            
--            
--
--static void
--getStruct(xmlrpc_env *    const envP,
--          const char **   const formatP,
--          char            const delimiter,
--          va_list *       const args,
--          xmlrpc_value ** const structPP) {
--
--    xmlrpc_value * structP;
--
--    structP = xmlrpc_struct_new(envP);
--    if (!envP->fault_occurred) {
--        while (**formatP != delimiter && !envP->fault_occurred) {
--            xmlrpc_value * keyP;
--            xmlrpc_value * valueP;
--            
--            getStructMember(envP, formatP, args, &keyP, &valueP);
--            
--            if (!envP->fault_occurred) {
--                if (**formatP == ',')
--                    (*formatP)++;  /* Skip over the comma */
--                else if (**formatP == delimiter) {
--                    /* End of the line */
--                } else 
--                    xmlrpc_env_set_fault(
--                        envP, XMLRPC_INTERNAL_ERROR,
--                        "format string does not have ',' or ')' after "
--                        "a structure member");
--                
--                if (!envP->fault_occurred)
--                    /* Add the new member to the struct. */
--                    xmlrpc_struct_set_value_v(envP, structP, keyP, valueP);
--                
--                xmlrpc_DECREF(valueP);
--                xmlrpc_DECREF(keyP);
--            }
--        }
--        if (envP->fault_occurred)
--            xmlrpc_DECREF(structP);
--    }
--    *structPP = structP;
--}
--
--
--
--static void
--mkArrayFromVal(xmlrpc_env *    const envP, 
--               xmlrpc_value *  const value,
--               xmlrpc_value ** const valPP) {
--
--    if (xmlrpc_value_type(value) != XMLRPC_TYPE_ARRAY)
--        xmlrpc_env_set_fault(envP, XMLRPC_INTERNAL_ERROR,
--                             "Array format ('A'), non-array xmlrpc_value");
--    else
--        xmlrpc_INCREF(value);
--
--    *valPP = value;
--}
--
--
--
--static void
--mkStructFromVal(xmlrpc_env *    const envP, 
--                xmlrpc_value *  const value,
--                xmlrpc_value ** const valPP) {
--
--    if (xmlrpc_value_type(value) != XMLRPC_TYPE_STRUCT)
--        xmlrpc_env_set_fault(envP, XMLRPC_INTERNAL_ERROR,
--                             "Struct format ('S'), non-struct xmlrpc_value");
--    else
--        xmlrpc_INCREF(value);
--
--    *valPP = value;
--}
--
--
--
--static void
--getValue(xmlrpc_env *    const envP, 
--         const char**    const formatP,
--         va_list *       const args,
--         xmlrpc_value ** const valPP) {
--/*----------------------------------------------------------------------------
--   Get the next value from the list.  *formatP points to the specifier
--   for the next value in the format string (i.e. to the type code
--   character) and we move *formatP past the whole specifier for the
--   next value.  We read the required arguments from 'args'.  We return
--   the value as *valPP with a reference to it.
--
--   For example, if *formatP points to the "i" in the string "sis",
--   we read one argument from 'args' and return as *valP an integer whose
--   value is the argument we read.  We advance *formatP to point to the
--   last 's' and advance 'args' to point to the argument that belongs to
--   that 's'.
-------------------------------------------------------------------------------*/
--    char const formatChar = *(*formatP)++;
--
--    switch (formatChar) {
--    case 'i':
--        *valPP = 
--            xmlrpc_int_new(envP, (xmlrpc_int32) va_arg(*args, xmlrpc_int32));
--        break;
--
--    case 'b':
--        *valPP = 
--            xmlrpc_bool_new(envP, (xmlrpc_bool) va_arg(*args, xmlrpc_bool));
--        break;
--
--    case 'd':
--        *valPP =
--            xmlrpc_double_new(envP, (double) va_arg(*args, va_double));
--        break;
--
--    case 's':
--        getString(envP, formatP, args, valPP);
--        break;
--
--    case 'w':
--        getWideString(envP, formatP, args, valPP);
--        break;
--
--    /* The code 't' is reserved for a better, time_t based
--       implementation of dateTime conversion.  
--    */
--    case '8':
--        *valPP = 
--            xmlrpc_datetime_new_str(envP, (char*) va_arg(*args, char*));
--        break;
--
--    case '6':
--        getBase64(envP, args, valPP);
--        break;
--
--    case 'n':
--        *valPP =
--            xmlrpc_nil_new(envP);
--        break;      
--
--    case 'p':
--        /* We might someday want to use the code 'p!' to read in a
--           cleanup function for this pointer. 
--        */
--        *valPP = 
--            xmlrpc_cptr_new(envP, (void*) va_arg(*args, void*));
--        break;      
--
--    case 'A':
--        mkArrayFromVal(envP, (xmlrpc_value*) va_arg(*args, xmlrpc_value*),
--                       valPP);
--        break;
--
--    case 'S':
--        mkStructFromVal(envP, (xmlrpc_value*) va_arg(*args, xmlrpc_value*),
--                        valPP);
--        break;
--
--    case 'V':
--        *valPP = (xmlrpc_value*) va_arg(*args, xmlrpc_value*);
--        xmlrpc_INCREF(*valPP);
--        break;
--
--    case '(':
--        getArray(envP, formatP, ')', args, valPP);
--        if (!envP->fault_occurred) {
--            XMLRPC_ASSERT(**formatP == ')');
--            (*formatP)++;  /* Skip over closing parenthesis */
--        }
--        break;
--
--    case '{': 
--        getStruct(envP, formatP, '}', args, valPP);
--        if (!envP->fault_occurred) {
--            XMLRPC_ASSERT(**formatP == '}');
--            (*formatP)++;  /* Skip over closing brace */
--        }
--        break;
--
--    default: {
--        const char * const badCharacter = xmlrpc_makePrintableChar(formatChar);
--        xmlrpc_env_set_fault_formatted(
--            envP, XMLRPC_INTERNAL_ERROR,
--            "Unexpected character '%s' in format string", badCharacter);
--        xmlrpc_strfree(badCharacter);
--        }
--    }
--}
--
--
--
--void
--xmlrpc_build_value_va(xmlrpc_env *    const envP,
--                      const char *    const format,
--                      va_list               args,
--                      xmlrpc_value ** const valPP,
--                      const char **   const tailP) {
--
--    const char * formatCursor;
--    va_list args_copy;
--
--    XMLRPC_ASSERT_ENV_OK(envP);
--    XMLRPC_ASSERT(format != NULL);
--
--    if (strlen(format) == 0)
--        xmlrpc_env_set_fault_formatted(
--            envP, XMLRPC_INTERNAL_ERROR, "Format string is empty.");
--    else {
--        formatCursor = &format[0];
--        VA_LIST_COPY(args_copy, args);
--        getValue(envP, &formatCursor, &args_copy, valPP);
--        
--        if (!envP->fault_occurred)
--            XMLRPC_ASSERT_VALUE_OK(*valPP);
--        
--        *tailP = formatCursor;
--    }
--}
--
--
--
--xmlrpc_value * 
--xmlrpc_build_value(xmlrpc_env * const envP,
--                   const char * const format, 
--                   ...) {
--
--    va_list args;
--    xmlrpc_value* retval;
--    const char * suffix;
--
--    va_start(args, format);
--    xmlrpc_build_value_va(envP, format, args, &retval, &suffix);
--    va_end(args);
--
--    if (!envP->fault_occurred) {
--        if (*suffix != '\0')
--            xmlrpc_env_set_fault_formatted(
--                envP, XMLRPC_INTERNAL_ERROR, "Junk after the argument "
--                "specifier: '%s'.  There must be exactly one arument.",
--                suffix);
--    
--        if (envP->fault_occurred)
--            xmlrpc_DECREF(retval);
--    }
--    return retval;
--}
--
--
--
--
--
--/*=========================================================================
--**  Parsing XML-RPC values.
--**=========================================================================
--**  Parse an XML-RPC value based on a format string. This code is heavily
--**  inspired by Py_BuildValue from Python 1.5.2.
--*/
--
--/* Prototype for recursive invocation: */
--
--static void 
--decomposeValue(xmlrpc_env *   const env,
--               xmlrpc_value * const val,
--               const char **  const format,
--               va_list *            args,
--               xmlrpc_bool    const oldstyleMemMgmt);
--
--
--
--static void 
--parsearray(xmlrpc_env *         const env,
--           const xmlrpc_value * const array,
--           const char **        const format,
--           char                 const delimiter,
--           va_list *                  args,
--           xmlrpc_bool          const oldstyleMemMgmt) {
--
--    int size, i;
--    xmlrpc_value *item;
--
--    /* Fetch the array size. */
--    size = xmlrpc_array_size(env, array);
--    XMLRPC_FAIL_IF_FAULT(env);
--
--    /* Loop over the items in the array. */
--    for (i = 0; i < size; i++) {
--        /* Bail out if the caller didn't care about the rest of the items. */
--        if (**format == '*')
--            break;
--
--        item = xmlrpc_array_get_item(env, array, i);
--        XMLRPC_FAIL_IF_FAULT(env);
--
--        XMLRPC_ASSERT(**format != '\0');
--        if (**format == delimiter)
--            XMLRPC_FAIL(env, XMLRPC_INDEX_ERROR, "Too many items in array");
--        decomposeValue(env, item, format, args, oldstyleMemMgmt);
--        XMLRPC_FAIL_IF_FAULT(env);
--    }
--    if (**format == '*')
--        (*format)++;
--    if (**format != delimiter)
--        XMLRPC_FAIL(env, XMLRPC_INDEX_ERROR, "Not enough items in array");
--
--           cleanup:
--    return;
--}
--
--
--
--static void 
--parsestruct(xmlrpc_env *   const env,
--            xmlrpc_value * const strct,
--            const char **  const format,
--            char           const delimiter,
--            va_list *            args,
--            xmlrpc_bool    const oldstyleMemMgmt) {
--
--    xmlrpc_value *key, *value;
--    char *keystr;
--    size_t keylen;
--
--    /* Set up error handling preconditions. */
--    key = NULL;
--
--    /* Build the members of our struct. */
--    while (**format != '*' && **format != delimiter && **format != '\0') {
--
--        /* Get our key, and skip over the ':' character. Notice the
--        ** sudden call to getValue--we're going in the opposite direction. */
--        getValue(env, format, args, &key);
--        XMLRPC_FAIL_IF_FAULT(env);
--        XMLRPC_ASSERT(**format == ':');
--        (*format)++;
--
--        /* Look up the value for our key. */
--        xmlrpc_parse_value(env, key, "s#", &keystr, &keylen);
--        XMLRPC_FAIL_IF_FAULT(env);
--        value = xmlrpc_struct_get_value_n(env, strct, keystr, keylen);
--        XMLRPC_FAIL_IF_FAULT(env);
--
--        /* Get our value, and skip over the ',' character (if present). */
--        decomposeValue(env, value, format, args, oldstyleMemMgmt);
--        XMLRPC_FAIL_IF_FAULT(env);
--        XMLRPC_ASSERT(**format == ',' || **format == delimiter);
--        if (**format == ',')
--            (*format)++;
--
--        /* Release our reference, and restore our invariant. */
--        xmlrpc_DECREF(key);
--        key = NULL;
--    }
--    if (**format == '*') {
--        (*format)++;
--        if (**format != delimiter && **format != '\0')
--            XMLRPC_FAIL(env, XMLRPC_INTERNAL_ERROR, 
--                        "* can appear only at the end "
--                        "of a structure format specifier");
--    } else {
--        /* Here we're supposed to fail if he didn't extract all the
--           members.  But we don't know how to determine whether he
--           specified all the members, so we always fail.
--        */
--        XMLRPC_FAIL(env, XMLRPC_INTERNAL_ERROR, "You must specify '*' as the "
--                    "last member of a structure in a format specifier "
--                    "used for parsing an xmlrpc_value"); 
--    }
--    XMLRPC_ASSERT(**format == delimiter || **format == '\0');
--
--cleanup:
--    if (key)
--        xmlrpc_DECREF(key);
--}
--
--
--static void
--readString(xmlrpc_env *         const envP,
--           const xmlrpc_value * const valueP,
--           const char **        const stringValueP,
--           xmlrpc_bool          const oldstyleMemMgmt) {
--
--    if (oldstyleMemMgmt) {
--        xmlrpc_read_string_old(envP, valueP, stringValueP);
--    } else
--        xmlrpc_read_string(envP, valueP, stringValueP);
--}
--
--
--
--static void
--readStringLp(xmlrpc_env *         const envP,
--             const xmlrpc_value * const valueP,
--             size_t *             const lengthP,
--             const char **        const stringValueP,
--             xmlrpc_bool          const oldstyleMemMgmt) {
--
--    if (oldstyleMemMgmt) {
--        xmlrpc_read_string_lp_old(envP, valueP, lengthP, stringValueP);
--    } else
--        xmlrpc_read_string_lp(envP, valueP, lengthP, stringValueP);
--}
--
--
--
--#ifdef HAVE_UNICODE_WCHAR
--static void
--readStringW(xmlrpc_env *     const envP,
--            xmlrpc_value *   const valueP,
--            const wchar_t ** const stringValueP,
--            xmlrpc_bool      const oldstyleMemMgmt) {
--
--    if (oldstyleMemMgmt) {
--        xmlrpc_read_string_w_old(envP, valueP, stringValueP);
--    } else
--        xmlrpc_read_string_w(envP, valueP, stringValueP);
--}
--
--
--
--static void
--readStringWLp(xmlrpc_env *     const envP,
--              xmlrpc_value *   const valueP,
--              size_t *         const lengthP,
--              const wchar_t ** const stringValueP,
--              xmlrpc_bool      const oldstyleMemMgmt) {
--
--    if (oldstyleMemMgmt) {
--        xmlrpc_read_string_w_lp_old(envP, valueP, lengthP, stringValueP);
--    } else
--        xmlrpc_read_string_w_lp(envP, valueP, lengthP, stringValueP);
--}
--#endif
--
--
--static void
--readDatetimeStr(xmlrpc_env *         const envP,
--                const xmlrpc_value * const valueP,
--                const char **        const stringValueP,
--                xmlrpc_bool          const oldstyleMemMgmt) {
--
--    if (oldstyleMemMgmt)
--        xmlrpc_read_datetime_str_old(envP, valueP, stringValueP);
--    else
--        xmlrpc_read_datetime_str(envP, valueP, stringValueP);
--}
--
--
--
--static void
--readBase64(xmlrpc_env *           const envP,
--           const xmlrpc_value *   const valueP,
--           size_t *               const lengthP,
--           const unsigned char ** const byteStringValueP,
--           xmlrpc_bool            const oldstyleMemMgmt) {
--
--    if (oldstyleMemMgmt)
--        xmlrpc_read_base64_old(envP, valueP, lengthP, byteStringValueP);
--    else
--        xmlrpc_read_base64(envP, valueP, lengthP, byteStringValueP);
--}
--
--
--
--static void 
--decomposeValue(xmlrpc_env *   const envP,
--               xmlrpc_value * const valueP,
--               const char **  const format,
--               va_list *            args,
--               xmlrpc_bool    const oldstyleMemMgmt) {
--
--    char formatSpecChar;
--
--    formatSpecChar = *(*format)++;
--
--    switch (formatSpecChar) {
--    case 'i': {
--        xmlrpc_int32 * const int32ptr = 
--            (xmlrpc_int32*) va_arg(*args, xmlrpc_int32*);
--        xmlrpc_read_int(envP, valueP, int32ptr);
--        }
--    break;
--
--    case 'b': {
--        xmlrpc_bool * const boolptr =
--            (xmlrpc_bool*) va_arg(*args, xmlrpc_bool*);
--        xmlrpc_read_bool(envP, valueP, boolptr);
--    }
--    break;
--
--    case 'd': {
--        double * const doubleptr = (double*) va_arg(*args, double*);
--        xmlrpc_read_double(envP, valueP, doubleptr);
--    }
--    break;
--
--    case '8': {
--        /* The code 't' is reserved for a better, time_t based
--           implementation of dateTime conversion. 
--        */
--        const char ** const strptr = (const char**) va_arg(*args, char**);
--        readDatetimeStr(envP, valueP, strptr, oldstyleMemMgmt);
--    }
--    break;
--
--    case 's': {
--        const char ** const strptr = (const char**) va_arg(*args, char**);
--        if (**format == '#') {
--            size_t * const sizeptr = (size_t*) va_arg(*args, size_t**);
--            (*format)++;
--
--            readStringLp(envP, valueP, sizeptr, strptr, oldstyleMemMgmt);
--        } else
--            readString(envP, valueP, strptr, oldstyleMemMgmt);
--    }
--    break;
--
--    case 'w': {
--#ifdef HAVE_UNICODE_WCHAR
--        const wchar_t ** const wcsptr = 
--            (const wchar_t**) va_arg(*args, wchar_t**);
--        if (**format == '#') {
--            size_t * const sizeptr = (size_t*) va_arg(*args, size_t**);
--            (*format)++;
--            readStringWLp(envP, valueP, sizeptr, wcsptr, oldstyleMemMgmt);
--        } else
--            readStringW(envP, valueP, wcsptr, oldstyleMemMgmt);
--#else
--        xmlrpc_env_set_fault_formatted(
--            envP, XMLRPC_INTERNAL_ERROR,
--            "This XML-RPC For C/C++ library was built without Unicode "
--            "wide character capability.  'w' isn't available.");
--#endif /* HAVE_UNICODE_WCHAR */
--    }
--    break;
--        
--    case '6': {
--        const unsigned char ** const binptr =
--            (const unsigned char**) va_arg(*args, unsigned char**);
--        size_t * const sizeptr = (size_t*) va_arg(*args, size_t**);        
--        readBase64(envP, valueP, sizeptr, binptr, oldstyleMemMgmt);
--    }
--    break;
--
--    case 'n': {
--        xmlrpc_read_nil(envP, valueP);
--    }
--    break;
--
--    case 'p': {
--        void ** const voidptrptr = (void**) va_arg(*args, void**);
--        xmlrpc_read_cptr(envP, valueP, voidptrptr);
--    }
--    break;
--
--    case 'V': {
--        xmlrpc_value ** const valptr =
--            (xmlrpc_value**) va_arg(*args, xmlrpc_value**);
--        *valptr = valueP;
--        if (!oldstyleMemMgmt)
--            xmlrpc_INCREF(valueP);
--    }
--    break;
--
--    case 'A':
--        if (xmlrpc_value_type(valueP) != XMLRPC_TYPE_ARRAY)
--            xmlrpc_env_set_fault_formatted(
--                envP, XMLRPC_TYPE_ERROR, "Non-array type supplied for "
--                "'A' specifier");
--        else {
--            xmlrpc_value ** const valptr =
--                (xmlrpc_value**) va_arg(*args, xmlrpc_value**);
--            *valptr = valueP;
--            if (!oldstyleMemMgmt)
--                xmlrpc_INCREF(valueP);
--        }
--        break;
--
--    case 'S':
--        if (xmlrpc_value_type(valueP) != XMLRPC_TYPE_STRUCT)
--            xmlrpc_env_set_fault_formatted(
--                envP, XMLRPC_TYPE_ERROR, "Non-struct type supplied for "
--                "'S' specifier");
--        else {
--            xmlrpc_value ** const valptr =
--                (xmlrpc_value**) va_arg(*args, xmlrpc_value**);
--            *valptr = valueP;
--            if (!oldstyleMemMgmt)
--                xmlrpc_INCREF(valueP);
--        }
--        break;
--
--    case '(':
--        if (xmlrpc_value_type(valueP) != XMLRPC_TYPE_ARRAY)
--            xmlrpc_env_set_fault_formatted(
--                envP, XMLRPC_TYPE_ERROR, "Non-array type supplied for "
--                "'()' specifier");
--        else {
--            parsearray(envP, valueP, format, ')', args, oldstyleMemMgmt);
--            (*format)++;
--        }
--        break;
--
--    case '{':
--        if (xmlrpc_value_type(valueP) != XMLRPC_TYPE_STRUCT)
--            xmlrpc_env_set_fault_formatted(
--                envP, XMLRPC_TYPE_ERROR, "Non-struct type supplied for "
--                "'{}' specifier");
--        else {
--            parsestruct(envP, valueP, format, '}', args, oldstyleMemMgmt);
--            (*format)++;
--        }
--        break;
--
--    default:
--        xmlrpc_env_set_fault_formatted(
--            envP, XMLRPC_INTERNAL_ERROR, "Invalid format character '%c'",
--            formatSpecChar);
--    }
--}
--
--
--
--void 
--xmlrpc_decompose_value_va(xmlrpc_env *   const envP,
--                          xmlrpc_value * const value,
--                          const char *   const format,
--                          va_list              args) {
--
--    const char *format_copy;
--    va_list args_copy;
--
--    XMLRPC_ASSERT_ENV_OK(envP);
--    XMLRPC_ASSERT_VALUE_OK(value);
--    XMLRPC_ASSERT(format != NULL);
--
--    format_copy = format;
--    VA_LIST_COPY(args_copy, args);
--    decomposeValue(envP, value, &format_copy, &args_copy, FALSE);
--    if (!envP->fault_occurred) {
--        XMLRPC_ASSERT(*format_copy == '\0');
--    }
--}
--
--
--
--void 
--xmlrpc_decompose_value(xmlrpc_env *   const envP,
--                       xmlrpc_value * const value,
--                       const char *   const format, 
--                       ...) {
--
--    va_list args;
--
--    va_start(args, format);
--    xmlrpc_decompose_value_va(envP, value, format, args);
--    va_end(args);
--}
--
--
--
--void 
--xmlrpc_parse_value_va(xmlrpc_env *   const envP,
--                      xmlrpc_value * const value,
--                      const char *   const format,
--                      va_list              args) {
--
--    const char *format_copy;
--    va_list args_copy;
--
--    XMLRPC_ASSERT_ENV_OK(envP);
--    XMLRPC_ASSERT_VALUE_OK(value);
--    XMLRPC_ASSERT(format != NULL);
--
--    format_copy = format;
--    VA_LIST_COPY(args_copy, args);
--    decomposeValue(envP, value, &format_copy, &args_copy, TRUE);
--    if (!envP->fault_occurred) {
--        XMLRPC_ASSERT(*format_copy == '\0');
--    }
--}
--
--
--
--void 
--xmlrpc_parse_value(xmlrpc_env *   const envP,
--                   xmlrpc_value * const value,
--                   const char *   const format, 
--                   ...) {
--
--    va_list args;
--
--    va_start(args, format);
--    xmlrpc_parse_value_va(envP, value, format, args);
--    va_end(args);
--}
--
--
--
--/* Copyright (C) 2001 by First Peer, Inc. All rights reserved.
--** Copyright (C) 2001 by Eric Kidd. 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. The name of the author may not be used to endorse or promote products
--**    derived from this software without specific prior written permission. 
--**  
--** THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. */
-diff --git a/libs/xmlrpc-c/src/xmlrpc_client.c b/libs/xmlrpc-c/src/xmlrpc_client.c
-index 88f3dcf..e87c6f3 100644
---- a/libs/xmlrpc-c/src/xmlrpc_client.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_client.c
-@@ -1,5 +1,7 @@
- /* Copyright information is at end of file */
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
-+
- #include "xmlrpc_config.h"
- #undef PACKAGE
-@@ -40,6 +42,7 @@ struct xmlrpc_client {
-     struct xmlrpc_client_transport *   transportP;
-     struct xmlrpc_client_transport_ops transportOps;
-     xmlrpc_dialect                     dialect;
-+    xmlrpc_progress_fn *               progressFn;
- };
-@@ -54,17 +57,21 @@ struct xmlrpc_call_info {
-        storage, and we need to keep this info in our own.
-     */
-+    void * userHandle;
-+        /* This is a handle for this call that is meaningful to our
-+           user.
-+        */
-+    xmlrpc_progress_fn * progressFn;
-     struct {
--        /* This are arguments to pass to the completion function.  It
-+        /* These are arguments to pass to the completion function.  It
-            doesn't make sense to use them for anything else.  In fact, it
-            really doesn't make sense for them to be arguments to the
-            completion function, but they are historically.  */
-         const char *   serverUrl;
-         const char *   methodName;
-         xmlrpc_value * paramArrayP;
--        void *         userData;
-     } completionArgs;
--    xmlrpc_response_handler completionFn;
-+    xmlrpc_response_handler * completionFn;
-     
-     /* The serialized XML data passed to this call. We keep this around
-@@ -187,6 +194,17 @@ unsigned int const xmlrpc_client_version_major = XMLRPC_VERSION_MAJOR;
- unsigned int const xmlrpc_client_version_minor = XMLRPC_VERSION_MINOR;
- unsigned int const xmlrpc_client_version_point = XMLRPC_VERSION_POINT;
-+void
-+xmlrpc_client_version(unsigned int * const majorP,
-+                      unsigned int * const minorP,
-+                      unsigned int * const pointP) {
-+
-+    *majorP = XMLRPC_VERSION_MAJOR;
-+    *minorP = XMLRPC_VERSION_MINOR;
-+    *pointP = XMLRPC_VERSION_POINT;
-+}
-+
-+
- /*=========================================================================
-    Client Create/Destroy
-@@ -201,15 +219,15 @@ getTransportOps(
-     if (false) {
-     }
- #if MUST_BUILD_WININET_CLIENT
--    else if (strcmp(transportName, "wininet") == 0)
-+    else if (xmlrpc_streq(transportName, "wininet"))
-         *opsPP = &xmlrpc_wininet_transport_ops;
- #endif
- #if MUST_BUILD_CURL_CLIENT
--    else if (strcmp(transportName, "curl") == 0)
-+    else if (xmlrpc_streq(transportName, "curl"))
-         *opsPP = &xmlrpc_curl_transport_ops;
- #endif
- #if MUST_BUILD_LIBWWW_CLIENT
--    else if (strcmp(transportName, "libwww") == 0)
-+    else if (xmlrpc_streq(transportName, "libwww"))
-         *opsPP = &xmlrpc_libwww_transport_ops;
- #endif
-     else
-@@ -334,6 +352,7 @@ clientCreate(
-     const struct xmlrpc_client_transport_ops * const transportOpsP,
-     struct xmlrpc_client_transport *           const transportP,
-     xmlrpc_dialect                             const dialect,
-+    xmlrpc_progress_fn *                       const progressFn,
-     xmlrpc_client **                           const clientPP) {
-     XMLRPC_ASSERT_PTR_OK(transportOpsP);
-@@ -360,6 +379,7 @@ clientCreate(
-             clientP->transportOps = *transportOpsP;
-             clientP->transportP   = transportP;
-             clientP->dialect      = dialect;
-+            clientP->progressFn   = progressFn;
-             
-             *clientPP = clientP;
-         }
-@@ -370,15 +390,16 @@ clientCreate(
- static void
- createTransportAndClient(
--    xmlrpc_env *     const envP,
--    const char *     const transportName,
--    const void *     const transportparmsP,
--    size_t           const transportparmSize,
--    int              const flags,
--    const char *     const appname,
--    const char *     const appversion,
--    xmlrpc_dialect   const dialect,
--    xmlrpc_client ** const clientPP) {
-+    xmlrpc_env *         const envP,
-+    const char *         const transportName,
-+    const void *         const transportparmsP,
-+    size_t               const transportparmSize,
-+    int                  const flags,
-+    const char *         const appname,
-+    const char *         const appversion,
-+    xmlrpc_dialect       const dialect,
-+    xmlrpc_progress_fn * const progressFn,
-+    xmlrpc_client **     const clientPP) {
-     const struct xmlrpc_client_transport_ops * transportOpsP;
-@@ -395,7 +416,7 @@ createTransportAndClient(
-             bool const myTransportTrue = true;
-             clientCreate(envP, myTransportTrue, transportOpsP, transportP,
--                         dialect, clientPP);
-+                         dialect, progressFn, clientPP);
-             
-             if (envP->fault_occurred)
-                 transportOpsP->destroy(transportP);
-@@ -429,11 +450,15 @@ xmlrpc_client_create(xmlrpc_env *                      const envP,
-         const struct xmlrpc_client_transport_ops * transportOpsP;
-         xmlrpc_client_transport * transportP;
-         xmlrpc_dialect dialect;
--        
-+        xmlrpc_progress_fn * progressFn;
-+
-         getTransportInfo(envP, clientparmsP, parmSize, &transportName, 
-                          &transportparms, &transportOpsP, &transportP);
-         
-         getDialectFromClientParms(clientparmsP, parmSize, &dialect);
-+
-+        progressFn = parmSize >= XMLRPC_CPSIZE(progressFn) ?
-+            clientparmsP->progressFn : NULL;
-             
-         if (!envP->fault_occurred) {
-             if (transportName)
-@@ -441,11 +466,13 @@ xmlrpc_client_create(xmlrpc_env *                      const envP,
-                                          transportparms.parmsP,
-                                          transportparms.size,
-                                          flags, appname, appversion, dialect,
-+                                         progressFn,
-                                          clientPP);
-             else {
-                 bool myTransportFalse = false;
-                 clientCreate(envP, myTransportFalse,
--                             transportOpsP, transportP, dialect, clientPP);
-+                             transportOpsP, transportP, dialect, progressFn,
-+                             clientPP);
-             }
-         }
-     }
-@@ -607,58 +634,139 @@ xmlrpc_client_call2(xmlrpc_env *               const envP,
- static void
--clientCall2f_va(xmlrpc_env *               const envP,
--                xmlrpc_client *            const clientP,
--                const char *               const serverUrl,
--                const char *               const methodName,
--                const char *               const format,
--                xmlrpc_value **            const resultPP,
--                va_list                          args) {
--
--    xmlrpc_value * argP;
--    xmlrpc_env argenv;
--    const char * suffix;
-+computeParamArray(xmlrpc_env *    const envP,
-+                  const char *    const format,
-+                  va_list               args,
-+                  xmlrpc_value ** const paramArrayPP) {
-+/*----------------------------------------------------------------------------
-+   'format' and 'args' specify the parameter list of an RPC, in the form
-+   of an XML-RPC array value, with one element per RPC parameter.
--    XMLRPC_ASSERT_ENV_OK(envP);
--    XMLRPC_ASSERT_PTR_OK(serverUrl);
--    XMLRPC_ASSERT_PTR_OK(methodName);
--    XMLRPC_ASSERT_PTR_OK(format);
--    XMLRPC_ASSERT_PTR_OK(resultPP);
-+   'format' is an XML-RPC value format string, e.g. "(ii{s:i,s:i})".
-+   'args' is the list of substitution values for that string
-+   (6 values in this example, 4 integers and 2 strings).
-+
-+   We return the XML-RPC value 'format' and 'args' represent, but throw an
-+   error if they don't validly specify a single array.
--    /* Build our argument value. */
--    xmlrpc_env_init(&argenv);
--    xmlrpc_build_value_va(&argenv, format, args, &argP, &suffix);
--    if (argenv.fault_occurred)
-+   Note that it is a common user error to specify the format string as a
-+   single or string of argument types, instead of as an array of argument
-+   types.  E.g. "i" or "ii" instead of "(i)" and "(ii)".  So we try
-+   especially hard to give an informative message for that case.
-+-----------------------------------------------------------------------------*/
-+    xmlrpc_env env;
-+    xmlrpc_value * paramArrayP;
-+    const char * suffix;
-+        /* Stuff left over in format string after parameter array
-+           specification.
-+        */
-+
-+    xmlrpc_env_init(&env);
-+    xmlrpc_build_value_va(&env, format, args, &paramArrayP, &suffix);
-+    if (env.fault_occurred)
-         xmlrpc_env_set_fault_formatted(
--            envP, argenv.fault_code, "Invalid RPC arguments.  "
--            "The format argument must indicate a single array, and the "
-+            envP, env.fault_code, "Invalid RPC arguments.  "
-+            "The format argument must indicate a single array (each element "
-+            "of which is one argument to the XML-RPC call), and the "
-             "following arguments must correspond to that format argument.  "
-             "The failure is: %s",
--            argenv.fault_string);
-+            env.fault_string);
-     else {
--        XMLRPC_ASSERT_VALUE_OK(argP);
-+        XMLRPC_ASSERT_VALUE_OK(paramArrayP);
-         
-         if (*suffix != '\0')
--            xmlrpc_faultf(envP, "Junk after the argument specifier: '%s'.  "
--                          "There must be exactly one argument.",
-+            xmlrpc_faultf(envP,
-+                          "Junk after the parameter array specifier: '%s'.  "
-+                          "The format string must specify exactly one value: "
-+                          "an array of RPC parameters",
-                           suffix);
-         else {
--            xmlrpc_server_info * serverInfoP;
-+            if (xmlrpc_value_type(paramArrayP) != XMLRPC_TYPE_ARRAY)
-+                xmlrpc_faultf(
-+                    envP,
-+                    "You must specify the parameter list as an "
-+                    "XML-RPC array value, "
-+                    "each element of which is a parameter of the RPC.  "
-+                    "But your format string specifies an XML-RPC %s, not "
-+                    "an array",
-+                    xmlrpc_type_name(xmlrpc_value_type(paramArrayP)));
-+        }
-+        if (env.fault_occurred)
-+            xmlrpc_DECREF(paramArrayP);
-+        else
-+            *paramArrayPP = paramArrayP;
-+    }
-+    xmlrpc_env_clean(&env);
-+}
-+
-+
-+
-+void
-+xmlrpc_client_call_server2_va(xmlrpc_env *               const envP,
-+                              struct xmlrpc_client *     const clientP,
-+                              const xmlrpc_server_info * const serverInfoP,
-+                              const char *               const methodName,
-+                              const char *               const format,
-+                              va_list                          args,
-+                              xmlrpc_value **            const resultPP) {
-+
-+    /* This function exists only for use by the global client function
-+       xmlrpc_client_call_server().
-+    */
-+
-+    xmlrpc_value * paramArrayP;
-+        /* The XML-RPC parameter list array */
-+
-+    computeParamArray(envP, format, args, &paramArrayP);
-+
-+    if (!envP->fault_occurred) {
-+        xmlrpc_client_call2(envP, clientP,
-+                            serverInfoP, methodName, paramArrayP,
-+                            resultPP);
-+
-+        xmlrpc_DECREF(paramArrayP);
-+    }        
-+}
-+
-+
-+
-+void
-+xmlrpc_client_call2f_va(xmlrpc_env *               const envP,
-+                        xmlrpc_client *            const clientP,
-+                        const char *               const serverUrl,
-+                        const char *               const methodName,
-+                        const char *               const format,
-+                        xmlrpc_value **            const resultPP,
-+                        va_list                          args) {
--            serverInfoP = xmlrpc_server_info_new(envP, serverUrl);
-+    xmlrpc_value * paramArrayP;
-+        /* The XML-RPC parameter list array */
-+
-+    XMLRPC_ASSERT_ENV_OK(envP);
-+    XMLRPC_ASSERT_PTR_OK(clientP);
-+    XMLRPC_ASSERT_PTR_OK(serverUrl);
-+    XMLRPC_ASSERT_PTR_OK(methodName);
-+    XMLRPC_ASSERT_PTR_OK(format);
-+    XMLRPC_ASSERT_PTR_OK(resultPP);
-+
-+    computeParamArray(envP, format, args, &paramArrayP);
-+
-+    if (!envP->fault_occurred) {
-+        xmlrpc_server_info * serverInfoP;
-+
-+        serverInfoP = xmlrpc_server_info_new(envP, serverUrl);
-             
--            if (!envP->fault_occurred) {
--                /* Perform the actual XML-RPC call. */
--                xmlrpc_client_call2(envP, clientP,
--                                    serverInfoP, methodName, argP, resultPP);
--                if (!envP->fault_occurred)
--                    XMLRPC_ASSERT_VALUE_OK(*resultPP);
--                xmlrpc_server_info_free(serverInfoP);
--            }
-+        if (!envP->fault_occurred) {
-+            /* Perform the actual XML-RPC call. */
-+            xmlrpc_client_call2(envP, clientP,
-+                                serverInfoP, methodName, paramArrayP,
-+                                resultPP);
-+            if (!envP->fault_occurred)
-+                XMLRPC_ASSERT_VALUE_OK(*resultPP);
-+            xmlrpc_server_info_free(serverInfoP);
-         }
--        xmlrpc_DECREF(argP);
-+        xmlrpc_DECREF(paramArrayP);
-     }
--    xmlrpc_env_clean(&argenv);
- }
-@@ -674,9 +782,11 @@ xmlrpc_client_call2f(xmlrpc_env *    const envP,
-     va_list args;
-+    XMLRPC_ASSERT_PTR_OK(format);
-+
-     va_start(args, format);
--    clientCall2f_va(envP, clientP, serverUrl,
--                    methodName, format, resultPP, args);
-+    xmlrpc_client_call2f_va(envP, clientP, serverUrl,
-+                            methodName, format, resultPP, args);
-     va_end(args);
- }
-@@ -693,10 +803,15 @@ callInfoSetCompletion(xmlrpc_env *              const envP,
-                       const char *              const methodName,
-                       xmlrpc_value *            const paramArrayP,
-                       xmlrpc_response_handler         completionFn,
--                      void *                    const userData) {
--
-+                      xmlrpc_progress_fn              progressFn,
-+                      void *                    const userHandle) {
-+/*----------------------------------------------------------------------------
-+   Set the members of callinfo structure *callInfoP that are used for
-+   the completion and progress calls from the transport to us.
-+-----------------------------------------------------------------------------*/
-     callInfoP->completionFn = completionFn;
--    callInfoP->completionArgs.userData = userData;
-+    callInfoP->progressFn   = progressFn;
-+    callInfoP->userHandle   = userHandle;
-     callInfoP->completionArgs.serverUrl = strdup(serverUrl);
-     if (callInfoP->completionArgs.serverUrl == NULL)
-         xmlrpc_faultf(envP, "Couldn't get memory to store server URL");
-@@ -722,7 +837,8 @@ callInfoCreate(xmlrpc_env *               const envP,
-                xmlrpc_dialect             const dialect,
-                const char *               const serverUrl,
-                xmlrpc_response_handler          completionFn,
--               void *                     const userData,
-+               xmlrpc_progress_fn               progressFn,
-+               void *                     const userHandle,
-                struct xmlrpc_call_info ** const callInfoPP) {
- /*----------------------------------------------------------------------------
-    Create a call_info object.  A call_info object represents an XML-RPC
-@@ -744,21 +860,17 @@ callInfoCreate(xmlrpc_env *               const envP,
-         makeCallXml(envP, methodName, paramArrayP, dialect, &callXmlP);
-         if (!envP->fault_occurred) {
--            xmlrpc_traceXml("XML-RPC CALL", 
--                            XMLRPC_MEMBLOCK_CONTENTS(char, callXmlP),
--                            XMLRPC_MEMBLOCK_SIZE(char, callXmlP));
--            
-             callInfoP->serialized_xml = callXmlP;
-             
--            *callInfoPP = callInfoP;
--
-             callInfoSetCompletion(envP, callInfoP, serverUrl, methodName,
--                                  paramArrayP, completionFn, userData);
-+                                  paramArrayP,
-+                                  completionFn, progressFn, userHandle);
-             if (envP->fault_occurred)
-                 free(callInfoP);
-         }
-     }
-+    *callInfoPP = callInfoP;
- }
-@@ -804,6 +916,15 @@ xmlrpc_client_event_loop_finish_timeout(xmlrpc_client * const clientP,
-+/* Microsoft Visual C in debug mode produces code that complains about
-+   passing an undefined value of 'resultP' to xmlrpc_parse_response2().
-+   It's a bogus complaint, because this function knows in those cases
-+   that the value of 'resultP' is meaningless.  So we disable the check.
-+*/
-+#pragma runtime_checks("u", off)
-+
-+
-+
- static void
- asynchComplete(struct xmlrpc_call_info * const callInfoP,
-                xmlrpc_mem_block *        const responseXmlP,
-@@ -825,8 +946,6 @@ asynchComplete(struct xmlrpc_call_info * const callInfoP,
-     xmlrpc_env_init(&env);
--    resultP = NULL;  /* Just to quiet compiler warning */
--
-     if (transportEnv.fault_occurred)
-         xmlrpc_env_set_fault_formatted(
-             &env, transportEnv.fault_code,
-@@ -855,7 +974,7 @@ asynchComplete(struct xmlrpc_call_info * const callInfoP,
-     (*callInfoP->completionFn)(callInfoP->completionArgs.serverUrl, 
-                                callInfoP->completionArgs.methodName, 
-                                callInfoP->completionArgs.paramArrayP,
--                               callInfoP->completionArgs.userData,
-+                               callInfoP->userHandle,
-                                &env, resultP);
-     if (!env.fault_occurred)
-@@ -868,14 +987,32 @@ asynchComplete(struct xmlrpc_call_info * const callInfoP,
-+#pragma runtime_checks("u", restore)
-+
-+
-+
-+static void
-+progress(struct xmlrpc_call_info *    const callInfoP,
-+         struct xmlrpc_progress_data  const progressData) {
-+
-+    /* We wouldn't have asked the transport to call our progress
-+       function if we didn't have a user progress function to call:
-+    */
-+    assert(callInfoP->progressFn);
-+
-+    callInfoP->progressFn(callInfoP->userHandle, progressData);
-+}
-+
-+
-+
- void
--xmlrpc_client_start_rpc(xmlrpc_env *             const envP,
--                        struct xmlrpc_client *   const clientP,
--                        xmlrpc_server_info *     const serverInfoP,
--                        const char *             const methodName,
--                        xmlrpc_value *           const argP,
--                        xmlrpc_response_handler        completionFn,
--                        void *                   const userData) {
-+xmlrpc_client_start_rpc(xmlrpc_env *               const envP,
-+                        struct xmlrpc_client *     const clientP,
-+                        const xmlrpc_server_info * const serverInfoP,
-+                        const char *               const methodName,
-+                        xmlrpc_value *             const paramArrayP,
-+                        xmlrpc_response_handler          completionFn,
-+                        void *                     const userHandle) {
-     
-     struct xmlrpc_call_info * callInfoP;
-@@ -883,18 +1020,25 @@ xmlrpc_client_start_rpc(xmlrpc_env *             const envP,
-     XMLRPC_ASSERT_PTR_OK(clientP);
-     XMLRPC_ASSERT_PTR_OK(serverInfoP);
-     XMLRPC_ASSERT_PTR_OK(methodName);
--    XMLRPC_ASSERT_VALUE_OK(argP);
-+    XMLRPC_ASSERT_VALUE_OK(paramArrayP);
--    callInfoCreate(envP, methodName, argP, clientP->dialect,
--                   serverInfoP->serverUrl, completionFn, userData,
-+    callInfoCreate(envP, methodName, paramArrayP, clientP->dialect,
-+                   serverInfoP->serverUrl,
-+                   completionFn, clientP->progressFn, userHandle,
-                    &callInfoP);
--    if (!envP->fault_occurred)
-+    if (!envP->fault_occurred) {
-+        xmlrpc_traceXml(
-+            "XML-RPC CALL", 
-+            XMLRPC_MEMBLOCK_CONTENTS(char, callInfoP->serialized_xml),
-+            XMLRPC_MEMBLOCK_SIZE(char, callInfoP->serialized_xml));
-+            
-         clientP->transportOps.send_request(
-             envP, clientP->transportP, serverInfoP,
-             callInfoP->serialized_xml,
--            &asynchComplete, callInfoP);
--    
-+            &asynchComplete, clientP->progressFn ? &progress : NULL,
-+            callInfoP);
-+    }    
-     if (envP->fault_occurred)
-         callInfoDestroy(callInfoP);
-     else {
-@@ -904,47 +1048,84 @@ xmlrpc_client_start_rpc(xmlrpc_env *             const envP,
-+void
-+xmlrpc_client_start_rpcf_server_va(
-+    xmlrpc_env *               const envP,
-+    xmlrpc_client *            const clientP,
-+    const xmlrpc_server_info * const serverInfoP,
-+    const char *               const methodName,
-+    xmlrpc_response_handler responseHandler,
-+    void *                     const userHandle,
-+    const char *               const format,
-+    va_list                    args) {
-+    
-+    xmlrpc_value * paramArrayP;
-+        /* The XML-RPC parameter list array */
-+
-+    XMLRPC_ASSERT_ENV_OK(envP);
-+    XMLRPC_ASSERT_PTR_OK(clientP);
-+    XMLRPC_ASSERT_PTR_OK(serverInfoP);
-+    XMLRPC_ASSERT_PTR_OK(methodName);
-+    XMLRPC_ASSERT_PTR_OK(format);
-+
-+    computeParamArray(envP, format, args, &paramArrayP);
-+
-+    if (!envP->fault_occurred) {
-+        xmlrpc_client_start_rpc(envP, clientP,
-+                                serverInfoP, methodName, paramArrayP,
-+                                responseHandler, userHandle);
-+        
-+        xmlrpc_DECREF(paramArrayP);
-+    }
-+}
-+
-+
-+
-+void
-+xmlrpc_client_start_rpcf_va(xmlrpc_env *    const envP,
-+                            xmlrpc_client * const clientP,
-+                            const char *    const serverUrl,
-+                            const char *    const methodName,
-+                            xmlrpc_response_handler responseHandler,
-+                            void *          const userHandle,
-+                            const char *    const format,
-+                            va_list               args) {
-+
-+    xmlrpc_server_info * serverInfoP;
-+
-+    serverInfoP = xmlrpc_server_info_new(envP, serverUrl);
-+    if (!envP->fault_occurred) {
-+        xmlrpc_client_start_rpcf_server_va(
-+            envP, clientP,
-+            serverInfoP, methodName,
-+            responseHandler, userHandle,
-+            format, args);
-+        
-+        xmlrpc_server_info_free(serverInfoP);
-+    }
-+}
-+
-+
-+
- void 
- xmlrpc_client_start_rpcf(xmlrpc_env *    const envP,
-                          xmlrpc_client * const clientP,
-                          const char *    const serverUrl,
-                          const char *    const methodName,
-                          xmlrpc_response_handler responseHandler,
--                         void *          const userData,
-+                         void *          const userHandle,
-                          const char *    const format,
-                          ...) {
-     va_list args;
--    xmlrpc_value * paramArrayP;
--    const char * suffix;
--    XMLRPC_ASSERT_PTR_OK(serverUrl);
-     XMLRPC_ASSERT_PTR_OK(format);
--    /* Build our argument array. */
-     va_start(args, format);
--    xmlrpc_build_value_va(envP, format, args, &paramArrayP, &suffix);
-+    xmlrpc_client_start_rpcf_va(envP, clientP, serverUrl, methodName,
-+                                responseHandler,
-+                                userHandle, format, args);
-     va_end(args);
--    if (!envP->fault_occurred) {
--        if (*suffix != '\0')
--            xmlrpc_faultf(envP, "Junk after the argument "
--                          "specifier: '%s'.  "
--                          "There must be exactly one arument.",
--                          suffix);
--        else {
--            xmlrpc_server_info * serverInfoP;
--
--            serverInfoP = xmlrpc_server_info_new(envP, serverUrl);
--            if (!envP->fault_occurred) {
--                xmlrpc_client_start_rpc(
--                    envP, clientP,
--                    serverInfoP, methodName, paramArrayP,
--                    responseHandler, userData);
--            }
--            xmlrpc_server_info_free(serverInfoP);
--        }
--        xmlrpc_DECREF(paramArrayP);
--    }
- }
-diff --git a/libs/xmlrpc-c/src/xmlrpc_client_global.c b/libs/xmlrpc-c/src/xmlrpc_client_global.c
-index 7beba14..362b99f 100644
---- a/libs/xmlrpc-c/src/xmlrpc_client_global.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_client_global.c
-@@ -122,38 +122,6 @@ xmlrpc_client_transport_call(
--static void
--clientCall_va(xmlrpc_env *               const envP,
--              const xmlrpc_server_info * const serverInfoP,
--              const char *               const methodName,
--              const char *               const format,
--              va_list                          args,
--              xmlrpc_value **            const resultPP) {
--
--    validateGlobalClientExists(envP);
--    if (!envP->fault_occurred) {
--        xmlrpc_value * paramArrayP;
--        const char * suffix;
--        
--        xmlrpc_build_value_va(envP, format, args, &paramArrayP, &suffix);
--        
--        if (!envP->fault_occurred) {
--            if (*suffix != '\0')
--                xmlrpc_faultf(envP, "Junk after the argument "
--                              "specifier: '%s'.  "
--                              "There must be exactly one arument.",
--                              suffix);
--            else
--                xmlrpc_client_call2(envP, globalClientP, serverInfoP,
--                                    methodName, paramArrayP, resultPP);
--            
--            xmlrpc_DECREF(paramArrayP);
--        }
--    }
--}
--
--
--
- xmlrpc_value * 
- xmlrpc_client_call(xmlrpc_env * const envP,
-                    const char * const serverUrl,
-@@ -162,21 +130,19 @@ xmlrpc_client_call(xmlrpc_env * const envP,
-                    ...) {
-     xmlrpc_value * resultP;
--    
--    xmlrpc_server_info * serverInfoP;
--    serverInfoP = xmlrpc_server_info_new(envP, serverUrl);
--        
-+    validateGlobalClientExists(envP);
-+
-     if (!envP->fault_occurred) {
-         va_list args;
-+
-         va_start(args, format);
-     
--        clientCall_va(envP, serverInfoP, methodName, format, args, &resultP);
-+        xmlrpc_client_call2f_va(envP, globalClientP, serverUrl,
-+                                methodName, format, &resultP, args);
-         va_end(args);
--        xmlrpc_server_info_free(serverInfoP);
-     }
--    
-     return resultP;
- }
-@@ -184,18 +150,24 @@ xmlrpc_client_call(xmlrpc_env * const envP,
- xmlrpc_value * 
- xmlrpc_client_call_server(xmlrpc_env *               const envP,
--                          const xmlrpc_server_info * const serverP,
-+                          const xmlrpc_server_info * const serverInfoP,
-                           const char *               const methodName,
-                           const char *               const format, 
-                           ...) {
--    va_list args;
-     xmlrpc_value * resultP;
--    va_start(args, format);
--    clientCall_va(envP, serverP, methodName, format, args, &resultP);
--    va_end(args);
-+    validateGlobalClientExists(envP);
-+
-+    if (!envP->fault_occurred) {
-+        va_list args;
-+
-+        va_start(args, format);
-+        xmlrpc_client_call_server2_va(envP, globalClientP, serverInfoP,
-+                                      methodName, format, args, &resultP);
-+        va_end(args);
-+    }
-     return resultP;
- }
-@@ -300,25 +272,16 @@ xmlrpc_client_call_asynch(const char * const serverUrl,
-     validateGlobalClientExists(&env);
-     if (!env.fault_occurred) {
--        xmlrpc_value * paramArrayP;
--        const char * suffix;
-         va_list args;
--    
-+
-         va_start(args, format);
--        xmlrpc_build_value_va(&env, format, args, &paramArrayP, &suffix);
--        va_end(args);
-     
--        if (!env.fault_occurred) {
--            if (*suffix != '\0')
--                xmlrpc_faultf(&env, "Junk after the argument "
--                              "specifier: '%s'.  "
--                              "There must be exactly one arument.",
--                              suffix);
--            else
--                xmlrpc_client_call_asynch_params(
--                    serverUrl, methodName, responseHandler, userData,
--                    paramArrayP);
--        }
-+        xmlrpc_client_start_rpcf_va(&env, globalClientP,
-+                                    serverUrl, methodName,
-+                                    responseHandler, userData,
-+                                    format, args);
-+
-+        va_end(args);
-     }
-     if (env.fault_occurred)
-         (*responseHandler)(serverUrl, methodName, NULL, userData, &env, NULL);
-@@ -364,28 +327,21 @@ xmlrpc_client_call_server_asynch(xmlrpc_server_info * const serverInfoP,
-                                  ...) {
-     xmlrpc_env env;
--    xmlrpc_value * paramArrayP;
--    const char * suffix;
--    va_list args;
--    
--    xmlrpc_env_init(&env);
--    va_start(args, format);
--    xmlrpc_build_value_va(&env, format, args, &paramArrayP, &suffix);
--    va_end(args);
-+    validateGlobalClientExists(&env);
-     if (!env.fault_occurred) {
--        if (*suffix != '\0')
--            xmlrpc_faultf(&env, "Junk after the argument "
--                          "specifier: '%s'.  "
--                          "There must be exactly one arument.",
--                          suffix);
--        else
--            xmlrpc_client_call_server_asynch_params(
--                serverInfoP, methodName, responseHandler, userData,
--                paramArrayP);
--
--        xmlrpc_DECREF(paramArrayP);
-+        va_list args;
-+    
-+        xmlrpc_env_init(&env);
-+
-+        va_start(args, format);
-+
-+        xmlrpc_client_start_rpcf_server_va(
-+            &env, globalClientP, serverInfoP, methodName,
-+            responseHandler, userData, format, args);
-+
-+        va_end(args);
-     }
-     if (env.fault_occurred)
-         (*responseHandler)(serverInfoP->serverUrl, methodName, NULL,
-diff --git a/libs/xmlrpc-c/src/xmlrpc_data.c b/libs/xmlrpc-c/src/xmlrpc_data.c
-index 28827fe..9330c12 100644
---- a/libs/xmlrpc-c/src/xmlrpc_data.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_data.c
-@@ -14,6 +14,17 @@
- #include "xmlrpc-c/base_int.h"
-+
-+static void
-+destroyCptr(xmlrpc_value * const valueP) {
-+
-+    if (valueP->_value.cptr.dtor)
-+        valueP->_value.cptr.dtor(valueP->_value.cptr.dtorContext,
-+                                 valueP->_value.cptr.objectP);
-+}
-+
-+
-+
- static void
- destroyValue(xmlrpc_value * const valueP) {
-@@ -29,7 +40,7 @@ destroyValue(xmlrpc_value * const valueP) {
-         break;
-     case XMLRPC_TYPE_DATETIME:
--        xmlrpc_mem_block_clean(&valueP->_block);
-+        xmlrpc_destroyDatetime(valueP);
-         break;
-     case XMLRPC_TYPE_STRING:
-@@ -49,6 +60,7 @@ destroyValue(xmlrpc_value * const valueP) {
-         break;
-     case XMLRPC_TYPE_C_PTR:
-+        destroyCptr(valueP);
-         break;
-     case XMLRPC_TYPE_NIL:
-@@ -220,9 +232,9 @@ xmlrpc_read_base64(xmlrpc_env *           const envP,
-         byteStringValue = malloc(size);
-         if (byteStringValue == NULL)
--            xmlrpc_env_set_fault_formatted(
--                envP, XMLRPC_INTERNAL_ERROR, "Unable to allocate %u bytes "
--                "for byte string.", size);
-+            xmlrpc_faultf(envP,
-+                          "Unable to allocate %u bytes for byte string.",
-+                          (unsigned)size);
-         else {
-             memcpy(byteStringValue, contents, size);
-             *byteStringValueP = (const unsigned char *)byteStringValue;
-@@ -269,7 +281,7 @@ xmlrpc_read_cptr(xmlrpc_env *         const envP,
-     validateType(envP, valueP, XMLRPC_TYPE_C_PTR);
-     if (!envP->fault_occurred)
--        *ptrValueP = valueP->_value.c_ptr;
-+        *ptrValueP = valueP->_value.cptr.objectP;
- }
-@@ -431,13 +443,26 @@ xmlrpc_value *
- xmlrpc_cptr_new(xmlrpc_env *    const envP,
-                 void *          const value) {
-+    return xmlrpc_cptr_new_dtor(envP, value, NULL, NULL);
-+}
-+
-+
-+
-+xmlrpc_value *
-+xmlrpc_cptr_new_dtor(xmlrpc_env *        const envP,
-+                     void *              const value,
-+                     xmlrpc_cptr_dtor_fn const dtor,
-+                     void *              const dtorContext) {
-+
-     xmlrpc_value * valP;
-     xmlrpc_createXmlrpcValue(envP, &valP);
-     if (!envP->fault_occurred) {
-         valP->_type = XMLRPC_TYPE_C_PTR;
--        valP->_value.c_ptr = value;
-+        valP->_value.cptr.objectP     = value;
-+        valP->_value.cptr.dtor        = dtor;
-+        valP->_value.cptr.dtorContext = dtorContext;
-     }
-     return valP;
- }
-diff --git a/libs/xmlrpc-c/src/xmlrpc_datetime.c b/libs/xmlrpc-c/src/xmlrpc_datetime.c
-index 832f4fb..a36925f 100644
---- a/libs/xmlrpc-c/src/xmlrpc_datetime.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_datetime.c
-@@ -1,34 +1,30 @@
- #include "xmlrpc_config.h"
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
-+
- #include <time.h>
- #include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- #include <assert.h>
-+#include <stdio.h>
- #if MSVCRT
- #include <windows.h>
- #endif
- #include "bool.h"
-+#include "mallocvar.h"
-+#include "xmlrpc-c/c_util.h"
- #include "xmlrpc-c/base.h"
- #include "xmlrpc-c/base_int.h"
- #include "xmlrpc-c/string_int.h"
- #include "xmlrpc-c/time_int.h"
--/* Future work: the XMLRPC_TYPE_DATETIME xmlrpc_value should store the
--   datetime as something computation-friendly, not as a string.  The
--   XML-RPC XML parser should parse the string value and reject the XML if
--   it isn't valid.
--
--   But this file should remain the authority on datetimes, so the XML
--   parser and builder should call on routines in here to do that.
--
--   time_t won't work because it can't represent times before 1970 or
--   after 2038.  We need to figure out something better.
--*/
--
-+#if HAVE_REGEX
-+#include <regex.h>
-+#endif
- #if MSVCRT
-@@ -112,19 +108,65 @@ validateDatetimeType(xmlrpc_env *         const envP,
- void
-+xmlrpc_read_datetime(xmlrpc_env *         const envP,
-+                     const xmlrpc_value * const valueP,
-+                     xmlrpc_datetime *    const dtP) {
-+
-+    validateDatetimeType(envP, valueP);
-+    if (!envP->fault_occurred) {
-+        *dtP = valueP->_value.dt;
-+    }
-+}
-+
-+
-+
-+void
- xmlrpc_read_datetime_str(xmlrpc_env *         const envP,
-                          const xmlrpc_value * const valueP,
-                          const char **        const stringValueP) {
--    
-+/*----------------------------------------------------------------------------
-+   This exists for backward compatibility.  No normal modern program would
-+   want to see a datetime value in this format.  Note that the format isn't
-+   even ISO 8601 -- it's a bizarre hybrid of two ISO 8601 formats.
-+
-+   Do not extend this.
-+
-+   This exists because Xmlrpc-c was at one time lazy and this was the only way
-+   to extract the value.  An xmlrpc_value in those days represented a datetime
-+   with the actual XML-RPC wire format of a datetime, and this function simply
-+   returned a copy of it.
-+-----------------------------------------------------------------------------*/
-     validateDatetimeType(envP, valueP);
-     if (!envP->fault_occurred) {
--        const char * const contents = 
--            XMLRPC_MEMBLOCK_CONTENTS(char, &valueP->_block);
--        *stringValueP = strdup(contents);
--        if (*stringValueP == NULL)
--            xmlrpc_env_set_fault_formatted(
--                envP, XMLRPC_INTERNAL_ERROR, "Unable to allocate space "
--                "for datetime string");
-+        time_t secs;
-+        unsigned int usecs;
-+
-+        xmlrpc_read_datetime_usec(envP, valueP, &secs, &usecs);
-+
-+        if (!envP->fault_occurred) {
-+            struct tm brokenTime;
-+            char dtString[64];
-+
-+            xmlrpc_gmtime(secs, &brokenTime);
-+
-+            /* Note that this format is NOT ISO 8601 -- it's a bizarre
-+               hybrid of two ISO 8601 formats.
-+            */
-+            strftime(dtString, sizeof(dtString), "%Y%m%dT%H:%M:%S", 
-+                     &brokenTime);
-+
-+            if (usecs != 0) {
-+                char usecString[64];
-+                assert(usecs < 1000000);
-+                snprintf(usecString, sizeof(usecString), ".%06u", usecs);
-+                STRSCAT(dtString, usecString);
-+            }
-+
-+            *stringValueP = strdup(dtString);
-+            if (*stringValueP == NULL)
-+                xmlrpc_faultf(envP,
-+                              "Unable to allocate memory for datetime string");
-+        }
-     }
- }
-@@ -134,23 +176,164 @@ void
- xmlrpc_read_datetime_str_old(xmlrpc_env *         const envP,
-                              const xmlrpc_value * const valueP,
-                              const char **        const stringValueP) {
-+
-+    assert(valueP->_cache);
-     
-     validateDatetimeType(envP, valueP);
-     if (!envP->fault_occurred) {
--        *stringValueP = XMLRPC_MEMBLOCK_CONTENTS(char, &valueP->_block);
-+        const char ** const readBufferP = valueP->_cache;
-+
-+        if (!*readBufferP)
-+            /* Nobody's asked for the internal buffer before.  Set it up. */
-+            xmlrpc_read_datetime_str(envP, valueP, readBufferP);
-+
-+        *stringValueP = *readBufferP;
-+    }
-+}
-+
-+
-+
-+void
-+xmlrpc_read_datetime_usec(xmlrpc_env *         const envP,
-+                          const xmlrpc_value * const valueP,
-+                          time_t *             const secsP,
-+                          unsigned int *       const usecsP) {
-+    
-+    validateDatetimeType(envP, valueP);
-+
-+    if (!envP->fault_occurred) {
-+        if (valueP->_value.dt.Y < 1970)
-+            xmlrpc_faultf(envP, "Year (%u) is too early to represent as "
-+                          "a standard Unix time",
-+                          valueP->_value.dt.Y);
-+        else {
-+            struct tm brokenTime;
-+            const char * error;
-+                
-+            brokenTime.tm_sec  = valueP->_value.dt.s;
-+            brokenTime.tm_min  = valueP->_value.dt.m;
-+            brokenTime.tm_hour = valueP->_value.dt.h;
-+            brokenTime.tm_mday = valueP->_value.dt.D;
-+            brokenTime.tm_mon  = valueP->_value.dt.M - 1;
-+            brokenTime.tm_year = valueP->_value.dt.Y - 1900;
-+                
-+            xmlrpc_timegm(&brokenTime, secsP, &error);
-+
-+            if (error) {
-+                /* Ideally, this wouldn't be possible - it wouldn't be
-+                   possible to create an xmlrpc_value that doesn't actually
-+                   represent a real datetime.  But today, we're lazy and
-+                   don't fully validate incoming XML-RPC <dateTime.iso8601>
-+                   elements, and we also have the legacy
-+                   xmlrpc_datetime_new_str() constructor to which the user
-+                   may feed garbage.
-+
-+                   We should tighten that up and then simply assert here that
-+                   xmlrpc_timegm() succeeded.
-+                */
-+                xmlrpc_env_set_fault_formatted(envP, XMLRPC_PARSE_ERROR,
-+                              "A datetime received in an XML-RPC message "
-+                              "or generated with legacy Xmlrpc-c facilities "
-+                              "does not validly describe a datetime.  %s",
-+                              error);
-+                xmlrpc_strfree(error);
-+            } else
-+                *usecsP = valueP->_value.dt.u;
-+        }
-     }
- }
-+void
-+xmlrpc_read_datetime_sec(xmlrpc_env *         const envP,
-+                         const xmlrpc_value * const valueP,
-+                         time_t *             const timeValueP) {
-+    
-+    unsigned int usecs;
-+
-+    xmlrpc_read_datetime_usec(envP, valueP, timeValueP, &usecs);
-+}
-+
-+
-+
-+#if XMLRPC_HAVE_TIMEVAL
-+
-+void
-+xmlrpc_read_datetime_timeval(xmlrpc_env *         const envP,
-+                             const xmlrpc_value * const valueP,
-+                             struct timeval *     const timeValueP) {
-+    
-+    time_t secs;
-+    unsigned int usecs;
-+
-+    xmlrpc_read_datetime_usec(envP, valueP, &secs, &usecs);
-+
-+    timeValueP->tv_sec  = secs;
-+    timeValueP->tv_usec = usecs;
-+}
-+#endif
-+
-+
-+
-+#if XMLRPC_HAVE_TIMESPEC
-+
-+void
-+xmlrpc_read_datetime_timespec(xmlrpc_env *         const envP,
-+                              const xmlrpc_value * const valueP,
-+                              struct timespec *    const timeValueP) {
-+    
-+    time_t secs;
-+    unsigned int usecs;
-+
-+    xmlrpc_read_datetime_usec(envP, valueP, &secs, &usecs);
-+
-+    timeValueP->tv_sec  = secs;
-+    timeValueP->tv_nsec = usecs * 1000;
-+}
-+#endif
-+
-+
-+
-+xmlrpc_value *
-+xmlrpc_datetime_new(xmlrpc_env *    const envP, 
-+                    xmlrpc_datetime const dt) {
-+
-+    xmlrpc_value * valP;
-+
-+    const char ** readBufferP;
-+        
-+    MALLOCVAR(readBufferP);
-+
-+    if (!readBufferP)
-+        xmlrpc_faultf(envP, "Couldn't get memory for the cache part of the "
-+                      "XML-RPC datetime value object");
-+
-+    else {
-+        *readBufferP = NULL;
-+
-+        xmlrpc_createXmlrpcValue(envP, &valP);
-+
-+        if (!envP->fault_occurred) {
-+            valP->_type = XMLRPC_TYPE_DATETIME;
-+            
-+            valP->_value.dt = dt;
-+
-+            valP->_cache = readBufferP;
-+        }
-+        if (envP->fault_occurred)
-+            free(readBufferP);
-+    }
-+    return valP;
-+}
-+
-+
-+
- static void
--parseDateNumbers(const char * const t,
--                 unsigned int * const YP,
--                 unsigned int * const MP,
--                 unsigned int * const DP,
--                 unsigned int * const hP,
--                 unsigned int * const mP,
--                 unsigned int * const sP) {
-+parseDatetimeString(const char *      const datetimeString,
-+                    xmlrpc_datetime * const dtP) {
-+
-+    size_t const dtStrlen = strlen(datetimeString);
-     char year[4+1];
-     char month[2+1];
-@@ -159,177 +342,219 @@ parseDateNumbers(const char * const t,
-     char minute[2+1];
-     char second[2+1];
--    assert(strlen(t) == 17);
-+    /* Because we require input to be valid: */
-+    assert(dtStrlen >= 17 && dtStrlen != 18 && dtStrlen <= 24);
--    year[0]   = t[ 0];
--    year[1]   = t[ 1];
--    year[2]   = t[ 2];
--    year[3]   = t[ 3];
-+    year[0]   = datetimeString[ 0];
-+    year[1]   = datetimeString[ 1];
-+    year[2]   = datetimeString[ 2];
-+    year[3]   = datetimeString[ 3];
-     year[4]   = '\0';
--    month[0]  = t[ 4];
--    month[1]  = t[ 5];
-+    month[0]  = datetimeString[ 4];
-+    month[1]  = datetimeString[ 5];
-     month[2]  = '\0';
--    day[0]    = t[ 6];
--    day[1]    = t[ 7];
-+    day[0]    = datetimeString[ 6];
-+    day[1]    = datetimeString[ 7];
-     day[2]    = '\0';
--    assert(t[ 8] == 'T');
-+    assert(datetimeString[ 8] == 'T');
--    hour[0]   = t[ 9];
--    hour[1]   = t[10];
-+    hour[0]   = datetimeString[ 9];
-+    hour[1]   = datetimeString[10];
-     hour[2]   = '\0';
--    assert(t[11] == ':');
-+    assert(datetimeString[11] == ':');
--    minute[0] = t[12];
--    minute[1] = t[13];
-+    minute[0] = datetimeString[12];
-+    minute[1] = datetimeString[13];
-     minute[2] = '\0';
--    assert(t[14] == ':');
-+    assert(datetimeString[14] == ':');
--    second[0] = t[15];
--    second[1] = t[16];
-+    second[0] = datetimeString[15];
-+    second[1] = datetimeString[16];
-     second[2] = '\0';
--    *YP = atoi(year);
--    *MP = atoi(month);
--    *DP = atoi(day);
--    *hP = atoi(hour);
--    *mP = atoi(minute);
--    *sP = atoi(second);
-+    if (dtStrlen > 17) {
-+        size_t const pad = 24 - dtStrlen;
-+        size_t i;
-+
-+        dtP->u = atoi(&datetimeString[18]);
-+        for (i = 0; i < pad; ++i)
-+            dtP->u *= 10;
-+    } else
-+        dtP->u = 0;
-+
-+    dtP->Y = atoi(year);
-+    dtP->M = atoi(month);
-+    dtP->D = atoi(day);
-+    dtP->h = atoi(hour);
-+    dtP->m = atoi(minute);
-+    dtP->s = atoi(second);
-+}
-+
-+
-+
-+static void
-+validateFirst17(xmlrpc_env * const envP,
-+                const char * const dt) {
-+/*----------------------------------------------------------------------------
-+   Assuming 'dt' is at least 17 characters long, validate that the first
-+   17 characters are a valid XML-RPC datetime, e.g.
-+   "20080628T16:35:02"
-+-----------------------------------------------------------------------------*/
-+    unsigned int i;
-+
-+    for (i = 0; i < 8 && !envP->fault_occurred; ++i)
-+        if (!isdigit(dt[i]))
-+            xmlrpc_faultf(envP, "Not a digit: '%c'", dt[i]);
-+
-+    if (dt[8] != 'T')
-+        xmlrpc_faultf(envP, "9th character is '%c', not 'T'", dt[8]);
-+    if (!isdigit(dt[9]))
-+        xmlrpc_faultf(envP, "Not a digit: '%c'", dt[9]);
-+    if (!isdigit(dt[10]))
-+        xmlrpc_faultf(envP, "Not a digit: '%c'", dt[10]);
-+    if (dt[11] != ':')
-+        xmlrpc_faultf(envP, "Not a colon: '%c'", dt[11]);
-+    if (!isdigit(dt[12]))
-+        xmlrpc_faultf(envP, "Not a digit: '%c'", dt[12]);
-+    if (!isdigit(dt[13]))
-+        xmlrpc_faultf(envP, "Not a digit: '%c'", dt[13]);
-+    if (dt[14] != ':')
-+        xmlrpc_faultf(envP, "Not a colon: '%c'", dt[14]);
-+    if (!isdigit(dt[15]))
-+        xmlrpc_faultf(envP, "Not a digit: '%c'", dt[15]);
-+    if (!isdigit(dt[16]))
-+        xmlrpc_faultf(envP, "Not a digit: '%c'", dt[16]);
-+}
-+
-+
-+
-+static void
-+validateFractionalSeconds(xmlrpc_env * const envP,
-+                          const char * const dt) {
-+/*----------------------------------------------------------------------------
-+   Validate the fractional seconds part of the XML-RPC datetime string
-+   'dt', if any.  That's the decimal point and everything following
-+   it.
-+-----------------------------------------------------------------------------*/
-+    if (strlen(dt) > 17) {
-+        if (dt[17] != '.') {
-+            xmlrpc_faultf(envP, "'%c' where only a period is valid", dt[17]);
-+        } else {
-+            if (dt[18] == '\0')
-+                xmlrpc_faultf(envP, "Nothing after decimal point");
-+            else {
-+                unsigned int i;
-+                for (i = 18; dt[i] != '\0' && !envP->fault_occurred; ++i) {
-+                    if (!isdigit(dt[i]))
-+                        xmlrpc_faultf(envP,
-+                                      "Non-digit in fractional seconds: '%c'",
-+                                      dt[i]);
-+                }
-+            }
-+        }
-+    }
- }
- static void
- validateFormat(xmlrpc_env * const envP,
--               const char * const t) {
-+               const char * const dt) {
--    if (strlen(t) != 17)
--        xmlrpc_faultf(envP, "%u characters instead of 15.", strlen(t));
--    else if (t[8] != 'T')
--        xmlrpc_faultf(envP, "9th character is '%c', not 'T'", t[8]);
-+    if (strlen(dt) < 17)
-+        xmlrpc_faultf(envP,
-+                      "Invalid length of %u of datetime string.  "
-+                      "Must be at least 17 characters",
-+                      (unsigned)strlen(dt));
-     else {
--        unsigned int i;
--
--        for (i = 0; i < 8 && !envP->fault_occurred; ++i)
--            if (!isdigit(t[i]))
--                xmlrpc_faultf(envP, "Not a digit: '%c'", t[i]);
--
--        if (!isdigit(t[9]))
--            xmlrpc_faultf(envP, "Not a digit: '%c'", t[9]);
--        if (!isdigit(t[10]))
--            xmlrpc_faultf(envP, "Not a digit: '%c'", t[10]);
--        if (t[11] != ':')
--            xmlrpc_faultf(envP, "Not a colon: '%c'", t[11]);
--        if (!isdigit(t[12]))
--            xmlrpc_faultf(envP, "Not a digit: '%c'", t[12]);
--        if (!isdigit(t[13]))
--            xmlrpc_faultf(envP, "Not a digit: '%c'", t[13]);
--        if (t[14] != ':')
--            xmlrpc_faultf(envP, "Not a colon: '%c'", t[14]);
--        if (!isdigit(t[15]))
--            xmlrpc_faultf(envP, "Not a digit: '%c'", t[15]);
--        if (!isdigit(t[16]))
--            xmlrpc_faultf(envP, "Not a digit: '%c'", t[16]);
-+        validateFirst17(envP, dt);
-+
-+        if (!envP->fault_occurred)
-+            validateFractionalSeconds(envP, dt);
-     }
--}        
-+}
--static void
--parseDatetime(xmlrpc_env * const envP,
--              const char * const t,
--              time_t *     const timeValueP) {
--/*----------------------------------------------------------------------------
--   Parse a time in the format stored in an xmlrpc_value and return the
--   time that it represents.
-+/* Microsoft Visual C in debug mode produces code that complains about
-+   returning an undefined value from xmlrpc_datetime_new_str().  It's a bogus
-+   complaint, because this function is defined to return nothing meaningful
-+   those cases.  So we disable the check.
-+*/
-+#pragma runtime_checks("u", off)
--   t[] is the input time string.  We return the result as *timeValueP.
--   Example of the format we parse: "19980717T14:08:55"
--   Note that this is not quite ISO 8601.  It's a bizarre combination of
--   two ISO 8601 formats.
--   The input is capable of representing datetimes that cannot be expressed
--   as a time_t.  In that case, we fail, with fault code
--   XMLRPC_INTERNAL_ERROR.
-+xmlrpc_value *
-+xmlrpc_datetime_new_str(xmlrpc_env * const envP, 
-+                        const char * const datetimeString) {
-+/*----------------------------------------------------------------------------
-+   This exists only for backward compatibility.  Originally, this was the
-+   only way to create a datetime XML-RPC value, because we had a really
-+   lazy implementation of XML-RPC serialization and parsing (basically, the
-+   user did it!).
--   And of course the input may not validly represent a datetime at all.
--   In that case too, we fail with fault code XMLRPC_PARSE_ERROR.
-+   Do not extend this.  The user should use more normal C representations
-+   of datetimes.
- -----------------------------------------------------------------------------*/
--    validateFormat(envP, t);
-+    xmlrpc_value * retval;
-+    validateFormat(envP, datetimeString);
-     if (!envP->fault_occurred) {
--        unsigned int Y, M, D, h, m, s;
--        
--        parseDateNumbers(t, &Y, &M, &D, &h, &m, &s);
--        
--        if (Y < 1970)
--            xmlrpc_env_set_fault(envP, XMLRPC_INTERNAL_ERROR,
--                                 "Year is too early to represent as "
--                                 "a standard Unix time");
--        else {
--            struct tm brokenTime;
--            const char * error;
--            
--            brokenTime.tm_sec  = s;
--            brokenTime.tm_min  = m;
--            brokenTime.tm_hour = h;
--            brokenTime.tm_mday = D;
--            brokenTime.tm_mon  = M - 1;
--            brokenTime.tm_year = Y - 1900;
--            
--            xmlrpc_timegm(&brokenTime, timeValueP, &error);
-+        xmlrpc_datetime dt;
--            if (error) {
--                xmlrpc_env_set_fault(envP, XMLRPC_PARSE_ERROR, error);
--                xmlrpc_strfree(error);
--            }
--        }
-+        parseDatetimeString(datetimeString, &dt);
-+
-+        /* Note that parseDatetimeString() can generate an invalid datetime
-+           value, e.g. Hour 25 or February 30.  Ideally, we would catch that
-+           here, but due to laziness, we simply accept the possibility of
-+           invalid xmlrpc_datetime in xmlrpc_value and whoever uses the the
-+           xmlrpc_value has to deal with it.
-+        */
-+        retval = xmlrpc_datetime_new(envP, dt);
-     }
-+
-+    return retval;
- }
--void
--xmlrpc_read_datetime_sec(xmlrpc_env *         const envP,
--                         const xmlrpc_value * const valueP,
--                         time_t *             const timeValueP) {
--    
--    validateDatetimeType(envP, valueP);
--    if (!envP->fault_occurred)
--        parseDatetime(envP,
--                      XMLRPC_MEMBLOCK_CONTENTS(char, &valueP->_block),
--                      timeValueP);
--}
-+#pragma runtime_checks("u", restore)
- xmlrpc_value *
--xmlrpc_datetime_new_str(xmlrpc_env * const envP, 
--                        const char * const value) {
-+xmlrpc_datetime_new_usec(xmlrpc_env * const envP,
-+                         time_t       const secs,
-+                         unsigned int const usecs) {
--    xmlrpc_value * valP;
-+    xmlrpc_value * valueP;
--    xmlrpc_createXmlrpcValue(envP, &valP);
-+    if (usecs >= 1000000)
-+        xmlrpc_faultf(envP, "Number of fractional microseconds must be less "
-+                      "than one million.  You specified %u", usecs);
-+    else {
-+        struct tm brokenTime;
-+        xmlrpc_datetime dt;
--    if (!envP->fault_occurred) {
--        valP->_type = XMLRPC_TYPE_DATETIME;
-+        xmlrpc_gmtime(secs, &brokenTime);
--        XMLRPC_TYPED_MEM_BLOCK_INIT(
--            char, envP, &valP->_block, strlen(value) + 1);
--        if (!envP->fault_occurred) {
--            char * const contents =
--                XMLRPC_TYPED_MEM_BLOCK_CONTENTS(char, &valP->_block);
--            strcpy(contents, value);
--        }
--        if (envP->fault_occurred)
--            free(valP);
-+        dt.s = brokenTime.tm_sec;
-+        dt.m = brokenTime.tm_min;
-+        dt.h = brokenTime.tm_hour;
-+        dt.D = brokenTime.tm_mday;
-+        dt.M = brokenTime.tm_mon + 1;
-+        dt.Y = 1900 + brokenTime.tm_year;
-+        dt.u = usecs;
-+
-+        valueP = xmlrpc_datetime_new(envP, dt);
-     }
--    return valP;
-+    return valueP;
- }
-@@ -338,34 +563,42 @@ xmlrpc_value *
- xmlrpc_datetime_new_sec(xmlrpc_env * const envP, 
-                         time_t       const value) {
--    xmlrpc_value * valP;
--    
--    xmlrpc_createXmlrpcValue(envP, &valP);
-+    return xmlrpc_datetime_new_usec(envP, value, 0);
-+}
--    if (!envP->fault_occurred) {
--        struct tm brokenTime;
--        char timeString[64];
--        
--        valP->_type = XMLRPC_TYPE_DATETIME;
--        xmlrpc_gmtime(value, &brokenTime);
--        
--        /* Note that this format is NOT ISO 8601 -- it's a bizarre
--           hybrid of two ISO 8601 formats.
--        */
--        strftime(timeString, sizeof(timeString), "%Y%m%dT%H:%M:%S", 
--                 &brokenTime);
--        
--        XMLRPC_TYPED_MEM_BLOCK_INIT(
--            char, envP, &valP->_block, strlen(timeString) + 1);
--        if (!envP->fault_occurred) {
--            char * const contents =
--                XMLRPC_TYPED_MEM_BLOCK_CONTENTS(char, &valP->_block);
--            
--            strcpy(contents, timeString);
--        }
--        if (envP->fault_occurred)
--            free(valP);
--    }
--    return valP;
-+
-+#if XMLRPC_HAVE_TIMEVAL
-+
-+xmlrpc_value *
-+xmlrpc_datetime_new_timeval(xmlrpc_env *   const envP, 
-+                            struct timeval const value) {
-+
-+    return xmlrpc_datetime_new_usec(envP, value.tv_sec, value.tv_usec);
-+}
-+#endif
-+
-+
-+
-+#if XMLRPC_HAVE_TIMESPEC
-+
-+xmlrpc_value *
-+xmlrpc_datetime_new_timespec(xmlrpc_env *    const envP, 
-+                             struct timespec const value) {
-+
-+    return xmlrpc_datetime_new_usec(envP, value.tv_sec, value.tv_nsec/1000);
-+}
-+#endif
-+
-+
-+
-+void
-+xmlrpc_destroyDatetime(xmlrpc_value * const datetimeP) {
-+
-+    const char ** const readBufferP = datetimeP->_cache;
-+
-+    if (*readBufferP)
-+        xmlrpc_strfree(*readBufferP);
-+
-+    free(datetimeP->_cache);
- }
-diff --git a/libs/xmlrpc-c/src/xmlrpc_decompose.c b/libs/xmlrpc-c/src/xmlrpc_decompose.c
-index eeb3414..6323a26 100644
---- a/libs/xmlrpc-c/src/xmlrpc_decompose.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_decompose.c
-@@ -712,7 +712,7 @@ buildArrayDecompBranch(xmlrpc_env *            const envP,
-         if (itemCnt >= ARRAY_SIZE(decompNodeP->store.Tarray.itemArray))
-             xmlrpc_faultf(envP, "Too many array items in format string.  "
-                           "The most items you can have for an array in "
--                          "a format string is %u.",
-+                          "a format string is %u.", (unsigned)
-                           ARRAY_SIZE(decompNodeP->store.Tarray.itemArray));
-         else {
-             struct decompTreeNode * itemNodeP;
-@@ -850,7 +850,7 @@ buildStructDecompBranch(xmlrpc_env *            const envP,
-             xmlrpc_faultf(envP,
-                           "Too many structure members in format string.  "
-                           "The most members you can specify in "
--                          "a format string is %u.",
-+                          "a format string is %u.", (unsigned)
-                           ARRAY_SIZE(decompNodeP->store.Tstruct.mbrArray));
-         else {
-             struct mbrDecomp * const mbrP =
-@@ -1059,9 +1059,8 @@ createDecompTree(xmlrpc_env *             const envP,
-         if (envP->fault_occurred)
-             destroyDecompTree(decompRootP);
--        else
--            *decompRootPP = decompRootP;
-     }
-+    *decompRootPP = decompRootP;
- }
-diff --git a/libs/xmlrpc-c/src/xmlrpc_expat.c b/libs/xmlrpc-c/src/xmlrpc_expat.c
-index 9e6c37e..7b51d3e 100644
---- a/libs/xmlrpc-c/src/xmlrpc_expat.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_expat.c
-@@ -108,27 +108,28 @@ xml_element_new (xmlrpc_env * const env,
- **  Blow away an existing element & all of its child elements.
- */
- void
--xml_element_free(xml_element * const elem) {
-+xml_element_free(xml_element * const elemP) {
--    xmlrpc_mem_block *children;
--    int size, i;
--    xml_element **contents;
-+    xmlrpc_mem_block * childrenP;
-+    size_t size, i;
-+    xml_element ** contents;
--    XMLRPC_ASSERT_ELEM_OK(elem);
-+    XMLRPC_ASSERT_ELEM_OK(elemP);
--    free(elem->_name);
--    elem->_name = XMLRPC_BAD_POINTER;
--    xmlrpc_mem_block_clean(&elem->_cdata);
-+    free(elemP->_name);
-+    elemP->_name = XMLRPC_BAD_POINTER;
-+    XMLRPC_MEMBLOCK_CLEAN(xml_element *, &elemP->_cdata);
-     /* Deallocate all of our children recursively. */
--    children = &elem->_children;
--    contents = XMLRPC_TYPED_MEM_BLOCK_CONTENTS(xml_element*, children);
--    size = XMLRPC_TYPED_MEM_BLOCK_SIZE(xml_element*, children);
--    for (i = 0; i < size; i++)
-+    childrenP = &elemP->_children;
-+    contents = XMLRPC_MEMBLOCK_CONTENTS(xml_element *, childrenP);
-+    size = XMLRPC_MEMBLOCK_SIZE(xml_element *, childrenP);
-+    for (i = 0; i < size; ++i)
-         xml_element_free(contents[i]);
--    xmlrpc_mem_block_clean(&elem->_children);
--    free(elem);
-+    XMLRPC_MEMBLOCK_CLEAN(xml_element *, &elemP->_children);
-+
-+    free(elemP);
- }
-@@ -374,9 +375,8 @@ createParser(xmlrpc_env *   const envP,
-         xmlrpc_XML_SetCharacterDataHandler(
-             parser,
-             (XML_CharacterDataHandler) characterData);
--        
--        *parserP = parser;
-     }
-+    *parserP = parser;
- }
-diff --git a/libs/xmlrpc-c/src/xmlrpc_libxml2.c b/libs/xmlrpc-c/src/xmlrpc_libxml2.c
-index 9cba719..3df6231 100644
---- a/libs/xmlrpc-c/src/xmlrpc_libxml2.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_libxml2.c
-@@ -240,8 +240,10 @@ typedef struct {
- */
- static void
--start_element (void *user_data, const xmlChar *name, const xmlChar **attrs)
--{
-+start_element(void *           const user_data,
-+              const xmlChar *  const name,
-+              const xmlChar ** const attrs ATTR_UNUSED) {
-+
-     parse_context *context;
-     xml_element *elem, *new_current;
-@@ -281,9 +283,12 @@ start_element (void *user_data, const xmlChar *name, const xmlChar **attrs)
-     }
- }
-+
-+
- static void
--end_element (void *user_data, const xmlChar *name)
--{
-+end_element(void *          const user_data,
-+            const xmlChar * const name ATTR_UNUSED) {
-+
-     parse_context *context;
-     XMLRPC_ASSERT(user_data != NULL && name != NULL);
-@@ -295,7 +300,7 @@ end_element (void *user_data, const xmlChar *name)
-       /* XXX - I think expat enforces these facts, but I want to be sure.
-       ** If one of these assertion ever fails, it should be replaced by a
-       ** non-assertion runtime error check. */
--      XMLRPC_ASSERT(strcmp(name, context->current->_name) == 0);
-+      XMLRPC_ASSERT(xmlrpc_streq(name, context->current->_name));
-       XMLRPC_ASSERT(context->current->_parent != NULL ||
-                     context->current == context->root);
-diff --git a/libs/xmlrpc-c/src/xmlrpc_parse.c b/libs/xmlrpc-c/src/xmlrpc_parse.c
-index 43d9d54..848bfcd 100644
---- a/libs/xmlrpc-c/src/xmlrpc_parse.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_parse.c
-@@ -1,5 +1,7 @@
- /* Copyright information is at end of file. */
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
-+
- #include "xmlrpc_config.h"
- #include <stddef.h>
-@@ -32,6 +34,19 @@
-    invoke XMLRPC_FAIL if something looks wrong.
- */
-+static void
-+setParseFault(xmlrpc_env * const envP,
-+              const char * const format,
-+              ...) {
-+
-+    va_list args;
-+    va_start(args, format);
-+    xmlrpc_set_fault_formatted_v(envP, XMLRPC_PARSE_ERROR, format, args);
-+    va_end(args);
-+}
-+
-+
-+
- #define CHECK_NAME(env,elem,name) \
-     do \
-         if (!xmlrpc_streq((name), xml_element_name(elem))) \
-@@ -44,41 +59,29 @@
-     do \
-         if (xml_element_children_size(elem) != (count)) \
-             XMLRPC_FAIL3(env, XMLRPC_PARSE_ERROR, \
--             "Expected <%s> to have %d children, found %d", \
-+                         "Expected <%s> to have %u children, found %u", \
-                          xml_element_name(elem), (count), \
--                         xml_element_children_size(elem)); \
-+                         (unsigned)xml_element_children_size(elem)); \
-     while (0)
- static xml_element *
--get_child_by_name (xmlrpc_env *env, xml_element *parent, char *name)
--{
--    size_t child_count, i;
--    xml_element **children;
--
--    children = xml_element_children(parent);
--    child_count = xml_element_children_size(parent);
--    for (i = 0; i < child_count; i++) {
--        if (xmlrpc_streq(xml_element_name(children[i]), name))
--            return children[i];
--    }
--    
--    xmlrpc_env_set_fault_formatted(env, XMLRPC_PARSE_ERROR,
--                                   "Expected <%s> to have child <%s>",
--                                   xml_element_name(parent), name);
--    return NULL;
--}
-+getChildByName (xmlrpc_env *  const envP,
-+                xml_element * const parentP,
-+                const char *  const name) {
-+    size_t const childCount = xml_element_children_size(parentP);
-+    xml_element ** const childrenP = xml_element_children(parentP);
-+    unsigned int i;
--static void
--setParseFault(xmlrpc_env * const envP,
--              const char * const format,
--              ...) {
--
--    va_list args;
--    va_start(args, format);
--    xmlrpc_set_fault_formatted_v(envP, XMLRPC_PARSE_ERROR, format, args);
--    va_end(args);
-+    for (i = 0; i < childCount; ++i) {
-+        if (xmlrpc_streq(xml_element_name(childrenP[i]), name))
-+            return childrenP[i];
-+    }
-+    
-+    setParseFault(envP, "Expected <%s> to have child <%s>",
-+                  xml_element_name(parentP), name);
-+    return NULL;
- }
-@@ -94,10 +97,11 @@ static xmlrpc_value *
- convert_params(xmlrpc_env *        const envP,
-                const xml_element * const elemP) {
- /*----------------------------------------------------------------------------
--   Convert an XML element representing a list of parameters (i.e.  a
--   <params> element) to an xmlrpc_value of type array.  Note that an
--   array is normally represented in XML by a <value> element.  We use
--   type xmlrpc_value to represent the parameter list just for convenience.
-+   Convert an XML element representing a list of parameters (i.e.  a <params>
-+   element) to an xmlrpc_value of type array.  Note that an xmlrpc_value is
-+   normally represented in XML by a <value> element, not a <params> element.
-+   We use type xmlrpc_value to represent the parameter list just for
-+   convenience.
- -----------------------------------------------------------------------------*/
-     xmlrpc_value *array, *item;
-     int size, i;
-@@ -120,7 +124,8 @@ convert_params(xmlrpc_env *        const envP,
-     size = xml_element_children_size(elemP);
-     params = xml_element_children(elemP);
-     for (i = 0; i < size; ++i) {
--        unsigned int const maxNest = xmlrpc_limit_get(XMLRPC_NESTING_LIMIT_ID);
-+        unsigned int const maxNest = (unsigned int)
-+            xmlrpc_limit_get(XMLRPC_NESTING_LIMIT_ID);
-         param = params[i];
-         CHECK_NAME(envP, param, "param");
-@@ -155,7 +160,7 @@ convert_params(xmlrpc_env *        const envP,
- static void
- parseCallXml(xmlrpc_env *   const envP,
-              const char *   const xmlData,
--             size_t         const xmlLen,
-+             size_t         const xmlDataLen,
-              xml_element ** const callElemPP) {
- /*----------------------------------------------------------------------------
-    Parse the XML of an XML-RPC call.
-@@ -164,7 +169,7 @@ parseCallXml(xmlrpc_env *   const envP,
-     xmlrpc_env env;
-     xmlrpc_env_init(&env);
--    xml_parse(&env, xmlData, xmlLen, &callElemP);
-+    xml_parse(&env, xmlData, xmlDataLen, &callElemP);
-     if (env.fault_occurred)
-         xmlrpc_env_set_fault_formatted(
-             envP, env.fault_code, "Call is not valid XML.  %s",
-@@ -176,12 +181,11 @@ parseCallXml(xmlrpc_env *   const envP,
-                           "Instead, we have a <%s> element.",
-                           xml_element_name(callElemP));
--        if (!envP->fault_occurred)
--            *callElemPP = callElemP;
--
-         if (envP->fault_occurred)
-             xml_element_free(callElemP);
-     }
-+    *callElemPP = callElemP;
-+
-     xmlrpc_env_clean(&env);
- }
-@@ -229,7 +233,7 @@ parseCallChildren(xmlrpc_env *    const envP,
-         
-     XMLRPC_ASSERT(xmlrpc_streq(xml_element_name(callElemP), "methodCall"));
-     
--    nameElemP = get_child_by_name(envP, callElemP, "methodName");
-+    nameElemP = getChildByName(envP, callElemP, "methodName");
-     
-     if (!envP->fault_occurred) {
-         parseMethodNameElement(envP, nameElemP, methodNameP);
-@@ -239,7 +243,7 @@ parseCallChildren(xmlrpc_env *    const envP,
-             if (callChildCount > 1) {
-                 xml_element * paramsElemP;
--                paramsElemP = get_child_by_name(envP, callElemP, "params");
-+                paramsElemP = getChildByName(envP, callElemP, "params");
-                     
-                 if (!envP->fault_occurred)
-                     *paramArrayPP = convert_params(envP, paramsElemP);
-@@ -272,7 +276,7 @@ parseCallChildren(xmlrpc_env *    const envP,
- void 
- xmlrpc_parse_call(xmlrpc_env *    const envP,
-                   const char *    const xmlData,
--                  size_t          const xmlLen,
-+                  size_t          const xmlDataLen,
-                   const char **   const methodNameP,
-                   xmlrpc_value ** const paramArrayPP) {
- /*----------------------------------------------------------------------------
-@@ -290,14 +294,14 @@ xmlrpc_parse_call(xmlrpc_env *    const envP,
-        from creating an enormous memory block, so you should try to
-        enforce it *before* reading any data off the network.
-      */
--    if (xmlLen > xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID))
-+    if (xmlDataLen > xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID))
-         xmlrpc_env_set_fault_formatted(
-             envP, XMLRPC_LIMIT_EXCEEDED_ERROR,
-             "XML-RPC request too large.  Max allowed is %u bytes",
--            xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID));
-+            (unsigned)xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID));
-     else {
-         xml_element * callElemP;
--        parseCallXml(envP, xmlData, xmlLen, &callElemP);
-+        parseCallXml(envP, xmlData, xmlDataLen, &callElemP);
-         if (!envP->fault_occurred) {
-             parseCallChildren(envP, callElemP, methodNameP, paramArrayPP);
-@@ -399,7 +403,7 @@ parseFaultElement(xmlrpc_env *        const envP,
-                   int *               const faultCodeP,
-                   const char **       const faultStringP) {
-                   
--    unsigned int const maxRecursion =
-+    unsigned int const maxRecursion = (unsigned int)
-         xmlrpc_limit_get(XMLRPC_NESTING_LIMIT_ID);
-     XMLRPC_ASSERT(xmlrpc_streq(xml_element_name(faultElement), "fault"));
-@@ -533,7 +537,7 @@ xmlrpc_parse_response2(xmlrpc_env *    const envP,
-   If the XML text is not a valid response or something prevents us from
-   parsing it, return a description of the error as *envP and nothing else.
- -----------------------------------------------------------------------------*/
--    xml_element * response;
-+    xml_element * responseEltP;
-     XMLRPC_ASSERT_ENV_OK(envP);
-     XMLRPC_ASSERT(xmlData != NULL);
-@@ -547,27 +551,29 @@ xmlrpc_parse_response2(xmlrpc_env *    const envP,
-             envP, XMLRPC_LIMIT_EXCEEDED_ERROR,
-             "XML-RPC response too large.  Our limit is %u characters.  "
-             "We got %u characters",
--            xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID), xmlDataLen);
-+            (unsigned)xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID),
-+            (unsigned)xmlDataLen);
-     else {
-         xmlrpc_env env;
-         xmlrpc_env_init(&env);
--        xml_parse(&env, xmlData, xmlDataLen, &response);
-+        xml_parse(&env, xmlData, xmlDataLen, &responseEltP);
-         if (env.fault_occurred)
-             setParseFault(envP, "Not valid XML.  %s", env.fault_string);
-         else {
-             /* Pick apart and verify our structure. */
--            if (xmlrpc_streq(xml_element_name(response), "methodResponse")) {
--                parseMethodResponseElt(envP, response,
-+            if (xmlrpc_streq(xml_element_name(responseEltP),
-+                             "methodResponse")) {
-+                parseMethodResponseElt(envP, responseEltP,
-                                        resultPP, faultCodeP, faultStringP);
-             } else
-                 setParseFault(envP, "XML-RPC response must consist of a "
-                               "<methodResponse> element.  "
-                               "This has a <%s> instead.",
--                              xml_element_name(response));
-+                              xml_element_name(responseEltP));
-             
--            xml_element_free(response);
-+            xml_element_free(responseEltP);
-         }
-         xmlrpc_env_clean(&env);
-     }
-@@ -607,6 +613,57 @@ xmlrpc_parse_response(xmlrpc_env * const envP,
-+void
-+xmlrpc_parse_value_xml(xmlrpc_env *    const envP,
-+                       const char *    const xmlData,
-+                       size_t          const xmlDataLen,
-+                       xmlrpc_value ** const valuePP) {
-+/*----------------------------------------------------------------------------
-+   Compute the xmlrpc_value represented by the XML document 'xmlData' (of
-+   length 'xmlDataLen' characters), which must consist of a single <value>
-+   element.  Return that xmlrpc_value.
-+
-+   We call convert_array() and convert_struct(), which may ultimately
-+   call us recursively.  Don't recurse any more than 'maxRecursion'
-+   times.
-+
-+   This isn't generally useful in XML-RPC programs, because such programs
-+   parse a whole XML-RPC call or response document, and never see the XML text
-+   of just a <value> element.  But a program may do some weird form of XML-RPC
-+   processing or just borrow Xmlrpc-c's value serialization facilities for
-+   something unrelated to XML-RPC.  In any case, it makes sense to have an
-+   inverse of xmlrpc_serialize_value2(), which generates XML text from an
-+   xmlrpc_value.
-+-----------------------------------------------------------------------------*/
-+    xmlrpc_env env;
-+
-+    xml_element * valueEltP;
-+
-+    XMLRPC_ASSERT_ENV_OK(envP);
-+    XMLRPC_ASSERT(xmlData != NULL);
-+
-+    xmlrpc_env_init(&env);
-+
-+    xml_parse(&env, xmlData, xmlDataLen, &valueEltP);
-+
-+    if (env.fault_occurred) {
-+        setParseFault(envP, "Not valid XML.  %s", env.fault_string);
-+    } else {
-+        if (xmlrpc_streq(xml_element_name(valueEltP), "value")) {
-+            unsigned int const maxRecursion = (unsigned int)
-+                xmlrpc_limit_get(XMLRPC_NESTING_LIMIT_ID);
-+            xmlrpc_parseValue(envP, maxRecursion, valueEltP, valuePP);
-+        } else
-+            setParseFault(envP, "XML-RPC value XML document must consist of "
-+                          "a <value> element.  This has a <%s> instead.",
-+                          xml_element_name(valueEltP));
-+        xml_element_free(valueEltP);
-+    }
-+    xmlrpc_env_clean(&env);
-+}
-+
-+
-+
- /* Copyright (C) 2001 by First Peer, Inc. All rights reserved.
- **
- ** Redistribution and use in source and binary forms, with or without
-diff --git a/libs/xmlrpc-c/src/xmlrpc_registry.c b/libs/xmlrpc-c/src/xmlrpc_registry.c
-deleted file mode 100644
-index d320019..0000000
---- a/libs/xmlrpc-c/src/xmlrpc_registry.c
-+++ /dev/null
-@@ -1,830 +0,0 @@
--/* Copyright (C) 2001 by First Peer, Inc. All rights reserved.
--** Copyright (C) 2001 by Eric Kidd. All rights reserved.
--** Copyright (C) 2001 by Luke Howard. 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. The name of the author may not be used to endorse or promote products
--**    derived from this software without specific prior written permission. 
--**  
--** THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 "xmlrpc_config.h"
--
--#include <stdlib.h>
--#include <string.h>
--
--#include "xmlrpc-c/base.h"
--#include "xmlrpc-c/server.h"
--#include "xmlrpc-c/base_int.h"
--
--/*=========================================================================
--**  XML-RPC Server Method Registry
--**=========================================================================
--**  A method registry maintains a list of functions, and handles
--**  dispatching. To build an XML-RPC server, just add a communications
--**  protocol. :-)
--*/
--
--static void
--install_system_methods (xmlrpc_env *env, xmlrpc_registry *registry);
--
--xmlrpc_registry *
--xmlrpc_registry_new(xmlrpc_env *env) {
--
--    xmlrpc_value *methods;
--    xmlrpc_registry *registry;
--    int registry_valid;
--    
--    XMLRPC_ASSERT_ENV_OK(env);
--    
--    /* Error-handling preconditions. */
--    methods = NULL;
--    registry = NULL;
--    registry_valid = 0;
--
--    /* Allocate our memory. */
--    methods = xmlrpc_struct_new(env);
--    XMLRPC_FAIL_IF_FAULT(env);
--    registry = (xmlrpc_registry*) malloc(sizeof(xmlrpc_registry));
--    XMLRPC_FAIL_IF_NULL(registry, env, XMLRPC_INTERNAL_ERROR,
--                        "Could not allocate memory for registry");
--    
--    /* Set everything up. */
--    registry->_introspection_enabled = 1;
--    registry->_methods = methods;
--    registry->_default_method = NULL;
--    registry->_preinvoke_method = NULL;
--    registry_valid = 1;
--
--    /* Install our system methods. */
--    install_system_methods(env, registry);
--    XMLRPC_FAIL_IF_FAULT(env);
--
-- cleanup:
--    if (env->fault_occurred) {
--        if (registry_valid) {
--            xmlrpc_registry_free(registry);
--        } else {
--            if (methods)
--                xmlrpc_DECREF(methods);
--            if (registry)
--                free(registry);
--        }
--        return NULL;
--    }
--    return registry;
--}
--
--
--
--void 
--xmlrpc_registry_free(xmlrpc_registry * registry) {
--
--    XMLRPC_ASSERT_PTR_OK(registry);
--    XMLRPC_ASSERT(registry->_methods != XMLRPC_BAD_POINTER);
--
--    xmlrpc_DECREF(registry->_methods);
--    registry->_methods = XMLRPC_BAD_POINTER;
--    if (registry->_default_method != NULL)
--        xmlrpc_DECREF(registry->_default_method);
--    if (registry->_preinvoke_method != NULL)
--        xmlrpc_DECREF(registry->_preinvoke_method);
--    free(registry);
--}
--
--
--
--/*=========================================================================
--**  xmlrpc_registry_disable_introspection
--**=========================================================================
--**  See xmlrpc.h for more documentation.
--*/
--
--void 
--xmlrpc_registry_disable_introspection(xmlrpc_registry * registry) {
--    XMLRPC_ASSERT_PTR_OK(registry);
--    registry->_introspection_enabled = 0;
--}
--
--
--
--/*=========================================================================
--**  xmlrpc_registry_add_method
--**=========================================================================
--**  See xmlrpc.h for more documentation.
--*/
--
--void 
--xmlrpc_registry_add_method(xmlrpc_env *env,
--                           xmlrpc_registry *registry,
--                           const char *host,
--                           const char *method_name,
--                           xmlrpc_method method,
--                           void *user_data) {
--
--    xmlrpc_registry_add_method_w_doc (env, registry, host, method_name,
--                      method, user_data, "?",
--                      "No help is available for this method.");
--}
--
--
--
--void 
--xmlrpc_registry_add_method_w_doc(xmlrpc_env *env,
--                                 xmlrpc_registry *registry,
--                                 const char *host,
--                                 const char *method_name,
--                                 xmlrpc_method method,
--                                 void *user_data,
--                                 const char *signature,
--                                 const char *help) {
--    xmlrpc_value *method_info;
--
--    XMLRPC_ASSERT_ENV_OK(env);
--    XMLRPC_ASSERT_PTR_OK(registry);
--    XMLRPC_ASSERT(host == NULL);
--    XMLRPC_ASSERT_PTR_OK(method_name);
--    XMLRPC_ASSERT_PTR_OK(method);
--
--    /* Error-handling preconditions. */
--    method_info = NULL;
--
--    /* Store our method and user data into our hash table. */
--    method_info = xmlrpc_build_value(env, "(ppss)", (void*) method, user_data,
--                                     signature, help);
--    XMLRPC_FAIL_IF_FAULT(env);
--    xmlrpc_struct_set_value(env, registry->_methods, method_name, method_info);
--    XMLRPC_FAIL_IF_FAULT(env);
--
-- cleanup:
--    if (method_info)
--    xmlrpc_DECREF(method_info);
--
--}
--
--
--
--/*=========================================================================
--**  xmlrpc_registry_set_default_method
--**=========================================================================
--**  See xmlrpc.h for more documentation.
--*/
--
--void 
--xmlrpc_registry_set_default_method(xmlrpc_env *env,
--                                   xmlrpc_registry *registry,
--                                   xmlrpc_default_method handler,
--                                   void *user_data) {
--    xmlrpc_value *method_info;
--
--    XMLRPC_ASSERT_ENV_OK(env);
--    XMLRPC_ASSERT_PTR_OK(registry);
--    XMLRPC_ASSERT_PTR_OK(handler);
--
--    /* Error-handling preconditions. */
--    method_info = NULL;
--    
--    /* Store our method and user data into our hash table. */
--    method_info = xmlrpc_build_value(env, "(pp)", (void*) handler, user_data);
--    XMLRPC_FAIL_IF_FAULT(env);
--
--    /* Dispose of any pre-existing default method and install ours. */
--    if (registry->_default_method)
--        xmlrpc_DECREF(registry->_default_method);
--    registry->_default_method = method_info;
--    
--cleanup:
--    if (env->fault_occurred) {
--        if (method_info)
--            xmlrpc_DECREF(method_info);
--    }
--}
--
--
--
--/*=========================================================================
--**  xmlrpc_registry_set_preinvoke_method
--**=========================================================================
--**  See xmlrpc.h for more documentation.
--*/
--
--void 
--xmlrpc_registry_set_preinvoke_method(xmlrpc_env *env,
--                                     xmlrpc_registry *registry,
--                                     xmlrpc_preinvoke_method handler,
--                                     void *user_data) {
--    xmlrpc_value *method_info;
--
--    XMLRPC_ASSERT_ENV_OK(env);
--    XMLRPC_ASSERT_PTR_OK(registry);
--    XMLRPC_ASSERT_PTR_OK(handler);
--
--    /* Error-handling preconditions. */
--    method_info = NULL;
--
--    /* Store our method and user data into our hash table. */
--    method_info = xmlrpc_build_value(env, "(pp)", (void*) handler, user_data);
--    XMLRPC_FAIL_IF_FAULT(env);
--
--    /* Dispose of any pre-existing preinvoke method and install ours. */
--    if (registry->_preinvoke_method)
--        xmlrpc_DECREF(registry->_preinvoke_method);
--    registry->_preinvoke_method = method_info;
--
-- cleanup:
--    if (env->fault_occurred) {
--        if (method_info)
--            xmlrpc_DECREF(method_info);
--    }
--}
--
--
--
--/*=========================================================================
--**  dispatch_call
--**=========================================================================
--**  An internal method which actually does the dispatch. This may get
--**  prettified and exported at some point in the future.
--*/
--
--static void
--callPreinvokeMethodIfAny(xmlrpc_env *      const envP,
--                         xmlrpc_registry * const registryP,
--                         const char *      const methodName,
--                         xmlrpc_value *    const paramArrayP) {
--
--    /* Get the preinvoke method, if it is set. */
--    if (registryP->_preinvoke_method) {
--        xmlrpc_preinvoke_method preinvoke_method;
--        void * user_data;
--
--        xmlrpc_parse_value(envP, registryP->_preinvoke_method, "(pp)",
--                           &preinvoke_method, &user_data);
--        if (!envP->fault_occurred)
--            (*preinvoke_method)(envP, methodName,
--                                paramArrayP, user_data);
--    }
--}
--
--
--
--static void
--callDefaultMethod(xmlrpc_env *    const envP,
--                  xmlrpc_value *  const defaultMethodInfo,
--                  const char *    const methodName,
--                  xmlrpc_value *  const paramArrayP,
--                  xmlrpc_value ** const resultPP) {
--
--    xmlrpc_default_method default_method;
--    void * user_data;
--
--    xmlrpc_parse_value(envP, defaultMethodInfo, "(pp)",
--                       &default_method, &user_data);
--
--    if (!envP->fault_occurred)
--        *resultPP = (*default_method)(envP, NULL, methodName,
--                                      paramArrayP, user_data);
--}
--    
--
--
--static void
--callNamedMethod(xmlrpc_env *    const envP,
--                xmlrpc_value *  const methodInfo,
--                xmlrpc_value *  const paramArrayP,
--                xmlrpc_value ** const resultPP) {
--
--    xmlrpc_method method;
--    void * user_data;
--    
--    xmlrpc_parse_value(envP, methodInfo, "(pp*)", &method, &user_data);
--    if (!envP->fault_occurred)
--        *resultPP = (*method)(envP, paramArrayP, user_data);
--}
--
--
--
--static void
--dispatch_call(xmlrpc_env *      const envP, 
--              xmlrpc_registry * const registryP,
--              const char *      const methodName, 
--              xmlrpc_value *    const paramArrayP,
--              xmlrpc_value **   const resultPP) {
--
--    callPreinvokeMethodIfAny(envP, registryP, methodName, paramArrayP);
--    if (!envP->fault_occurred) {
--        xmlrpc_value * method_info;
--
--        /* Look up the method info for the named method. */
--        xmlrpc_struct_find_value(envP, registryP->_methods,
--                                 methodName, &method_info);
--        if (!envP->fault_occurred) {
--            if (method_info) {
--                callNamedMethod(envP, method_info, paramArrayP, resultPP);
--                xmlrpc_DECREF(method_info);
--            } else {
--                if (registryP->_default_method)
--                    callDefaultMethod(envP, registryP->_default_method, 
--                                      methodName, paramArrayP,
--                                      resultPP);
--                else {
--                    /* No matching method, and no default. */
--                    xmlrpc_env_set_fault_formatted(
--                        envP, XMLRPC_NO_SUCH_METHOD_ERROR,
--                        "Method '%s' not defined", methodName);
--                }
--            } 
--        }
--    }
--    /* For backward compatibility, for sloppy users: */
--    if (envP->fault_occurred)
--        *resultPP = NULL;
--}
--
--
--
--/*=========================================================================
--**  xmlrpc_registry_process_call
--**=========================================================================
--**
--*/
--
--xmlrpc_mem_block *
--xmlrpc_registry_process_call(xmlrpc_env *      const envP,
--                             xmlrpc_registry * const registryP,
--                             const char *      const host ATTR_UNUSED,
--                             const char *      const xml_data,
--                             size_t            const xml_len) {
--
--    xmlrpc_mem_block * output;
--
--    XMLRPC_ASSERT_ENV_OK(envP);
--    XMLRPC_ASSERT_PTR_OK(xml_data);
--    
--    xmlrpc_traceXml("XML-RPC CALL", xml_data, xml_len);
--
--    /* Allocate our output buffer.
--    ** If this fails, we need to die in a special fashion. */
--    output = XMLRPC_MEMBLOCK_NEW(char, envP, 0);
--    if (!envP->fault_occurred) {
--        const char * methodName;
--        xmlrpc_value * paramArray;
--        xmlrpc_env fault;
--
--        xmlrpc_env_init(&fault);
--
--        xmlrpc_parse_call(&fault, xml_data, xml_len, 
--                          &methodName, &paramArray);
--
--        if (!fault.fault_occurred) {
--            xmlrpc_value * result;
--            
--            dispatch_call(&fault, registryP, methodName, paramArray, &result);
--
--            if (!fault.fault_occurred) {
--                xmlrpc_serialize_response(envP, output, result);
--
--                /* A comment here used to say that
--                   xmlrpc_serialize_response() could fail and "leave
--                   stuff in the buffer."  Don't know what that means,
--                   but it sounds like something that needs to be
--                   fixed.  The old code aborted the program here if
--                   xmlrpc_serialize_repsonse() failed.  04.11.17 
--                */
--                xmlrpc_DECREF(result);
--            } 
--            xmlrpc_strfree(methodName);
--            xmlrpc_DECREF(paramArray);
--        }
--        if (!envP->fault_occurred && fault.fault_occurred)
--            xmlrpc_serialize_fault(envP, output, &fault);
--
--        xmlrpc_env_clean(&fault);
--
--        if (envP->fault_occurred)
--            XMLRPC_MEMBLOCK_FREE(char, output);
--        else
--            xmlrpc_traceXml("XML-RPC RESPONSE", 
--                            XMLRPC_MEMBLOCK_CONTENTS(char, output),
--                            XMLRPC_MEMBLOCK_SIZE(char, output));
--    }
--    return output;
--}
--
--
--
--/*=========================================================================
--**  system.multicall
--**=========================================================================
--**  Low-tech support for transparent, boxed methods.
--*/
--
--static char *multicall_help =
--"Process an array of calls, and return an array of results. Calls should "
--"be structs of the form {'methodName': string, 'params': array}. Each "
--"result will either be a single-item array containg the result value, or "
--"a struct of the form {'faultCode': int, 'faultString': string}. This "
--"is useful when you need to make lots of small calls without lots of "
--"round trips.";
--
--static xmlrpc_value *
--call_one_method(xmlrpc_env *env, xmlrpc_registry *registry,
--                xmlrpc_value *method_info) {
--
--    xmlrpc_value *result_val, *result;
--    char *method_name;
--    xmlrpc_value *param_array;
--
--    /* Error-handling preconditions. */
--    result = result_val = NULL;
--    
--    /* Extract our method name and parameters. */
--    xmlrpc_parse_value(env, method_info, "{s:s,s:A,*}",
--                       "methodName", &method_name,
--                       "params", &param_array);
--    XMLRPC_FAIL_IF_FAULT(env);
--
--    /* Watch out for a deep recursion attack. */
--    if (strcmp(method_name, "system.multicall") == 0)
--        XMLRPC_FAIL(env, XMLRPC_REQUEST_REFUSED_ERROR,
--                    "Recursive system.multicall strictly forbidden");
--    
--    /* Perform the call. */
--    dispatch_call(env, registry, method_name, param_array, &result_val);
--    XMLRPC_FAIL_IF_FAULT(env);
--    
--    /* Build our one-item result array. */
--    result = xmlrpc_build_value(env, "(V)", result_val);
--    XMLRPC_FAIL_IF_FAULT(env);
--    
-- cleanup:
--    if (result_val)
--        xmlrpc_DECREF(result_val);
--    if (env->fault_occurred) {
--        if (result)
--            xmlrpc_DECREF(result);
--        return NULL;
--    }
--    return result;
--}
--
--
--
--static xmlrpc_value *
--system_multicall(xmlrpc_env *env,
--                 xmlrpc_value *param_array,
--                 void *user_data) {
--
--    xmlrpc_registry *registry;
--    xmlrpc_value *methlist, *methinfo, *results, *result;
--    size_t size, i;
--    xmlrpc_env env2;
--
--    XMLRPC_ASSERT_ENV_OK(env);
--    XMLRPC_ASSERT_VALUE_OK(param_array);
--    XMLRPC_ASSERT_PTR_OK(user_data);
--
--    /* Error-handling preconditions. */
--    results = result = NULL;
--    xmlrpc_env_init(&env2);
--    
--    /* Turn our arguments into something more useful. */
--    registry = (xmlrpc_registry*) user_data;
--    xmlrpc_parse_value(env, param_array, "(A)", &methlist);
--    XMLRPC_FAIL_IF_FAULT(env);
--
--    /* Create an empty result list. */
--    results = xmlrpc_build_value(env, "()");
--    XMLRPC_FAIL_IF_FAULT(env);
--
--    /* Loop over our input list, calling each method in turn. */
--    size = xmlrpc_array_size(env, methlist);
--    XMLRPC_ASSERT_ENV_OK(env);
--    for (i = 0; i < size; i++) {
--        methinfo = xmlrpc_array_get_item(env, methlist, i);
--        XMLRPC_ASSERT_ENV_OK(env);
--        
--        /* Call our method. */
--        xmlrpc_env_clean(&env2);
--        xmlrpc_env_init(&env2);
--        result = call_one_method(&env2, registry, methinfo);
--        
--        /* Turn any fault into a structure. */
--        if (env2.fault_occurred) {
--            XMLRPC_ASSERT(result == NULL);
--            result = 
--                xmlrpc_build_value(env, "{s:i,s:s}",
--                                   "faultCode", (xmlrpc_int32) env2.fault_code,
--                                   "faultString", env2.fault_string);
--            XMLRPC_FAIL_IF_FAULT(env);
--        }
--        
--        /* Append this method result to our master array. */
--        xmlrpc_array_append_item(env, results, result);
--        xmlrpc_DECREF(result);
--        result = NULL;
--        XMLRPC_FAIL_IF_FAULT(env);
--    }
--
-- cleanup:
--    xmlrpc_env_clean(&env2);
--    if (result)
--        xmlrpc_DECREF(result);
--    if (env->fault_occurred) {
--        if (results)
--            xmlrpc_DECREF(results);
--        return NULL;
--    }
--    return results;
--}
--
--
--
--/*=========================================================================
--**  system.listMethods
--**=========================================================================
--**  List all available methods by name.
--*/
--
--static char *listMethods_help =
--"Return an array of all available XML-RPC methods on this server.";
--
--static xmlrpc_value *
--system_listMethods(xmlrpc_env *env,
--                   xmlrpc_value *param_array,
--                   void *user_data) {
--
--    xmlrpc_registry *registry;
--    xmlrpc_value *method_names, *method_name, *method_info;
--    size_t size, i;
--
--    XMLRPC_ASSERT_ENV_OK(env);
--    XMLRPC_ASSERT_VALUE_OK(param_array);
--    XMLRPC_ASSERT_PTR_OK(user_data);
--
--    /* Error-handling preconditions. */
--    method_names = NULL;
--
--    /* Turn our arguments into something more useful. */
--    registry = (xmlrpc_registry*) user_data;
--    xmlrpc_parse_value(env, param_array, "()");
--    XMLRPC_FAIL_IF_FAULT(env);
--    
--    /* Make sure we're allowed to introspect. */
--    if (!registry->_introspection_enabled)
--        XMLRPC_FAIL(env, XMLRPC_INTROSPECTION_DISABLED_ERROR,
--                    "Introspection disabled for security reasons");
--    
--    /* Iterate over all the methods in the registry, adding their names
--    ** to a list. */
--    method_names = xmlrpc_build_value(env, "()");
--    XMLRPC_FAIL_IF_FAULT(env);
--    size = xmlrpc_struct_size(env, registry->_methods);
--    XMLRPC_FAIL_IF_FAULT(env);
--    for (i = 0; i < size; i++) {
--        xmlrpc_struct_get_key_and_value(env, registry->_methods, i,
--                                        &method_name, &method_info);
--        XMLRPC_FAIL_IF_FAULT(env);
--        xmlrpc_array_append_item(env, method_names, method_name);
--        XMLRPC_FAIL_IF_FAULT(env);
--    }
--
-- cleanup:
--    if (env->fault_occurred) {
--        if (method_names)
--            xmlrpc_DECREF(method_names);
--        return NULL;
--    }
--    return method_names;
--}
--
--
--
--/*=========================================================================
--**  system.methodHelp
--**=========================================================================
--**  Get the help string for a particular method.
--*/
--
--static char *methodHelp_help =
--"Given the name of a method, return a help string.";
--
--static xmlrpc_value *
--system_methodHelp(xmlrpc_env *env,
--                  xmlrpc_value *param_array,
--                  void *user_data) {
--
--    xmlrpc_registry *registry;
--    char *method_name;
--    xmlrpc_value *ignored1, *ignored2, *ignored3, *help;
--
--    XMLRPC_ASSERT_ENV_OK(env);
--    XMLRPC_ASSERT_VALUE_OK(param_array);
--    XMLRPC_ASSERT_PTR_OK(user_data);
--
--    /* Turn our arguments into something more useful. */
--    registry = (xmlrpc_registry*) user_data;
--    xmlrpc_parse_value(env, param_array, "(s)", &method_name);
--    XMLRPC_FAIL_IF_FAULT(env);
--    
--    /* Make sure we're allowed to introspect. */
--    if (!registry->_introspection_enabled)
--        XMLRPC_FAIL(env, XMLRPC_INTROSPECTION_DISABLED_ERROR,
--                    "Introspection disabled for security reasons");
--    
--    /* Get our documentation string. */
--    xmlrpc_parse_value(env, registry->_methods, "{s:(VVVV*),*}",
--                       method_name, &ignored1, &ignored2, &ignored3, &help);
--    XMLRPC_FAIL_IF_FAULT(env);
--    
-- cleanup:
--    if (env->fault_occurred)
--        return NULL;
--    xmlrpc_INCREF(help);
--    return help;
--}
--
--
--
--/*=========================================================================
--**  system.methodSignature
--**=========================================================================
--**  Return an array of arrays describing possible signatures for this
--**  method.
--**
--**  XXX - This is the ugliest function in the entire library.
--*/
--
--static char *methodSignature_help =
--"Given the name of a method, return an array of legal signatures. "
--"Each signature is an array of strings. The first item of each signature "
--"is the return type, and any others items are parameter types.";
--
--static char *bad_sig_str =
--"Application has incorrect method signature information";
--
--#define BAD_SIG(env) \
--    XMLRPC_FAIL((env), XMLRPC_INTERNAL_ERROR, bad_sig_str);
--
--static xmlrpc_value *
--system_methodSignature(xmlrpc_env *env,
--                       xmlrpc_value *param_array,
--                       void *user_data) {
--
--    xmlrpc_registry *registry;
--    char *method_name;
--    xmlrpc_value *ignored1, *ignored2, *ignored3;
--    xmlrpc_value *item, *current, *result;
--    int at_sig_start;
--    char *sig, *code;
--
--    XMLRPC_ASSERT_ENV_OK(env);
--    XMLRPC_ASSERT_VALUE_OK(param_array);
--    XMLRPC_ASSERT_PTR_OK(user_data);
--
--    /* Error-handling preconditions. */
--    item = current = result = NULL;
--
--    /* Turn our arguments into something more useful. */
--    registry = (xmlrpc_registry*) user_data;
--    xmlrpc_parse_value(env, param_array, "(s)", &method_name);
--    XMLRPC_FAIL_IF_FAULT(env);
--
--    /* Make sure we're allowed to introspect. */
--    if (!registry->_introspection_enabled)
--        XMLRPC_FAIL(env, XMLRPC_INTROSPECTION_DISABLED_ERROR,
--                    "Introspection disabled for security reasons");
--    
--    /* Get our signature string. */
--    xmlrpc_parse_value(env, registry->_methods, "{s:(VVsV*),*}",
--                       method_name, &ignored1, &ignored2, &sig, &ignored3);
--    XMLRPC_FAIL_IF_FAULT(env);
--    
--    if (sig[0] == '?' && sig[1] == '\0') {
--        /* No signature supplied. */
--        result = xmlrpc_build_value(env, "s", "undef");
--        XMLRPC_FAIL_IF_FAULT(env);
--    } else {
--        /* Build an array of arrays. */
--        current = xmlrpc_build_value(env, "()");
--        XMLRPC_FAIL_IF_FAULT(env);
--        result = xmlrpc_build_value(env, "(V)", current);
--        XMLRPC_FAIL_IF_FAULT(env);
--        at_sig_start = 1;
--        
--        do {
--        next_loop:
--            
--            /* Process the current code. */
--            switch (*(sig++)) {
--            case 'i': code = "int"; break;
--            case 'b': code = "boolean"; break;
--            case 'd': code = "double"; break;
--            case 's': code = "string"; break;
--            case '8': code = "dateTime.iso8601"; break;
--            case '6': code = "base64"; break;
--            case 'S': code = "struct"; break;
--            case 'A': code = "array"; break;
--                
--            case ',':
--                /* Start a new signature array. */
--                if (at_sig_start)
--                    BAD_SIG(env);
--                xmlrpc_DECREF(current);
--                current = xmlrpc_build_value(env, "()");
--                XMLRPC_FAIL_IF_FAULT(env);
--                xmlrpc_array_append_item(env, result, current);
--                XMLRPC_FAIL_IF_FAULT(env);
--                at_sig_start = 1;
--                goto next_loop;
--                
--            default:
--            BAD_SIG(env);
--            }
--            
--            /* Append the appropriate string to our current signature. */
--            item = xmlrpc_build_value(env, "s", code);
--            XMLRPC_FAIL_IF_FAULT(env);
--            xmlrpc_array_append_item(env, current, item);
--            xmlrpc_DECREF(item);
--            item = NULL;
--            XMLRPC_FAIL_IF_FAULT(env);
--            
--            /* Advance to the next code, and skip over ':' if necessary. */
--            if (at_sig_start) {
--                if (*sig != ':')
--                    BAD_SIG(env);
--                sig++;
--                at_sig_start = 0;
--            }
--            
--        } while (*sig != '\0');
--    }
--    
-- cleanup:
--    if (item)
--        xmlrpc_DECREF(item);
--    if (current)
--        xmlrpc_DECREF(current);
--    if (env->fault_occurred) {
--        if (result)
--            xmlrpc_DECREF(result);
--        return NULL;
--    }
--    return result;
--}
--
--
--
--/*=========================================================================
--**  install_system_methods
--**=========================================================================
--**  Install the standard methods under system.*.
--**  This particular function is highly experimental, and may disappear
--**  without warning.
--*/
--
--static void
--install_system_methods(xmlrpc_env *env, xmlrpc_registry *registry) {
--
--    xmlrpc_registry_add_method_w_doc(env, registry, NULL,
--                                     "system.listMethods",
--                                     &system_listMethods, registry,
--                                     "A:", listMethods_help);
--    XMLRPC_FAIL_IF_FAULT(env);
--    xmlrpc_registry_add_method_w_doc(env, registry, NULL,
--                                     "system.methodSignature",
--                                     &system_methodSignature, registry,
--                                     "A:s", methodSignature_help);
--    XMLRPC_FAIL_IF_FAULT(env);
--    xmlrpc_registry_add_method_w_doc(env, registry, NULL,
--                                     "system.methodHelp",
--                                     &system_methodHelp, registry,
--                                     "s:s", methodHelp_help);
--    XMLRPC_FAIL_IF_FAULT(env);
--    xmlrpc_registry_add_method_w_doc(env, registry, NULL,
--                                     "system.multicall",
--                                     &system_multicall, registry,
--                                     "A:A", multicall_help);
--    XMLRPC_FAIL_IF_FAULT(env);
--    
-- cleanup:
--    return;
--}
-diff --git a/libs/xmlrpc-c/src/xmlrpc_serialize.c b/libs/xmlrpc-c/src/xmlrpc_serialize.c
-index 3ca64dd..78bbc10 100644
---- a/libs/xmlrpc-c/src/xmlrpc_serialize.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_serialize.c
-@@ -4,9 +4,9 @@
-    The printf format specifiers we use appear to be entirely standard,
-    except for the "long long" one, which is %I64 on Windows and %lld
--   everywhere else.  So for that, we use the C99 standard macro PRId64,
--   which is defined by inttypes.h.  Ironically, Windows doesn't have
--   inttypes.h either, but we have int.h instead.
-+   everywhere else.  We could use the C99 standard macro PRId64 for that,
-+   but on at least one 64-bit-long GNU compiler, PRId64 is "ld", which is
-+   considered to be incompatible with long long.  So we have XMLRPC_PRId64.
- */
- #include "xmlrpc_config.h"
-@@ -26,8 +26,9 @@
- #include "double.h"
- #define CRLF "\015\012"
--#define SMALL_BUFFER_SZ (128)
- #define XML_PROLOGUE "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"CRLF
-+#define APACHE_URL "http://ws.apache.org/xmlrpc/namespaces/extensions"
-+#define XMLNS_APACHE "xmlns:ex=\"" APACHE_URL "\""
- static void
-@@ -54,26 +55,31 @@ formatOut(xmlrpc_env *       const envP,
-   particular, do NOT use this routine to print XML-RPC string values!
- -----------------------------------------------------------------------------*/
-     va_list args;
--    char buffer[SMALL_BUFFER_SZ];
--    int count;
-+    char buffer[128];
-+    int rc;
-     XMLRPC_ASSERT_ENV_OK(envP);
-     va_start(args, formatString);
--    count = XMLRPC_VSNPRINTF(buffer, SMALL_BUFFER_SZ, formatString, args);
-+    rc = XMLRPC_VSNPRINTF(buffer, sizeof(buffer), formatString, args);
--    /* Old C libraries return -1 if vsnprintf overflows its buffer.
--    ** New C libraries return the number of characters which *would* have
--    ** been printed if the error did not occur. This is impressively vile.
--    ** Thank the C99 committee for this bright idea. But wait! We also
--    ** need to keep track of the trailing NUL. */
-+    /* Old vsnprintf() (and Windows) fails with return value -1 if the full
-+       string doesn't fit in the buffer.  New vsnprintf() puts whatever will
-+       fit in the buffer, and returns the length of the full string
-+       regardless.  For us, this truncation is a failure.
-+    */
--    if (count < 0 || count >= (SMALL_BUFFER_SZ - 1))
-+    if (rc < 0)
-         xmlrpc_faultf(envP, "formatOut() overflowed internal buffer");
--    else
--        XMLRPC_MEMBLOCK_APPEND(char, envP, outputP, buffer, count);
-+    else {
-+        unsigned int const formattedLen = rc;
-+        if (formattedLen + 1 >= (sizeof(buffer)))
-+            xmlrpc_faultf(envP, "formatOut() overflowed internal buffer");
-+        else
-+            XMLRPC_MEMBLOCK_APPEND(char, envP, outputP, buffer, formattedLen);
-+    }
-     va_end(args);
- }
-@@ -271,6 +277,74 @@ xmlrpc_serialize_base64_data(xmlrpc_env *       const envP,
-+static void
-+serializeDatetime(xmlrpc_env *       const envP,
-+                  xmlrpc_mem_block * const outputP,
-+                  xmlrpc_value *     const valueP) {
-+/*----------------------------------------------------------------------------
-+   Add to *outputP the content of a <value> element to represent
-+   the datetime value *valueP.  I.e.
-+   "<dateTime.iso8601> ... </dateTime.iso8601>".
-+-----------------------------------------------------------------------------*/
-+
-+    addString(envP, outputP, "<dateTime.iso8601>");
-+    if (!envP->fault_occurred) {
-+        char dtString[64];
-+
-+        snprintf(dtString, sizeof(dtString),
-+                 "%u%02u%02uT%02u:%02u:%02u",
-+                 valueP->_value.dt.Y,
-+                 valueP->_value.dt.M,
-+                 valueP->_value.dt.D,
-+                 valueP->_value.dt.h,
-+                 valueP->_value.dt.m,
-+                 valueP->_value.dt.s);
-+
-+        if (valueP->_value.dt.u != 0) {
-+            char usecString[64];
-+            assert(valueP->_value.dt.u < 1000000);
-+            snprintf(usecString, sizeof(usecString), ".%06u",
-+                     valueP->_value.dt.u);
-+            STRSCAT(dtString, usecString);
-+        }
-+        addString(envP, outputP, dtString);
-+
-+        if (!envP->fault_occurred) {
-+            addString(envP, outputP, "</dateTime.iso8601>");
-+        }
-+    }
-+}
-+
-+
-+
-+static void
-+serializeStructMember(xmlrpc_env *       const envP,
-+                      xmlrpc_mem_block * const outputP,
-+                      xmlrpc_value *     const memberKeyP,
-+                      xmlrpc_value *     const memberValueP,
-+                      xmlrpc_dialect     const dialect) {
-+    
-+    addString(envP, outputP, "<member><name>");
-+
-+    if (!envP->fault_occurred) {
-+        serializeUtf8MemBlock(envP, outputP, &memberKeyP->_block);
-+
-+        if (!envP->fault_occurred) {
-+            addString(envP, outputP, "</name>"CRLF);
-+
-+            if (!envP->fault_occurred) {
-+                xmlrpc_serialize_value2(envP, outputP, memberValueP, dialect);
-+
-+                if (!envP->fault_occurred) {
-+                    addString(envP, outputP, "</member>"CRLF);
-+                }
-+            }
-+        }
-+    }
-+}
-+
-+
-+
- static void 
- serializeStruct(xmlrpc_env *       const envP,
-                 xmlrpc_mem_block * const outputP,
-@@ -280,37 +354,25 @@ serializeStruct(xmlrpc_env *       const envP,
-    Add to *outputP the content of a <value> element to represent
-    the structure value *valueP.  I.e. "<struct> ... </struct>".
- -----------------------------------------------------------------------------*/
--    size_t size;
--    size_t i;
--    xmlrpc_value * memberKeyP;
--    xmlrpc_value * memberValueP;
--
-     addString(envP, outputP, "<struct>"CRLF);
--    XMLRPC_FAIL_IF_FAULT(envP);
--
--    size = xmlrpc_struct_size(envP, structP);
--    XMLRPC_FAIL_IF_FAULT(envP);
--    for (i = 0; i < size; ++i) {
--        xmlrpc_struct_get_key_and_value(envP, structP, i,
--                                        &memberKeyP, &memberValueP);
--        XMLRPC_FAIL_IF_FAULT(envP);
--        addString(envP, outputP, "<member><name>");
--        XMLRPC_FAIL_IF_FAULT(envP);
--        serializeUtf8MemBlock(envP, outputP, &memberKeyP->_block);
--        XMLRPC_FAIL_IF_FAULT(envP);
--        addString(envP, outputP, "</name>"CRLF);
--        XMLRPC_FAIL_IF_FAULT(envP);
--        xmlrpc_serialize_value2(envP, outputP, memberValueP, dialect);
--        XMLRPC_FAIL_IF_FAULT(envP);
--        addString(envP, outputP, "</member>"CRLF);
--        XMLRPC_FAIL_IF_FAULT(envP);
--    }
--
--    addString(envP, outputP, "</struct>");
--    XMLRPC_FAIL_IF_FAULT(envP);
-+    if (!envP->fault_occurred) {
-+        unsigned int const size = xmlrpc_struct_size(envP, structP);
-+        if (!envP->fault_occurred) {
-+            unsigned int i;
-+            for (i = 0; i < size && !envP->fault_occurred; ++i) {
-+                xmlrpc_value * memberKeyP;
-+                xmlrpc_value * memberValueP;
--cleanup:
--    return;
-+                xmlrpc_struct_get_key_and_value(envP, structP, i,
-+                                                &memberKeyP, &memberValueP);
-+                if (!envP->fault_occurred) {
-+                    serializeStructMember(envP, outputP,
-+                                          memberKeyP, memberValueP, dialect);
-+                }
-+            }
-+            addString(envP, outputP, "</struct>");
-+        }
-+    }
- }
-@@ -366,7 +428,7 @@ formatValueContent(xmlrpc_env *       const envP,
-     case XMLRPC_TYPE_I8: {
-         const char * const elemName =
--            dialect == xmlrpc_dialect_apache ? "ex.i8" : "i8";
-+            dialect == xmlrpc_dialect_apache ? "ex:i8" : "i8";
-         formatOut(envP, outputP, "<%s>%" PRId64 "</%s>",
-                   elemName, valueP->_value.i8, elemName);
-     } break;
-@@ -391,13 +453,7 @@ formatValueContent(xmlrpc_env *       const envP,
-     } break;
-     case XMLRPC_TYPE_DATETIME:
--        addString(envP, outputP, "<dateTime.iso8601>");
--        if (!envP->fault_occurred) {
--            serializeUtf8MemBlock(envP, outputP, &valueP->_block);
--            if (!envP->fault_occurred) {
--                addString(envP, outputP, "</dateTime.iso8601>");
--            }
--        }
-+        serializeDatetime(envP, outputP, valueP);
-         break;
-     case XMLRPC_TYPE_STRING:
-@@ -436,7 +492,7 @@ formatValueContent(xmlrpc_env *       const envP,
-     case XMLRPC_TYPE_NIL: {
-         const char * const elemName =
--            dialect == xmlrpc_dialect_apache ? "ex.nil" : "nil";
-+            dialect == xmlrpc_dialect_apache ? "ex:nil" : "nil";
-         formatOut(envP, outputP, "<%s/>", elemName);
-     } break;
-@@ -502,9 +558,9 @@ xmlrpc_serialize_params2(xmlrpc_env *       const envP,
-     addString(envP, outputP, "<params>"CRLF);
-     if (!envP->fault_occurred) {
-         /* Serialize each parameter. */
--        size_t const paramCount = xmlrpc_array_size(envP, paramArrayP);
-+        int const paramCount = xmlrpc_array_size(envP, paramArrayP);
-         if (!envP->fault_occurred) {
--            size_t paramSeq;
-+            int paramSeq;
-             for (paramSeq = 0;
-                  paramSeq < paramCount && !envP->fault_occurred;
-                  ++paramSeq) {
-@@ -567,7 +623,9 @@ xmlrpc_serialize_call2(xmlrpc_env *       const envP,
-     
-     addString(envP, outputP, XML_PROLOGUE);
-     if (!envP->fault_occurred) {
--        addString(envP, outputP, "<methodCall>"CRLF"<methodName>");
-+        const char * const xmlns =
-+            dialect == xmlrpc_dialect_apache ? " " XMLNS_APACHE : "";
-+        formatOut(envP, outputP, "<methodCall%s>"CRLF"<methodName>", xmlns);
-         if (!envP->fault_occurred) {
-             xmlrpc_mem_block * encodedP;
-             escapeForXml(envP, methodName, strlen(methodName), &encodedP);
-@@ -623,8 +681,10 @@ xmlrpc_serialize_response2(xmlrpc_env *       const envP,
-     addString(envP, outputP, XML_PROLOGUE);
-     if (!envP->fault_occurred) {
--        addString(envP, outputP,
--                  "<methodResponse>"CRLF"<params>"CRLF"<param>");
-+        const char * const xmlns =
-+            dialect == xmlrpc_dialect_apache ? " " XMLNS_APACHE : "";
-+        formatOut(envP, outputP,
-+                  "<methodResponse%s>"CRLF"<params>"CRLF"<param>", xmlns);
-         if (!envP->fault_occurred) {
-             xmlrpc_serialize_value2(envP, outputP, valueP, dialect);
-             if (!envP->fault_occurred) {
-diff --git a/libs/xmlrpc-c/src/xmlrpc_server_abyss.c b/libs/xmlrpc-c/src/xmlrpc_server_abyss.c
-index 7cb1ae1..8471c4c 100644
---- a/libs/xmlrpc-c/src/xmlrpc_server_abyss.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_server_abyss.c
-@@ -2,6 +2,8 @@
- #include "xmlrpc_config.h"
-+#define _XOPEN_SOURCE 600  /* For strdup(), sigaction */
-+
- #include <assert.h>
- #include <stdio.h>
- #include <stdlib.h>
-@@ -39,17 +41,12 @@ struct xmlrpc_server_abyss {
--/*=========================================================================
--**  die_if_fault_occurred
--**=========================================================================
--**  If certain kinds of out-of-memory errors occur during server setup,
--**  we want to quit and print an error.
--*/
-+static void
-+dieIfFaultOccurred(xmlrpc_env * const envP) {
--static void die_if_fault_occurred(xmlrpc_env *env) {
--    if (env->fault_occurred) {
-+    if (envP->fault_occurred) {
-         fprintf(stderr, "Unexpected XML-RPC fault: %s (%d)\n",
--                env->fault_string, env->fault_code);
-+                envP->fault_string, envP->fault_code);
-         exit(1);
-     }
- }
-@@ -135,7 +132,7 @@ addAuthCookie(xmlrpc_env * const envP,
-     
-     xmlrpc_asprintf(&cookieResponse, "auth=%s", authCookie);
-     
--    if (cookieResponse == xmlrpc_strsol)
-+    if (xmlrpc_strnomem(cookieResponse))
-         xmlrpc_faultf(envP, "Insufficient memory to generate cookie "
-                       "response header.");
-     else {
-@@ -148,11 +145,12 @@ addAuthCookie(xmlrpc_env * const envP,
- static void 
--sendXmlData(xmlrpc_env * const envP,
--            TSession *   const abyssSessionP, 
--            const char * const body, 
--            size_t       const len,
--            bool         const chunked) {
-+sendResponse(xmlrpc_env *      const envP,
-+             TSession *        const abyssSessionP, 
-+             const char *      const body, 
-+             size_t            const len,
-+             bool              const chunked,
-+             ResponseAccessCtl const accessControl) {
- /*----------------------------------------------------------------------------
-    Generate an HTTP response containing body 'body' of length 'len'
-    characters.
-@@ -191,17 +189,39 @@ sendXmlData(xmlrpc_env * const envP,
-     else {
-         uint32_t const abyssLen = (uint32_t)len;
--        ResponseContentType(abyssSessionP, "text/xml; charset=\"utf-8\"");
-+        /* See discussion below of quotes around "utf-8" */
-+        ResponseContentType(abyssSessionP, "text/xml");
-         ResponseContentLength(abyssSessionP, abyssLen);
-+        ResponseAccessControl(abyssSessionP, accessControl);
-         
--        ResponseWriteStart(abyssSessionP);
--        ResponseWriteBody(abyssSessionP, body, abyssLen);
--        ResponseWriteEnd(abyssSessionP);
-+        if (ResponseWriteStart(abyssSessionP))
-+                      if (ResponseWriteBody(abyssSessionP, body, abyssLen))
-+                              if (ResponseWriteEnd(abyssSessionP))
-+                                      return;
-+
-+        xmlrpc_faultf(envP, "socket send() problem");
-     }
- }
-+/* From 0.9.10 (May 2001) through 1.17 (December 2008), the content-type
-+   header said charset="utf-8" (i.e. with the value of 'charset' an HTTP quoted
-+   string).  Before 0.9.10, the header didn't have charset at all.
-+
-+   We got a complaint in January 2009 that some client didn't understand that,
-+   saying
-+
-+     apache2: XML-RPC: xmlrpcmsg::parseResponse: invalid charset encoding of
-+     received response: "UTF-8"
-+
-+   And that removing the quotation marks fixes this.
-+
-+   From what I can tell, the module is wrong to distinguish between the
-+   two, but I don't think it hurts anything to use a basic HTTP token instead
-+   of an HTTP quoted string here, so starting in 1.18, we do.  */
-+
-+
- static void
- sendError(TSession *   const abyssSessionP, 
-           unsigned int const status,
-@@ -287,9 +307,8 @@ getBody(xmlrpc_env *        const envP,
-         }
-         if (envP->fault_occurred)
-             xmlrpc_mem_block_free(body);
--        else
--            *bodyP = body;
-     }
-+    *bodyP = body;
- }
-@@ -320,44 +339,6 @@ storeCookies(TSession *     const httpRequestP,
- static void
--validateContentType(TSession *     const httpRequestP,
--                    const char **  const errorP) {
--/*----------------------------------------------------------------------------
--   If the client didn't specify a content-type of "text/xml", fail.
--   We can't allow the client to default this header, because some
--   firewall software may rely on all XML-RPC requests using the POST
--   method and a content-type of "text/xml".x
-------------------------------------------------------------------------------*/
--    const char * const content_type =
--        RequestHeaderValue(httpRequestP, "content-type");
--
--    if (content_type == NULL)
--        xmlrpc_asprintf(errorP,
--                        "You did not supply a content-type HTTP header");
--    else {
--        const char * const sempos = strchr(content_type, ';');
--        unsigned int baselen;
--            /* Length of the base portion of the content type, e.g.
--               "text/xml" int "text/xml;charset=utf-8"
--            */
--
--        if (sempos)
--            baselen = sempos - content_type;
--        else
--            baselen = strlen(content_type);
--
--        if (!xmlrpc_strneq(content_type, "text/xml", baselen))
--            xmlrpc_asprintf(errorP, "Your content-type HTTP header value '%s' "
--                            "does not have a base type of 'text/xml'",
--                            content_type);
--        else
--            *errorP = NULL;
--    }
--}
--
--
--
--static void
- processContentLength(TSession *    const httpRequestP,
-                      size_t *      const inputLenP,
-                      bool *        const missingP,
-@@ -376,6 +357,7 @@ processContentLength(TSession *    const httpRequestP,
-         *errorP = NULL;
-     } else {
-         *missingP = FALSE;
-+        *inputLenP = 0;  /* quiet compiler warning */
-         if (content_length[0] == '\0')
-             xmlrpc_asprintf(errorP, "The value in your content-length "
-                             "HTTP header value is a null string");
-@@ -444,11 +426,13 @@ traceHandlerCalled(TSession * const abyssSessionP) {
- static void
--processCall(TSession *        const abyssSessionP,
--            size_t            const contentSize,
--            xmlrpc_registry * const registryP,
--            bool              const wantChunk,
--            const char *      const trace) {
-+processCall(TSession *            const abyssSessionP,
-+            size_t                const contentSize,
-+            xmlrpc_call_processor       xmlProcessor,
-+            void *                const xmlProcessorArg,
-+            bool                  const wantChunk,
-+            ResponseAccessCtl     const accessControl,
-+            const char *          const trace) {
- /*----------------------------------------------------------------------------
-    Handle an RPC request.  This is an HTTP request that has the proper form
-    to be an XML-RPC call.
-@@ -469,26 +453,27 @@ processCall(TSession *        const abyssSessionP,
-     if (contentSize > xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID))
-         xmlrpc_env_set_fault_formatted(
-             &env, XMLRPC_LIMIT_EXCEEDED_ERROR,
--            "XML-RPC request too large (%d bytes)", contentSize);
-+            "XML-RPC request too large (%u bytes)", (unsigned)contentSize);
-     else {
-         xmlrpc_mem_block * body = NULL;
-         /* Read XML data off the wire. */
-         getBody(&env, abyssSessionP, contentSize, trace, &body);
-         if (!env.fault_occurred) {
-             xmlrpc_mem_block * output;
-+
-             /* Process the RPC. */
--            xmlrpc_registry_process_call2(
--                &env, registryP,
-+            xmlProcessor(
-+                &env, xmlProcessorArg,
-                 XMLRPC_MEMBLOCK_CONTENTS(char, body),
-                 XMLRPC_MEMBLOCK_SIZE(char, body),
-                 abyssSessionP,
-                 &output);
-             if (!env.fault_occurred) {
-                 /* Send out the result. */
--                sendXmlData(&env, abyssSessionP, 
--                            XMLRPC_MEMBLOCK_CONTENTS(char, output),
--                            XMLRPC_MEMBLOCK_SIZE(char, output),
--                            wantChunk);
-+                sendResponse(&env, abyssSessionP, 
-+                             XMLRPC_MEMBLOCK_CONTENTS(char, output),
-+                             XMLRPC_MEMBLOCK_SIZE(char, output),
-+                             wantChunk, accessControl);
-                 
-                 XMLRPC_MEMBLOCK_FREE(char, output);
-             }
-@@ -510,42 +495,137 @@ processCall(TSession *        const abyssSessionP,
--/****************************************************************************
--    Abyss handlers (to be registered with and called by Abyss)
--****************************************************************************/
-+static void
-+processXmlrpcCall(xmlrpc_env *        const envP,
-+                  void *              const arg,
-+                  const char *        const callXml,
-+                  size_t              const callXmlLen,
-+                  TSession *          const abyssSessionP,                  
-+                  xmlrpc_mem_block ** const responseXmlPP) {
--static const char * trace_abyss;
-+    xmlrpc_registry * const registryP = arg;
-+
-+    xmlrpc_registry_process_call2(envP, registryP,
-+                                  callXml, callXmlLen, abyssSessionP,
-+                                  responseXmlPP);
-+
-+}
-+static const char * trace_abyss;
-+
-+
- struct uriHandlerXmlrpc {
- /*----------------------------------------------------------------------------
-    This is the part of an Abyss HTTP request handler (aka URI handler)
-    that is specific to the Xmlrpc-c handler.
- -----------------------------------------------------------------------------*/
--    xmlrpc_registry * registryP;
--    const char *      uriPath;  /* malloc'ed */
--    bool              chunkResponse;
-+    xmlrpc_registry *       registryP;
-+    const char *            uriPath;  /* malloc'ed */
-+    bool                    chunkResponse;
-         /* The handler should chunk its response whenever possible */
-+    xmlrpc_call_processor * xmlProcessor;
-+    void *                  xmlProcessorArg;
-+    ResponseAccessCtl       accessControl;
- };
- static void
-+termAccessControl(ResponseAccessCtl * const accessCtlP) {
-+
-+    xmlrpc_strfreenull(accessCtlP->allowOrigin);
-+}
-+
-+
-+
-+static void
- termUriHandler(void * const arg) {
-     struct uriHandlerXmlrpc * const uriHandlerXmlrpcP = arg;
-     xmlrpc_strfree(uriHandlerXmlrpcP->uriPath);
-+    termAccessControl(&uriHandlerXmlrpcP->accessControl);
-     free(uriHandlerXmlrpcP);
- }
- static void
--handleXmlrpcReq(URIHandler2 * const this,
--                TSession *    const abyssSessionP,
--                abyss_bool *  const handledP) {
-+handleXmlRpcCallReq(TSession *           const abyssSessionP,
-+                    const TRequestInfo * const requestInfoP ATTR_UNUSED,
-+                    xmlrpc_call_processor      xmlProcessor,
-+                    void *               const xmlProcessorArg,
-+                    bool                 const wantChunk,
-+                    ResponseAccessCtl    const accessControl) {
-+/*----------------------------------------------------------------------------
-+   Handle the HTTP request described by *requestInfoP, which arrived over
-+   Abyss HTTP session *abyssSessionP, which is an XML-RPC call
-+   (i.e. a POST request to /RPC2 or whatever other URI our server is
-+   supposed to handle).
-+
-+   Handle it by feeding the XML which is its content to 'xmlProcessor'
-+   along with argument 'xmlProcessorArg'.
-+-----------------------------------------------------------------------------*/
-+    /* We used to reject the call if content-type was not present and
-+       text/xml, on some security theory (a firewall may block text/xml with
-+       the intent of blocking XML-RPC.  Now, we believe that is silly, and we
-+       have seen an incorrectly implemented client that says text/plain.
-+    */
-+    const char * error;
-+
-+    assert(requestInfoP->method == m_post);
-+
-+    storeCookies(abyssSessionP, &error);
-+    if (error) {
-+        sendError(abyssSessionP, 400, error);
-+        xmlrpc_strfree(error);
-+    } else {
-+        const char * error;
-+        bool missing;
-+        size_t contentSize;
-+
-+        processContentLength(abyssSessionP, 
-+                             &contentSize, &missing, &error);
-+        if (error) {
-+            sendError(abyssSessionP, 400, error);
-+            xmlrpc_strfree(error);
-+        } else {
-+            if (missing)
-+                sendError(abyssSessionP, 411, "You must send a "
-+                          "content-length HTTP header in an "
-+                          "XML-RPC call.");
-+            else
-+                processCall(abyssSessionP, contentSize,
-+                            xmlProcessor, xmlProcessorArg,
-+                            wantChunk, accessControl,
-+                            trace_abyss);
-+        }
-+    }
-+}
-+
-+
-+
-+static void
-+handleXmlRpcOptionsReq(TSession *        const abyssSessionP,
-+                       ResponseAccessCtl const accessControl) {
-+
-+    ResponseAddField(abyssSessionP, "Allow", "POST");
-+    
-+    ResponseAccessControl(abyssSessionP, accessControl);
-+    ResponseContentLength(abyssSessionP, 0);
-+    ResponseStatus(abyssSessionP, 200);
-+    if (ResponseWriteStart(abyssSessionP))
-+              ResponseWriteEnd(abyssSessionP);
-+}
-+
-+
-+
-+static void
-+handleIfXmlrpcReq(void *        const handlerArg,
-+                  TSession *    const abyssSessionP,
-+                  abyss_bool *  const handledP) {
- /*----------------------------------------------------------------------------
-    Our job is to look at this HTTP request that the Abyss server is
-    trying to process and see if we can handle it.  If it's an XML-RPC
-@@ -557,9 +637,9 @@ handleXmlrpcReq(URIHandler2 * const this,
-    Note that failing the request counts as handling it, and not handling
-    it does not mean we failed it.
--   This is an Abyss HTTP Request handler -- type URIHandler2.
-+   This is an Abyss HTTP Request handler -- type handleReqFn3.
- -----------------------------------------------------------------------------*/
--    struct uriHandlerXmlrpc * const uriHandlerXmlrpcP = this->userdata;
-+    struct uriHandlerXmlrpc * const uriHandlerXmlrpcP = handlerArg;
-     const TRequestInfo * requestInfoP;
-@@ -571,54 +651,30 @@ handleXmlrpcReq(URIHandler2 * const this,
-     /* Note that requestInfoP->uri is not the whole URI.  It is just
-        the "file name" part of it.
-     */
--    if (strcmp(requestInfoP->uri, uriHandlerXmlrpcP->uriPath) != 0)
--        /* It's for the path (e.g. "/RPC2") that we're supposed to
-+    if (!xmlrpc_streq(requestInfoP->uri, uriHandlerXmlrpcP->uriPath))
-+        /* It's not for the path (e.g. "/RPC2") that we're supposed to
-            handle.
-         */
-         *handledP = FALSE;
-     else {
-         *handledP = TRUE;
--        if (requestInfoP->method != m_post)
-+        switch (requestInfoP->method) {
-+        case m_post:
-+            handleXmlRpcCallReq(abyssSessionP, requestInfoP,
-+                                uriHandlerXmlrpcP->xmlProcessor,
-+                                uriHandlerXmlrpcP->xmlProcessorArg,
-+                                uriHandlerXmlrpcP->chunkResponse,
-+                                uriHandlerXmlrpcP->accessControl);
-+            break;
-+        case m_options:
-+            handleXmlRpcOptionsReq(abyssSessionP,
-+                                   uriHandlerXmlrpcP->accessControl);
-+            break;
-+        default:
-             sendError(abyssSessionP, 405,
-                       "POST is the only HTTP method this server understands");
-                 /* 405 = Method Not Allowed */
--        else {
--            const char * error;
--            storeCookies(abyssSessionP, &error);
--            if (error) {
--                sendError(abyssSessionP, 400, error);
--                xmlrpc_strfree(error);
--            } else {
--                const char * error;
--                validateContentType(abyssSessionP, &error);
--                if (error) {
--                    sendError(abyssSessionP, 400, error);
--                        /* 400 = Bad Request */
--                    xmlrpc_strfree(error);
--                } else {
--                    const char * error;
--                    bool missing;
--                    size_t contentSize;
--
--                    processContentLength(abyssSessionP, 
--                                         &contentSize, &missing, &error);
--                    if (error) {
--                        sendError(abyssSessionP, 400, error);
--                        xmlrpc_strfree(error);
--                    } else {
--                        if (missing)
--                            sendError(abyssSessionP, 411, "You must send a "
--                                      "content-length HTTP header in an "
--                                      "XML-RPC call.");
--                        else
--                            processCall(abyssSessionP, contentSize,
--                                        uriHandlerXmlrpcP->registryP,
--                                        uriHandlerXmlrpcP->chunkResponse,
--                                        trace_abyss);
--                    }
--                }
--            }
-         }
-     }
-     if (trace_abyss)
-@@ -626,6 +682,10 @@ handleXmlrpcReq(URIHandler2 * const this,
- }
-+/* This doesn't include what the user's method function requires */
-+#define HANDLE_XMLRPC_REQ_STACK 1024
-+
-+
- /*=========================================================================
- **  xmlrpc_server_abyss_default_handler
-@@ -664,35 +724,115 @@ xmlrpc_server_abyss_default_handler(TSession * const sessionP) {
- static void
--setHandler(xmlrpc_env *      const envP,
--           TServer *         const srvP,
--           const char *      const uriPath,
--           xmlrpc_registry * const registryP,
--           bool              const chunkResponse) {
-+setHandler(xmlrpc_env *              const envP,
-+           TServer *                 const srvP,
-+           struct uriHandlerXmlrpc * const uriHandlerXmlrpcP,
-+           size_t                    const xmlProcessorMaxStackSize) {
-     
--    struct uriHandlerXmlrpc * uriHandlerXmlrpcP;
--    URIHandler2 uriHandler;
-     abyss_bool success;
-     trace_abyss = getenv("XMLRPC_TRACE_ABYSS");
-                                  
--    MALLOCVAR_NOFAIL(uriHandlerXmlrpcP);
-+    {
-+        size_t const stackSize = 
-+            HANDLE_XMLRPC_REQ_STACK + xmlProcessorMaxStackSize;
-+        struct ServerReqHandler3 const handlerDesc = {
-+            /* .term               = */ &termUriHandler,
-+            /* .handleReq          = */ &handleIfXmlrpcReq,
-+            /* .userdata           = */ uriHandlerXmlrpcP,
-+            /* .handleReqStackSize = */ stackSize
-+        };
-+        ServerAddHandler3(srvP, &handlerDesc, &success);
-+    }
-+    if (!success)
-+        xmlrpc_faultf(envP, "Abyss failed to register the Xmlrpc-c request "
-+                      "handler.  ServerAddHandler3() failed.");
--    uriHandlerXmlrpcP->registryP     = registryP;
--    uriHandlerXmlrpcP->uriPath       = strdup(uriPath);
--    uriHandlerXmlrpcP->chunkResponse = chunkResponse;
-+    if (envP->fault_occurred){
-+              free((void *)uriHandlerXmlrpcP->uriPath);
-+        free(uriHandlerXmlrpcP);
-+      }
-+}
--    uriHandler.handleReq2 = handleXmlrpcReq;
--    uriHandler.handleReq1 = NULL;
--    uriHandler.userdata   = uriHandlerXmlrpcP;
--    uriHandler.init       = NULL;
--    uriHandler.term       = &termUriHandler;
--    ServerAddHandler2(srvP, &uriHandler, &success);
--    if (!success)
--        xmlrpc_faultf(envP, "Abyss failed to register the Xmlrpc-c request "
--                      "handler.  ServerAddHandler2() failed.");
-+static void
-+interpretHttpAccessControl(
-+    const xmlrpc_server_abyss_handler_parms * const parmsP,
-+    unsigned int                              const parmSize,
-+    ResponseAccessCtl *                       const accessCtlP) {
-+
-+    if (parmSize >= XMLRPC_AHPSIZE(allow_origin) && parmsP->allow_origin)
-+        accessCtlP->allowOrigin = xmlrpc_strdupsol(parmsP->allow_origin);
-+    else
-+        accessCtlP->allowOrigin = NULL;
-+
-+    if (parmSize >= XMLRPC_AHPSIZE(access_ctl_expires)
-+        && parmsP->access_ctl_expires) {
-+        accessCtlP->expires = true;
-+
-+        if (parmSize >= XMLRPC_AHPSIZE(access_ctl_max_age))
-+            accessCtlP->maxAge = parmsP->access_ctl_max_age;
-+        else
-+            accessCtlP->maxAge = 0;
-+    }            
-+}
-+
-+
-+
-+void
-+xmlrpc_server_abyss_set_handler3(
-+    xmlrpc_env *                              const envP,
-+    TServer *                                 const srvP,
-+    const xmlrpc_server_abyss_handler_parms * const parmsP,
-+    unsigned int                              const parmSize) {
-+
-+    struct uriHandlerXmlrpc * uriHandlerXmlrpcP;
-+    size_t xmlProcessorMaxStackSize;
-+
-+    MALLOCVAR_NOFAIL(uriHandlerXmlrpcP);
-+
-+    if (!envP->fault_occurred) {
-+        if (parmSize >= XMLRPC_AHPSIZE(xml_processor))
-+            uriHandlerXmlrpcP->xmlProcessor = parmsP->xml_processor;
-+        else
-+            xmlrpc_faultf(envP, "Parameter too short to contain the required "
-+                          "'xml_processor' member");
-+    }
-+    if (!envP->fault_occurred) {
-+        if (parmSize >= XMLRPC_AHPSIZE(xml_processor_arg))
-+            uriHandlerXmlrpcP->xmlProcessorArg = parmsP->xml_processor_arg;
-+        else
-+            xmlrpc_faultf(envP, "Parameter too short to contain the required "
-+                          "'xml_processor_arg' member");
-+    }
-+    if (!envP->fault_occurred) {
-+        if (parmSize >= XMLRPC_AHPSIZE(xml_processor_max_stack))
-+            xmlProcessorMaxStackSize = parmsP->xml_processor_max_stack;
-+        else
-+            xmlrpc_faultf(envP, "Parameter too short to contain the required "
-+                          "'xml_processor_max_stack' member");
-+    }
-+    if (!envP->fault_occurred) {
-+        if (parmSize >= XMLRPC_AHPSIZE(uri_path) && parmsP->uri_path)
-+            uriHandlerXmlrpcP->uriPath = xmlrpc_strdupsol(parmsP->uri_path);
-+        else
-+            uriHandlerXmlrpcP->uriPath = xmlrpc_strdupsol("/RPC2");
-+
-+        if (parmSize >= XMLRPC_AHPSIZE(chunk_response) &&
-+            parmsP->chunk_response)
-+            uriHandlerXmlrpcP->chunkResponse = parmsP->chunk_response;
-+        else
-+            uriHandlerXmlrpcP->chunkResponse = false;
-+        
-+        interpretHttpAccessControl(parmsP, parmSize,
-+                                   &uriHandlerXmlrpcP->accessControl);
-+
-+        if (envP->fault_occurred)
-+            termAccessControl(&uriHandlerXmlrpcP->accessControl);
-+    }
-+    if (!envP->fault_occurred)
-+        setHandler(envP, srvP, uriHandlerXmlrpcP, xmlProcessorMaxStackSize);
-     if (envP->fault_occurred)
-         free(uriHandlerXmlrpcP);
-@@ -701,36 +841,95 @@ setHandler(xmlrpc_env *      const envP,
- void
-+xmlrpc_server_abyss_set_handler2(
-+    TServer *         const srvP,
-+    const char *      const uriPath,
-+    xmlrpc_call_processor   xmlProcessor,
-+    void *            const xmlProcessorArg,
-+    size_t            const xmlProcessorMaxStackSize,
-+    xmlrpc_bool       const chunkResponse) {
-+
-+    xmlrpc_env env;
-+    xmlrpc_server_abyss_handler_parms parms;
-+
-+    xmlrpc_env_init(&env);
-+
-+    parms.xml_processor = xmlProcessor;
-+    parms.xml_processor_arg = xmlProcessorArg;
-+    parms.xml_processor_max_stack = xmlProcessorMaxStackSize;
-+    parms.uri_path = uriPath;
-+    parms.chunk_response = chunkResponse;
-+
-+    xmlrpc_server_abyss_set_handler3(&env, srvP,
-+                                     &parms, XMLRPC_AHPSIZE(chunk_response));
-+    
-+    if (env.fault_occurred)
-+        abort();
-+
-+    xmlrpc_env_clean(&env);
-+}
-+
-+
-+
-+void
- xmlrpc_server_abyss_set_handler(xmlrpc_env *      const envP,
-                                 TServer *         const srvP,
-                                 const char *      const uriPath,
-                                 xmlrpc_registry * const registryP) {
--    setHandler(envP, srvP, uriPath, registryP, false);
-+    xmlrpc_server_abyss_handler_parms parms;
-+
-+    parms.xml_processor = &processXmlrpcCall;
-+    parms.xml_processor_arg = registryP;
-+    parms.xml_processor_max_stack = xmlrpc_registry_max_stackSize(registryP);
-+    parms.uri_path = uriPath;
-+
-+    xmlrpc_server_abyss_set_handler3(envP, srvP,
-+                                     &parms, XMLRPC_AHPSIZE(uri_path));
- }
-     
-+void
-+xmlrpc_server_abyss_set_default_handler(TServer * const srvP) {
-+
-+    ServerDefaultHandler(srvP, xmlrpc_server_abyss_default_handler);
-+}
-+    
-+
-+
- static void
--setHandlers(TServer *         const srvP,
--            const char *      const uriPath,
--            xmlrpc_registry * const registryP,
--            bool              const chunkResponse) {
-+setHandlersRegistry(TServer *         const srvP,
-+                    const char *      const uriPath,
-+                    xmlrpc_registry * const registryP,
-+                    bool              const chunkResponse,
-+                    const char *      const allowOrigin,
-+                    bool              const expires,
-+                    unsigned int      const maxAge) {
-     xmlrpc_env env;
-+    xmlrpc_server_abyss_handler_parms parms;
-     xmlrpc_env_init(&env);
--    trace_abyss = getenv("XMLRPC_TRACE_ABYSS");
--                                 
--    setHandler(&env, srvP, uriPath, registryP, chunkResponse);
-+    parms.xml_processor = &processXmlrpcCall;
-+    parms.xml_processor_arg = registryP;
-+    parms.xml_processor_max_stack = xmlrpc_registry_max_stackSize(registryP),
-+    parms.uri_path = uriPath;
-+    parms.chunk_response = chunkResponse;
-+    parms.allow_origin = allowOrigin;
-+    parms.access_ctl_expires = expires;
-+    parms.access_ctl_max_age = maxAge;
-+
-+    xmlrpc_server_abyss_set_handler3(
-+        &env, srvP, &parms, XMLRPC_AHPSIZE(access_ctl_max_age));
-     
-     if (env.fault_occurred)
-         abort();
--    ServerDefaultHandler(srvP, xmlrpc_server_abyss_default_handler);
--
-     xmlrpc_env_clean(&env);
-+
-+    xmlrpc_server_abyss_set_default_handler(srvP);
- }
-@@ -740,7 +939,7 @@ xmlrpc_server_abyss_set_handlers2(TServer *         const srvP,
-                                   const char *      const uriPath,
-                                   xmlrpc_registry * const registryP) {
--    setHandlers(srvP, uriPath, registryP, false);
-+    setHandlersRegistry(srvP, uriPath, registryP, false, NULL, false, 0);
- }
-@@ -749,7 +948,7 @@ void
- xmlrpc_server_abyss_set_handlers(TServer *         const srvP,
-                                  xmlrpc_registry * const registryP) {
--    setHandlers(srvP, "/RPC2", registryP, false);
-+    setHandlersRegistry(srvP, "/RPC2", registryP, false, NULL, false, 0);
- }
-@@ -763,11 +962,6 @@ setAdditionalServerParms(const xmlrpc_server_abyss_parms * const parmsP,
-                          unsigned int                      const parmSize,
-                          TServer *                         const serverP) {
--    /* The following ought to be parameters on ServerCreate(), but it
--       looks like plugging them straight into the TServer structure is
--       the only way to set them.  
--    */
--
-     if (parmSize >= XMLRPC_APSIZE(keepalive_timeout) &&
-         parmsP->keepalive_timeout > 0)
-         ServerSetKeepaliveTimeout(serverP, parmsP->keepalive_timeout);
-@@ -903,8 +1097,13 @@ createServerBare(xmlrpc_env *                      const envP,
-             createServerBoundSocket(envP, socketFd, logFileName,
-                                     serverP, chanSwitchPP);
-         else {
--            ServerCreate(serverP, "XmlRpcServer", portNumber, DEFAULT_DOCS, 
--                         logFileName);
-+            abyss_bool success;
-+
-+            success = ServerCreate(serverP, "XmlRpcServer", portNumber,
-+                                   DEFAULT_DOCS, logFileName);
-+
-+            if (!success)
-+                xmlrpc_faultf(envP, "Failed to create an Abyss server object");
-             
-             *chanSwitchPP = NULL;
-         }
-@@ -915,6 +1114,22 @@ createServerBare(xmlrpc_env *                      const envP,
-+static const char *
-+uriPathParm(const xmlrpc_server_abyss_parms * const parmsP,
-+            unsigned int                      const parmSize) {
-+    
-+    const char * uriPath;
-+
-+    if (parmSize >= XMLRPC_APSIZE(uri_path) && parmsP->uri_path)
-+        uriPath = parmsP->uri_path;
-+    else
-+        uriPath = "/RPC2";
-+
-+    return uriPath;
-+}
-+
-+
-+
- static bool
- chunkResponseParm(const xmlrpc_server_abyss_parms * const parmsP,
-                   unsigned int                      const parmSize) {
-@@ -927,18 +1142,35 @@ chunkResponseParm(const xmlrpc_server_abyss_parms * const parmsP,
- static const char *
--uriPathParm(const xmlrpc_server_abyss_parms * const parmsP,
-+allowOriginParm(const xmlrpc_server_abyss_parms * const parmsP,
-+                unsigned int                      const parmSize) {
-+
-+    return
-+        parmSize >= XMLRPC_APSIZE(allow_origin) ?
-+        parmsP->allow_origin : NULL;
-+}    
-+
-+
-+
-+static bool
-+expiresParm(const xmlrpc_server_abyss_parms * const parmsP,
-             unsigned int                      const parmSize) {
--    
--    const char * uriPath;
--    if (parmSize >= XMLRPC_APSIZE(uri_path) && parmsP->uri_path)
--        uriPath = parmsP->uri_path;
--    else
--        uriPath = "/RPC2";
-+    return
-+        parmSize >= XMLRPC_APSIZE(access_ctl_expires) ?
-+        parmsP->access_ctl_expires : false;
-+}    
--    return uriPath;
--}
-+
-+
-+static unsigned int
-+maxAgeParm(const xmlrpc_server_abyss_parms * const parmsP,
-+           unsigned int                      const parmSize) {
-+
-+    return
-+        parmSize >= XMLRPC_APSIZE(access_ctl_max_age) ?
-+        parmsP->access_ctl_max_age : 0;
-+}    
-@@ -954,9 +1186,12 @@ createServer(xmlrpc_env *                      const envP,
-     if (!envP->fault_occurred) {
-         setAdditionalServerParms(parmsP, parmSize, abyssServerP);
-         
--        setHandlers(abyssServerP, uriPathParm(parmsP, parmSize),
--                    parmsP->registryP,
--                    chunkResponseParm(parmsP, parmSize));
-+        setHandlersRegistry(abyssServerP, uriPathParm(parmsP, parmSize),
-+                            parmsP->registryP,
-+                            chunkResponseParm(parmsP, parmSize),
-+                            allowOriginParm(parmsP, parmSize),
-+                            expiresParm(parmsP, parmSize),
-+                            maxAgeParm(parmsP, parmSize));
-         
-         ServerInit(abyssServerP);
-     }
-@@ -1030,9 +1265,9 @@ xmlrpc_server_abyss_create(xmlrpc_env *                      const envP,
-             xmlrpc_faultf(envP,
-                           "You must specify members at least up through "
-                           "'registryP' in the server parameters argument.  "
--                          "That would mean the parameter size would be >= %lu "
-+                          "That would mean the parameter size would be >= %u "
-                           "but you specified a size of %u",
--                          XMLRPC_APSIZE(registryP), parmSize);
-+                          (unsigned)XMLRPC_APSIZE(registryP), parmSize);
-         else {
-             MALLOCVAR(serverP);
-@@ -1123,9 +1358,11 @@ sigchld(int const signalClass ATTR_UNUSED) {
-    The only child processes we have are those that belong to the Abyss
-    server (and then only if the Abyss server was configured to use
-    forking as a threading mechanism), so we respond by passing the
--   signal on to the Abyss server.
-+   signal on to the Abyss server.  And reaping the dead child.
- -----------------------------------------------------------------------------*/
- #ifndef WIN32
-+    /* Reap zombie children / report to Abyss until there aren't any more. */
-+
-     bool childrenLeft;
-     bool error;
-@@ -1270,7 +1507,7 @@ runServerDaemon(TServer *  const serverP,
- static void
--oldHighLevelAbyssRun(xmlrpc_env *                      const envP ATTR_UNUSED,
-+oldHighLevelAbyssRun(xmlrpc_env *                      const envP,
-                      const xmlrpc_server_abyss_parms * const parmsP,
-                      unsigned int                      const parmSize) {
- /*----------------------------------------------------------------------------
-@@ -1285,31 +1522,38 @@ oldHighLevelAbyssRun(xmlrpc_env *                      const envP ATTR_UNUSED,
-    flexible API.
- -----------------------------------------------------------------------------*/
-     TServer server;
--    runfirstFn runfirst;
--    void * runfirstArg;
--    
--    ServerCreate(&server, "XmlRpcServer", 8080, DEFAULT_DOCS, NULL);
-+    abyss_bool success;
--    assert(parmSize >= XMLRPC_APSIZE(config_file_name));
-+    success = ServerCreate(&server, "XmlRpcServer", 8080, DEFAULT_DOCS, NULL);
-+
-+    if (!success)
-+        xmlrpc_faultf(envP, "Failed to create Abyss server object");
-+    else {
-+        runfirstFn runfirst;
-+        void * runfirstArg;
-+
-+        assert(parmSize >= XMLRPC_APSIZE(config_file_name));
-     
--    ConfReadServerFile(parmsP->config_file_name, &server);
-+        ConfReadServerFile(parmsP->config_file_name, &server);
-         
--    assert(parmSize >= XMLRPC_APSIZE(registryP));
-+        assert(parmSize >= XMLRPC_APSIZE(registryP));
-     
--    setHandlers(&server, "/RPC2", parmsP->registryP, false);
-+        setHandlersRegistry(&server, "/RPC2", parmsP->registryP, false, NULL,
-+                            false, 0);
-         
--    ServerInit(&server);
-+        ServerInit(&server);
-     
--    if (parmSize >= XMLRPC_APSIZE(runfirst_arg)) {
--        runfirst    = parmsP->runfirst;
--        runfirstArg = parmsP->runfirst_arg;
--    } else {
--        runfirst    = NULL;
--        runfirstArg = NULL;
--    }
--    runServerDaemon(&server, runfirst, runfirstArg);
-+        if (parmSize >= XMLRPC_APSIZE(runfirst_arg)) {
-+            runfirst    = parmsP->runfirst;
-+            runfirstArg = parmsP->runfirst_arg;
-+        } else {
-+            runfirst    = NULL;
-+            runfirstArg = NULL;
-+        }
-+        runServerDaemon(&server, runfirst, runfirstArg);
--    ServerFree(&server);
-+        ServerFree(&server);
-+    }
- }
-@@ -1351,7 +1595,7 @@ xmlrpc_server_abyss(xmlrpc_env *                      const envP,
-    a thread of a multi-threaded program, use
-    xmlrpc_server_abyss_create() instead.  As required by that
-    subroutine, your program will contain a call to
--   xmlrpc_server_abyss_init() early in your program, when it is only
-+   xmlrpc_server_abyss_global_init() early in your program, when it is only
-    one thread.
- -----------------------------------------------------------------------------*/
-     XMLRPC_ASSERT_ENV_OK(envP);
-@@ -1363,9 +1607,9 @@ xmlrpc_server_abyss(xmlrpc_env *                      const envP,
-             xmlrpc_faultf(envP,
-                           "You must specify members at least up through "
-                           "'registryP' in the server parameters argument.  "
--                          "That would mean the parameter size would be >= %lu "
-+                          "That would mean the parameter size would be >= %u "
-                           "but you specified a size of %u",
--                          XMLRPC_APSIZE(registryP), parmSize);
-+                          (unsigned)XMLRPC_APSIZE(registryP), parmSize);
-         else {
-             if (parmsP->config_file_name)
-                 oldHighLevelAbyssRun(envP, parmsP, parmSize);
-@@ -1416,10 +1660,11 @@ xmlrpc_server_abyss_init_registry(void) {
-     xmlrpc_env_init(&env);
-     builtin_registryP = xmlrpc_registry_new(&env);
--    die_if_fault_occurred(&env);
-+    dieIfFaultOccurred(&env);
-     xmlrpc_env_clean(&env);
--    setHandlers(&globalSrv, "/RPC2", builtin_registryP, false);
-+    setHandlersRegistry(&globalSrv, "/RPC2", builtin_registryP, false, NULL,
-+                        false, 0);
- }
-@@ -1446,7 +1691,7 @@ xmlrpc_server_abyss_add_method(char *        const method_name,
-     xmlrpc_env_init(&env);
-     xmlrpc_registry_add_method(&env, builtin_registryP, NULL, method_name,
-                                method, user_data);
--    die_if_fault_occurred(&env);
-+    dieIfFaultOccurred(&env);
-     xmlrpc_env_clean(&env);
- }
-@@ -1464,7 +1709,7 @@ xmlrpc_server_abyss_add_method_w_doc(char *        const method_name,
-     xmlrpc_registry_add_method_w_doc(
-         &env, builtin_registryP, NULL, method_name,
-         method, user_data, signature, help);
--    die_if_fault_occurred(&env);
-+    dieIfFaultOccurred(&env);
-     xmlrpc_env_clean(&env);    
- }
-@@ -1474,16 +1719,23 @@ void
- xmlrpc_server_abyss_init(int          const flags ATTR_UNUSED, 
-                          const char * const config_file) {
--    ServerCreate(&globalSrv, "XmlRpcServer", 8080, DEFAULT_DOCS, NULL);
--    
--    ConfReadServerFile(config_file, &globalSrv);
-+    abyss_bool success;
--    xmlrpc_server_abyss_init_registry();
--        /* Installs /RPC2 handler and default handler that use the
--           built-in registry.
--        */
-+    success = ServerCreate(&globalSrv, "XmlRpcServer", 8080,
-+                           DEFAULT_DOCS, NULL);
--    ServerInit(&globalSrv);
-+    if (!success)
-+        abort();
-+    else {
-+        ConfReadServerFile(config_file, &globalSrv);
-+
-+        xmlrpc_server_abyss_init_registry();
-+            /* Installs /RPC2 handler and default handler that use the
-+               built-in registry.
-+            */
-+
-+        ServerInit(&globalSrv);
-+    }
- }
-diff --git a/libs/xmlrpc-c/src/xmlrpc_server_cgi.c b/libs/xmlrpc-c/src/xmlrpc_server_cgi.c
-index 2f6fe73..f8ab73a 100644
---- a/libs/xmlrpc-c/src/xmlrpc_server_cgi.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_server_cgi.c
-@@ -38,6 +38,7 @@
- #include "xmlrpc-c/base.h"
- #include "xmlrpc-c/server.h"
-+#include "xmlrpc-c/string_int.h"
- #include "xmlrpc-c/server_cgi.h"
-@@ -202,13 +203,19 @@ xmlrpc_server_cgi_process_call(xmlrpc_registry * const registryP) {
-     length_str = getenv("CONTENT_LENGTH");
-     /* Perform some sanity checks. */
--    if (!method || 0 != strcmp(method, "POST")) {
-+    if (!method || !xmlrpc_streq(method, "POST")) {
-         code = 405; message = "Method Not Allowed";
-         XMLRPC_FAIL(&env, XMLRPC_INTERNAL_ERROR, "Expected HTTP method POST");
-     }
--    if (!type || 0 != strcmp(type, "text/xml")) {
-+    if (!type || !xmlrpc_strneq(type, "text/xml", strlen("text/xml"))) {
-+      char *template = "Expected content type: \"text/xml\", received: \"%s\"";
-+      size_t err_len = strlen(template) + strlen(type) + 1;
-+      char *err = malloc(err_len);
-+
-+      (void)snprintf(err, err_len, template, type);
-         code = 400; message = "Bad Request";
--        XMLRPC_FAIL(&env, XMLRPC_INTERNAL_ERROR, "Expected text/xml content");
-+        XMLRPC_FAIL(&env, XMLRPC_INTERNAL_ERROR, err);
-+      free(err);
-     }
-     if (!length_str) {
-         code = 411; message = "Length Required";
-diff --git a/libs/xmlrpc-c/src/xmlrpc_server_info.c b/libs/xmlrpc-c/src/xmlrpc_server_info.c
-index 5cf44c3..2e06c02 100644
---- a/libs/xmlrpc-c/src/xmlrpc_server_info.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_server_info.c
-@@ -16,6 +16,10 @@
-   transports.
- =============================================================================*/
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
-+
-+#include <string.h>
-+
- #include "bool.h"
- #include "mallocvar.h"
-@@ -229,6 +233,9 @@ xmlrpc_server_info_set_user(xmlrpc_env *         const envP,
-         }
-         XMLRPC_MEMBLOCK_FREE(char, userNamePw64);
-     }
-+    if (serverInfoP->userNamePw)
-+        xmlrpc_strfree(serverInfoP->userNamePw);
-+
-     serverInfoP->userNamePw = userNamePw;
- }
-diff --git a/libs/xmlrpc-c/src/xmlrpc_server_w32httpsys.c b/libs/xmlrpc-c/src/xmlrpc_server_w32httpsys.c
-index cf0dad8..ce1587d 100644
---- a/libs/xmlrpc-c/src/xmlrpc_server_w32httpsys.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_server_w32httpsys.c
-@@ -1,14 +1,15 @@
- /* Copyright information is at end of file. */
-+
- /* COMPILATION NOTE:
--   Note that the Platform SDK headers and
--   link libraries for Windows XP SP2 or newer are required to compile
--   xmlrpc-c for this module.  If you are not using this server, it is 
--   safe to exclude the xmlrpc_server_w32httpsys.c file from the xmlrpc
--   project and these dependencies will not be required.  You can get the 
--   latest platform SDK at 
--   http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
--   Be sure after installation to choose the program to "register the PSDK
--   directories with Visual Studio" so the newer headers are found.
-+
-+   Note that the Platform SDK headers and link libraries for Windows XP SP2 or
-+   newer are required to compile Xmlrpc-c for this module.  If you are not
-+   using this XML-RPC server program, it is safe to exclude the
-+   xmlrpc_server_w32httpsys.c file from the xmlrpc project and you will not
-+   have this dependency.  You can get the latest platform SDK at
-+   http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ Be sure after
-+   installation to choose the program to "register the PSDK directories with
-+   Visual Studio" so the newer headers are found.
- */
- #ifndef UNICODE
-@@ -19,7 +20,18 @@
- #define _UNICODE
- #endif
--/* See compilation note above if this header is not found! */
-+/* Declare that we require the Windows XP SP2 or better version of the
-+   interface to Windows.
-+
-+   Microsoft recommends
-+   (http://msdn.microsoft.com/en-us/library/aa383745(VS.85).aspx) defining
-+   NTDDI_VERSION instead of _WIN32_WINNT for this purpose, but as it was
-+   invented recently, it's pretty useless.  Windows header files from old
-+   Windows SDKs won't know what to do with it.
-+*/
-+#define _WIN32_WINNT 0x0502
-+
-+/* See compilation note above if the compiler doesn't find this header file */
- #include <http.h>
- #include <strsafe.h>
-@@ -665,7 +677,8 @@ SendHttpResponse(
-     ADD_KNOWN_HEADER(response, HttpHeaderContentType, "text/html");
-     
--    StringCchPrintfA(szServerHeader,20, "xmlrpc-c %s",XMLRPC_C_VERSION);
-+    StringCchPrintfA(szServerHeader, sizeof(szServerHeader), "Xmlrpc-c/%s",
-+                     XMLRPC_C_VERSION);
-     ADD_KNOWN_HEADER(response, HttpHeaderServer, szServerHeader);
-    
-     if(pEntityString)
-@@ -724,7 +737,8 @@ SendHttpResponseAuthRequired(
-     ADD_KNOWN_HEADER(response, HttpHeaderWwwAuthenticate,
-                      "Basic realm=\"xmlrpc\"");
-     
--    StringCchPrintfA(szServerHeader,20, "xmlrpc-c %s",XMLRPC_C_VERSION);
-+    StringCchPrintfA(szServerHeader, sizeof(szServerHeader), "Xmlrpc-c/%s",
-+                     XMLRPC_C_VERSION);
-     ADD_KNOWN_HEADER(response, HttpHeaderServer, szServerHeader);
-    
-     // Since we are sending all the entity body in one call, we don't have 
-@@ -878,8 +892,8 @@ processRPCCall(
-                     ADD_KNOWN_HEADER(response, HttpHeaderContentType,
-                                      "text/xml");
-                     
--                    StringCchPrintfA(szServerHeader,20,
--                                     "xmlrpc-c %s",XMLRPC_C_VERSION);
-+                    StringCchPrintfA(szServerHeader, sizeof(szServerHeader),
-+                                     "Xmlrpc-c/%s", XMLRPC_C_VERSION);
-                     ADD_KNOWN_HEADER(response, HttpHeaderServer,
-                                      szServerHeader);
-diff --git a/libs/xmlrpc-c/src/xmlrpc_string.c b/libs/xmlrpc-c/src/xmlrpc_string.c
-index 8bf299d..ac9a1f5 100644
---- a/libs/xmlrpc-c/src/xmlrpc_string.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_string.c
-@@ -100,11 +100,11 @@ accessStringValue(xmlrpc_env *         const envP,
-     
-     validateStringType(envP, valueP);
-     if (!envP->fault_occurred) {
--        unsigned int const size = 
-+        size_t const size = 
-             XMLRPC_MEMBLOCK_SIZE(char, &valueP->_block);
-         const char * const contents = 
-             XMLRPC_MEMBLOCK_CONTENTS(char, &valueP->_block);
--        unsigned int const len = size - 1;
-+        size_t const len = size - 1;
-             /* The memblock has a null character added to the end */
-         verifyNoNulls(envP, contents, len);
-@@ -141,7 +141,7 @@ xmlrpc_read_string(xmlrpc_env *         const envP,
-         MALLOCARRAY(stringValue, length + 1);
-         if (stringValue == NULL)
-             xmlrpc_faultf(envP, "Unable to allocate space "
--                          "for %u-character string", length);
-+                          "for %u-character string", (unsigned)length);
-         else {
-             memcpy(stringValue, contents, length);
-             stringValue[length] = '\0';
-@@ -189,7 +189,7 @@ copyAndConvertLfToCrlf(xmlrpc_env *  const envP,
-     MALLOCARRAY(dst, dstLen + 1);
-     if (dst == NULL)
-         xmlrpc_faultf(envP, "Unable to allocate space "
--                      "for %u-character string", dstLen + 1);
-+                      "for %u-character string", (unsigned)dstLen + 1);
-     else {
-         const char * p;  /* source pointer */
-         char * q;        /* destination pointer */
-@@ -253,7 +253,7 @@ xmlrpc_read_string_lp(xmlrpc_env *         const envP,
-     validateStringType(envP, valueP);
-     if (!envP->fault_occurred) {
--        unsigned int const size = 
-+        size_t const size = 
-             XMLRPC_MEMBLOCK_SIZE(char, &valueP->_block);
-         const char * const contents = 
-             XMLRPC_MEMBLOCK_CONTENTS(char, &valueP->_block);
-@@ -263,7 +263,7 @@ xmlrpc_read_string_lp(xmlrpc_env *         const envP,
-         stringValue = malloc(size);
-         if (stringValue == NULL)
-             xmlrpc_faultf(envP, "Unable to allocate %u bytes for string.",
--                          size);
-+                          (unsigned int)size);
-         else {
-             memcpy(stringValue, contents, size);
-             *stringValueP = stringValue;
-@@ -282,7 +282,7 @@ xmlrpc_read_string_lp_crlf(xmlrpc_env *         const envP,
-     validateStringType(envP, valueP);
-     if (!envP->fault_occurred) {
--        unsigned int const size = 
-+        size_t const size = 
-             XMLRPC_MEMBLOCK_SIZE(char, &valueP->_block); /* Includes NUL */
-         const char * const contents = 
-             XMLRPC_MEMBLOCK_CONTENTS(char, &valueP->_block);
-@@ -371,7 +371,7 @@ xmlrpc_read_string_w(xmlrpc_env *     const envP,
-         MALLOCARRAY(stringValue, length + 1);
-         if (stringValue == NULL)
-             xmlrpc_faultf(envP, "Unable to allocate space for %u-byte string", 
--                          length);
-+                          (unsigned)length);
-         else {
-             memcpy(stringValue, wcontents, length * sizeof(wchar_t));
-             stringValue[length] = '\0';
-@@ -422,7 +422,7 @@ wCopyAndConvertLfToCrlf(xmlrpc_env *     const envP,
-     MALLOCARRAY(dst, dstLen + 1);
-     if (dst == NULL)
-         xmlrpc_faultf(envP, "Unable to allocate space "
--                      "for %u-character string", dstLen + 1);
-+                      "for %u-character string", (unsigned)dstLen + 1);
-     else {
-         const wchar_t * p;  /* source pointer */
-         wchar_t * q;        /* destination pointer */
-@@ -561,18 +561,6 @@ xmlrpc_read_string_w_lp_old(xmlrpc_env *     const envP,
- static void
--validateUtf(xmlrpc_env * const envP,
--            const char * const value,
--            size_t       const length) {
--
--#if HAVE_UNICODE_WCHAR
--    xmlrpc_validate_utf8(envP, value, length);
--#endif
--}
--
--
--
--static void
- copyLines(xmlrpc_env *       const envP,
-           const char *       const src,
-           size_t             const srcLen,
-@@ -685,7 +673,7 @@ stringNew(xmlrpc_env *     const envP,
-     xmlrpc_value * valP;
--    validateUtf(envP, value, length);
-+    xmlrpc_validate_utf8(envP, value, length);
-     if (!envP->fault_occurred) {
-         xmlrpc_createXmlrpcValue(envP, &valP);
-@@ -762,7 +750,7 @@ xmlrpc_string_new_va(xmlrpc_env * const envP,
-     
-     xmlrpc_vasprintf(&formattedString, format, args);
--    if (formattedString == xmlrpc_strsol) {
-+    if (xmlrpc_strnomem(formattedString)) {
-         xmlrpc_faultf(envP, "Out of memory building formatted string");
-         retvalP = NULL;  /* defeat compiler warning */
-     } else
-diff --git a/libs/xmlrpc-c/src/xmlrpc_struct.c b/libs/xmlrpc-c/src/xmlrpc_struct.c
-index 40c59bb..0fde37b 100644
---- a/libs/xmlrpc-c/src/xmlrpc_struct.c
-+++ b/libs/xmlrpc-c/src/xmlrpc_struct.c
-@@ -1,30 +1,6 @@
--/* Copyright (C) 2001 by First Peer, Inc. 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. The name of the author may not be used to endorse or promote products
--**    derived from this software without specific prior written permission. 
--**  
--** THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 "xmlrpc_config.h"
-+#include <assert.h>
- #include <stddef.h>
- #include <stdlib.h>
- #include <string.h>
-@@ -95,22 +71,28 @@ xmlrpc_struct_new(xmlrpc_env * const envP) {
- */
- int 
--xmlrpc_struct_size(xmlrpc_env* env, xmlrpc_value* strct)
--{
-+xmlrpc_struct_size(xmlrpc_env *   const envP,
-+                   xmlrpc_value * const structP) {
-+
-     int retval;
--    /* Suppress a compiler warning about uninitialized variables. */
--    retval = 0;
-+    XMLRPC_ASSERT_ENV_OK(envP);
-+    XMLRPC_ASSERT_VALUE_OK(structP);
--    XMLRPC_ASSERT_ENV_OK(env);
--    XMLRPC_ASSERT_VALUE_OK(strct);
-+    if (structP->_type != XMLRPC_TYPE_STRUCT) {
-+        xmlrpc_env_set_fault_formatted(
-+            envP, XMLRPC_TYPE_ERROR, "Value is not a struct.  It is type #%d",
-+            structP->_type);
-+        retval = -1;
-+    } else {
-+        size_t const size =
-+            XMLRPC_MEMBLOCK_SIZE(_struct_member, &structP->_block);
--    XMLRPC_TYPE_CHECK(env, strct, XMLRPC_TYPE_STRUCT);
--    retval = XMLRPC_MEMBLOCK_SIZE(_struct_member, &strct->_block);
-+        assert((size_t)(int)size == size);
-+            /* Because structs are defined to have few enough members */
-- cleanup:
--    if (env->fault_occurred)
--        return -1;
-+        retval = (int)size;
-+    }
-     return retval;
- }
-@@ -149,30 +131,42 @@ find_member(xmlrpc_value * const strctP,
-             const char *   const key, 
-             size_t         const keyLen) {
-+    int retval;
-     size_t size, i;
-     uint32_t searchHash;
-     _struct_member * contents;  /* array */
--    xmlrpc_value * keyvalP;
--    const char * keystr;
--    size_t keystrSize;
-+    bool found;
-+    size_t foundIndex;  /* Meaningful only when 'found' is true */
-     XMLRPC_ASSERT_VALUE_OK(strctP);
-     XMLRPC_ASSERT(key != NULL);
-+    foundIndex = 0;  /* defeat used-before-set compiler warning */
-     /* Look for our key. */
-     searchHash = hashStructKey(key, keyLen);
-     size = XMLRPC_MEMBLOCK_SIZE(_struct_member, &strctP->_block);
-     contents = XMLRPC_MEMBLOCK_CONTENTS(_struct_member, &strctP->_block);
--    for (i = 0; i < size; ++i) {
-+    for (i = 0, found = false; i < size && !found; ++i) {
-         if (contents[i].keyHash == searchHash) {
--            keyvalP = contents[i].key;
--            keystr = XMLRPC_MEMBLOCK_CONTENTS(char, &keyvalP->_block);
--            keystrSize = XMLRPC_MEMBLOCK_SIZE(char, &keyvalP->_block)-1;
--            if (keystrSize == keyLen && memcmp(key, keystr, keyLen) == 0)
--                return i;
-+            xmlrpc_value * const keyvalP = contents[i].key;
-+            const char * const keystr =
-+                XMLRPC_MEMBLOCK_CONTENTS(char, &keyvalP->_block);
-+            size_t const keystrSize =
-+                XMLRPC_MEMBLOCK_SIZE(char, &keyvalP->_block)-1;
-+            if (keystrSize == keyLen && memcmp(key, keystr, keyLen) == 0) {
-+                found = true;
-+                foundIndex = i;
-+            }
-         }   
-     }
--    return -1;
-+    if (found) {
-+        assert((size_t)(int)foundIndex == foundIndex);
-+            /* Definition of structure says it has few enough members */
-+        retval = foundIndex;
-+    } else
-+        retval = -1;
-+
-+    return retval;
- }
-@@ -588,3 +582,31 @@ xmlrpc_struct_get_key_and_value(xmlrpc_env *    const envP,
-         *valueP = NULL;
-     }
- }
-+
-+
-+
-+/* Copyright (C) 2001 by First Peer, Inc. 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. The name of the author may not be used to endorse or promote products
-+**    derived from this software without specific prior written permission. 
-+**  
-+** THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. */
-+
-diff --git a/libs/xmlrpc-c/src/xmlrpc_strutil.c b/libs/xmlrpc-c/src/xmlrpc_strutil.c
-deleted file mode 100644
-index efbdca5..0000000
---- a/libs/xmlrpc-c/src/xmlrpc_strutil.c
-+++ /dev/null
-@@ -1,75 +0,0 @@
--#include <string.h>
--#include <stdio.h>
--#include <stdlib.h>
--#include <ctype.h>
--
--#include "xmlrpc_config.h"
--#include "xmlrpc-c/base.h"
--#include "xmlrpc-c/base_int.h"
--
--
--
--const char * 
--xmlrpc_makePrintable(const char * const input) {
--/*----------------------------------------------------------------------------
--   Convert an arbitrary string of bytes (null-terminated, though) to
--   printable ASCII.  E.g. convert newlines to "\n".
--
--   Return the result in newly malloc'ed storage.  Return NULL if we can't
--   get the storage.
-------------------------------------------------------------------------------*/
--    char * output;
--    const unsigned int inputLength = strlen(input);
--
--    output = malloc(inputLength*4+1);
--
--    if (output != NULL) {
--        unsigned int inputCursor, outputCursor;
--
--        for (inputCursor = 0, outputCursor = 0; 
--             inputCursor < inputLength; 
--             ++inputCursor) {
--
--            if (isprint(input[inputCursor]))
--                output[outputCursor++] = input[inputCursor]; 
--            else if (input[inputCursor] == '\n') {
--                output[outputCursor++] = '\\';
--                output[outputCursor++] = 'n';
--            } else if (input[inputCursor] == '\t') {
--                output[outputCursor++] = '\\';
--                output[outputCursor++] = 't';
--            } else if (input[inputCursor] == '\a') {
--                output[outputCursor++] = '\\';
--                output[outputCursor++] = 'a';
--            } else if (input[inputCursor] == '\r') {
--                output[outputCursor++] = '\\';
--                output[outputCursor++] = 'r';
--            } else {
--                snprintf(&output[outputCursor], 4, "\\x%02x", 
--                         input[inputCursor]);
--            }
--        }
--        output[outputCursor++] = '\0';
--    }
--    return output;
--}
--
--
--
--const char *
--xmlrpc_makePrintableChar(char const input) {
--
--    const char * retval;
--
--    if (input == '\0')
--        retval = strdup("\\0");
--    else {
--        char buffer[2];
--        
--        buffer[0] = input;
--        buffer[1] = '\0';
--        
--        retval = xmlrpc_makePrintable(buffer);
--    }
--    return retval;
--}
-diff --git a/libs/xmlrpc-c/src/xmlrpc_support.c b/libs/xmlrpc-c/src/xmlrpc_support.c
-deleted file mode 100644
-index c2fd1b6..0000000
---- a/libs/xmlrpc-c/src/xmlrpc_support.c
-+++ /dev/null
-@@ -1,394 +0,0 @@
--/* Copyright (C) 2001 by First Peer, Inc. 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. The name of the author may not be used to endorse or promote products
--**    derived from this software without specific prior written permission. 
--**  
--** THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 "xmlrpc_config.h"
--
--#include <stdlib.h>
--#include <stdio.h>
--#include <string.h>
--#include <ctype.h>
--
--#include "xmlrpc-c/base.h"
--#include "xmlrpc-c/base_int.h"
--
--#ifdef EFENCE
--        /* when looking for corruption don't allocate extra slop */
--#define BLOCK_ALLOC_MIN (1)
--#else
--#define BLOCK_ALLOC_MIN (16)
--#endif
--#define BLOCK_ALLOC_MAX (128 * 1024 * 1024)
--
--#define ERROR_BUFFER_SZ (256)
--
--
--/*=========================================================================
--**  Strings
--**=======================================================================*/
--
--void
--xmlrpc_strfree(const char * const string) {
--    free((void*)string);
--}
--
--
--/*=========================================================================
--**  Assertions and Error Handling
--**=========================================================================
--**  Support code for XMLRPC_ASSERT and xmlrpc_env.
--*/ 
--
--void xmlrpc_assertion_failed (char* file, int line)
--{
--    fprintf(stderr, "%s:%d: assertion failed\n", file, line);
--    abort();
--}
--
--static char* default_fault_string = "Not enough memory for error message";
--
--void xmlrpc_env_init (xmlrpc_env* env)
--{
--    XMLRPC_ASSERT(env != NULL);
--
--    env->fault_occurred = 0;
--    env->fault_code     = 0;
--    env->fault_string   = NULL;
--}
--
--void xmlrpc_env_clean (xmlrpc_env* env)
--{
--    XMLRPC_ASSERT(env != NULL);
--
--    /* env->fault_string may be one of three things:
--    **   1) a NULL pointer
--    **   2) a pointer to the default_fault_string
--    **   3) a pointer to a malloc'd fault string
--    ** If we have case (3), we'll need to free it. */
--    if (env->fault_string && env->fault_string != default_fault_string)
--        free(env->fault_string);
--    env->fault_string = XMLRPC_BAD_POINTER;
--}
--
--
--
--void 
--xmlrpc_env_set_fault(xmlrpc_env * const env, 
--                     int          const faultCode, 
--                     const char * const faultDescription) {
--
--    XMLRPC_ASSERT(env != NULL); 
--    XMLRPC_ASSERT(faultDescription != NULL);
--
--    /* Clean up any leftover pointers. */
--    xmlrpc_env_clean(env);
--
--    env->fault_occurred = 1;
--    env->fault_code     = faultCode;
--
--    /* Try to copy the fault string. If this fails, use a default. */
--    env->fault_string = (char*) malloc(strlen(faultDescription) + 1);
--    if (env->fault_string)
--        strcpy(env->fault_string, faultDescription);
--    else
--        env->fault_string = default_fault_string;
--}
--
--
--
--static void
--set_fault_formatted_v(xmlrpc_env * const envP,
--                      int          const code,
--                      const char * const format,
--                      va_list      const args) {
--
--    char buffer[ERROR_BUFFER_SZ];
--
--    vsnprintf(buffer, ERROR_BUFFER_SZ, format, args);
--
--    /* vsnprintf is guaranteed to terminate the buffer, but we're paranoid. */
--    buffer[ERROR_BUFFER_SZ - 1] = '\0';
--
--    /* Set the fault. */
--    xmlrpc_env_set_fault(envP, code, buffer);
--}
--
--
--
--void 
--xmlrpc_env_set_fault_formatted(xmlrpc_env * const envP, 
--                               int          const code,
--                               const char * const format, 
--                               ...) {
--    va_list args;
--
--    XMLRPC_ASSERT(envP != NULL);
--    XMLRPC_ASSERT(format != NULL);
--
--    /* Print our error message to the buffer. */
--    va_start(args, format);
--    set_fault_formatted_v(envP, code, format, args);
--    va_end(args);
--}
--
--
--
--void
--xmlrpc_faultf(xmlrpc_env * const envP,
--              const char * const format,
--              ...) {
--
--    va_list args;
--
--    XMLRPC_ASSERT(envP != NULL);
--    XMLRPC_ASSERT(format != NULL);
--
--    /* Print our error message to the buffer. */
--    va_start(args, format);
--    set_fault_formatted_v(envP, XMLRPC_INTERNAL_ERROR, format, args);
--    va_end(args);
--
--}
--
--
--
--void xmlrpc_fatal_error (char* file, int line, char* msg)
--{
--    fprintf(stderr, "%s:%d: %s\n", file, line, msg);
--    exit(1);
--}
--
--
--/*=========================================================================
--**  Resource Limits
--**=========================================================================
--*/ 
--
--static size_t limits[XMLRPC_LAST_LIMIT_ID + 1] = {
--    XMLRPC_NESTING_LIMIT_DEFAULT,
--    XMLRPC_XML_SIZE_LIMIT_DEFAULT
--};
--
--void xmlrpc_limit_set (int limit_id, size_t value)
--{
--    XMLRPC_ASSERT(0 <= limit_id && limit_id <= XMLRPC_LAST_LIMIT_ID);
--    limits[limit_id] = value;
--}
--
--size_t xmlrpc_limit_get (int limit_id)
--{
--    XMLRPC_ASSERT(0 <= limit_id && limit_id <= XMLRPC_LAST_LIMIT_ID);
--    return limits[limit_id];
--}
--
--
--/*=========================================================================
--**  xmlrpc_mem_block
--**=========================================================================
--*/
--
--xmlrpc_mem_block * 
--xmlrpc_mem_block_new(xmlrpc_env * const env, 
--                     size_t       const size) {
--    xmlrpc_mem_block* block;
--
--    XMLRPC_ASSERT_ENV_OK(env);
--
--    block = (xmlrpc_mem_block*) malloc(sizeof(xmlrpc_mem_block));
--    XMLRPC_FAIL_IF_NULL(block, env, XMLRPC_INTERNAL_ERROR,
--                        "Can't allocate memory block");
--
--    xmlrpc_mem_block_init(env, block, size);
--    XMLRPC_FAIL_IF_FAULT(env);
--
--                     cleanup:
--    if (env->fault_occurred) {
--        if (block)
--            free(block);
--        return NULL;
--    } else {
--        return block;
--    }
--}
--
--/* Destroy an existing xmlrpc_mem_block, and everything it contains. */
--void xmlrpc_mem_block_free (xmlrpc_mem_block* block)
--{
--    XMLRPC_ASSERT(block != NULL);
--    XMLRPC_ASSERT(block->_block != NULL);
--
--    xmlrpc_mem_block_clean(block);
--    free(block);
--}
--
--/* Initialize the contents of the provided xmlrpc_mem_block. */
--void xmlrpc_mem_block_init (xmlrpc_env* env,
--                            xmlrpc_mem_block* block,
--                            size_t size)
--{
--    XMLRPC_ASSERT_ENV_OK(env);
--    XMLRPC_ASSERT(block != NULL);
--
--    block->_size = size;
--    if (size < BLOCK_ALLOC_MIN)
--        block->_allocated = BLOCK_ALLOC_MIN;
--    else
--        block->_allocated = size;
--
--    block->_block = (void*) malloc(block->_allocated);
--    if (!block->_block)
--        xmlrpc_env_set_fault_formatted(
--            env, XMLRPC_INTERNAL_ERROR,
--            "Can't allocate %u-byte memory block",
--            block->_allocated);
--}
--
--/* Deallocate the contents of the provided xmlrpc_mem_block, but not the
--** block itself. */
--void xmlrpc_mem_block_clean (xmlrpc_mem_block* block)
--{
--    XMLRPC_ASSERT(block != NULL);
--    XMLRPC_ASSERT(block->_block != NULL);
--
--    free(block->_block);
--    block->_block = XMLRPC_BAD_POINTER;
--}
--
--
--
--/* Get the size of the xmlrpc_mem_block. */
--size_t 
--xmlrpc_mem_block_size(const xmlrpc_mem_block * const block) {
--
--    XMLRPC_ASSERT(block != NULL);
--    return block->_size;
--}
--
--
--
--/* Get the contents of the xmlrpc_mem_block. */
--void * 
--xmlrpc_mem_block_contents(const xmlrpc_mem_block * const block) {
--
--    XMLRPC_ASSERT(block != NULL);
--    return block->_block;
--}
--
--
--
--/* Resize an xmlrpc_mem_block, preserving as much of the contents as
--** possible. */
--void 
--xmlrpc_mem_block_resize (xmlrpc_env *       const env,
--                         xmlrpc_mem_block * const block,
--                         size_t             const size) {
--
--    size_t proposed_alloc;
--    void* new_block;
--
--    XMLRPC_ASSERT_ENV_OK(env);
--    XMLRPC_ASSERT(block != NULL);
--
--    /* Check to see if we already have enough space. Maybe we'll get lucky. */
--    if (size <= block->_allocated) {
--        block->_size = size;
--        return;
--    }
--
--    /* Calculate a new allocation size. */
--#ifdef EFENCE
--    proposed_alloc = size;
--#else
--    proposed_alloc = block->_allocated;
--    while (proposed_alloc < size && proposed_alloc <= BLOCK_ALLOC_MAX)
--        proposed_alloc *= 2;
--#endif /* DEBUG_MEM_ERRORS */
--
--    if (proposed_alloc > BLOCK_ALLOC_MAX)
--        XMLRPC_FAIL(env, XMLRPC_INTERNAL_ERROR, "Memory block too large");
--
--    /* Allocate our new memory block. */
--    new_block = (void*) malloc(proposed_alloc);
--    XMLRPC_FAIL_IF_NULL(new_block, env, XMLRPC_INTERNAL_ERROR,
--                        "Can't resize memory block");
--
--    /* Copy over our data and update the xmlrpc_mem_block struct. */
--    memcpy(new_block, block->_block, block->_size);
--    free(block->_block);
--    block->_block     = new_block;
--    block->_size      = size;
--    block->_allocated = proposed_alloc;
--
-- cleanup:
--    return;
--}
--
--
--
--void 
--xmlrpc_mem_block_append(xmlrpc_env *       const env,
--                        xmlrpc_mem_block * const block,
--                        const void *       const data, 
--                        size_t             const len) {
--
--    int size;
--
--    XMLRPC_ASSERT_ENV_OK(env);
--    XMLRPC_ASSERT(block != NULL);
--
--    size = block->_size;
--    xmlrpc_mem_block_resize(env, block, size + len);
--    XMLRPC_FAIL_IF_FAULT(env);
--
--    memcpy(((unsigned char*) block->_block) + size, data, len);
--
-- cleanup:
--    return;
--}
--
--
--
--void
--xmlrpc_traceXml(const char * const label, 
--                const char * const xml,
--                unsigned int const xmlLength) {
--
--    if (getenv("XMLRPC_TRACE_XML")) {
--        unsigned int nonPrintableCount;
--        unsigned int i;
--
--        nonPrintableCount = 0;  /* Initial value */
--
--        for (i = 0; i < xmlLength; ++i) {
--            if (!isprint(xml[i]) && xml[i] != '\n' && xml[i] != '\r')
--                ++nonPrintableCount;
--        }
--        if (nonPrintableCount > 0)
--            fprintf(stderr, "%s contains %u nonprintable characters.\n", 
--                    label, nonPrintableCount);
--
--        fprintf(stderr, "%s:\n\n", label);
--        fprintf(stderr, "%.*s\n", (int)xmlLength, xml);
--    }
--}
-diff --git a/libs/xmlrpc-c/src/xmlrpc_transport.c b/libs/xmlrpc-c/src/xmlrpc_transport.c
-deleted file mode 100644
-index d1878e6..0000000
---- a/libs/xmlrpc-c/src/xmlrpc_transport.c
-+++ /dev/null
-@@ -1,143 +0,0 @@
--/* Copyright (C) 2001 by First Peer, Inc. 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. The name of the author may not be used to endorse or promote products
--**    derived from this software without specific prior written permission. 
--**  
--** THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 "xmlrpc_config.h"
--
--#undef PACKAGE
--#undef VERSION
--
--#include <stddef.h>
--#include <string.h>
--#include <stdlib.h>
--
--#ifdef WIN32
--#ifdef _DEBUG
--#     include <crtdbg.h>
--#     define new DEBUG_NEW
--#     define malloc(size) _malloc_dbg( size, _NORMAL_BLOCK, __FILE__, __LINE__)
--#     undef THIS_FILE
--      static char THIS_FILE[] = __FILE__;
--#endif
--#endif /*WIN32*/
--
--#include "pthreadx.h"
--#include "xmlrpc.h"
--#include "xmlrpc_client.h"
--
--#if defined (WIN32)
--#include <process.h>
--#endif
--
--/* For debugging the xmlrpc_transport threading. */
--/* #define tdbg_printf printf */
--#define tdbg_printf (void *)
--
--/* Lacking from the abyss/thread.c implimentaion. */
--void wait_for_asynch_thread(pthread_t *thread)
--{
--#if WIN32
--      unsigned long milliseconds = INFINITE;
--      switch (WaitForSingleObject (
--      *thread /* handle to object to wait for */,
--      milliseconds /* time-out interval in milliseconds*/) )
--      {
--              /* One may want to handle these cases  */
--      case WAIT_OBJECT_0:
--      case WAIT_TIMEOUT:
--              break;
--      }
--#else
--      void * result;
--      int success;
--      success = pthread_join (*thread, &result);
--#endif
--}
--
--/* MRB-WARNING: Only call when you have successfully
--**     acquired the Lock/Unlock mutex! */
--void unregister_asynch_thread (running_thread_list *list, pthread_t *thread)
--{
--      running_thread_info * pCur = NULL;
--      XMLRPC_ASSERT_PTR_OK(thread);
--      XMLRPC_ASSERT_PTR_OK(list);
--
--      tdbg_printf("unregister_asynch_thread: &pthread_id = %08X *(%08X)\n", thread, *thread);
--      /* Removal */
--      /* Lock (); */
--      for (pCur = list->AsyncThreadHead; pCur != NULL; pCur = (running_thread_info *)pCur->Next)
--      {
--              if (pCur->_thread == *thread)
--              {
--                      if (pCur == list->AsyncThreadHead)
--                              list->AsyncThreadHead = pCur->Next;
--                      if (pCur == list->AsyncThreadTail)
--                              list->AsyncThreadTail = pCur->Last;
--                      if (pCur->Last)
--                              ((running_thread_info *)(pCur->Last))->Next = pCur->Next;
--                      if (pCur->Next)
--                              ((running_thread_info *)(pCur->Next))->Last = pCur->Last;
--                      /* Free malloc'd running_thread_info */
--                      free (pCur);
--                      return;
--              }
--      }
--
--      /* This is a serious progmatic error, since the thread
--      ** should be in that list! */
--      XMLRPC_ASSERT_PTR_OK(0x0000);
--
--      /* Unlock (); */
--}
--
--/* MRB-WARNING: Only call when you have successfully
--**     acquired the Lock/Unlock mutex! */
--void register_asynch_thread (running_thread_list *list, pthread_t *thread)
--{
--      running_thread_info* info = (running_thread_info *) malloc(sizeof(running_thread_info));
--
--      XMLRPC_ASSERT_PTR_OK(thread);
--      XMLRPC_ASSERT_PTR_OK(list);
--      
--      tdbg_printf("register_asynch_thread: &pthread_id = %08X *(%08X)\n", thread, *thread);
--
--      info->_thread = *thread;
--
--      /* Insertion */
--      /* Lock (); */
--      if (list->AsyncThreadHead == NULL)
--      {
--              list->AsyncThreadHead = list->AsyncThreadTail = info;
--              list->AsyncThreadTail->Next = list->AsyncThreadHead->Next = NULL;
--              list->AsyncThreadTail->Last = list->AsyncThreadHead->Last = NULL;
--      }
--      else
--      {
--              info->Last = list->AsyncThreadTail;
--              list->AsyncThreadTail->Next = info;
--              list->AsyncThreadTail = list->AsyncThreadTail->Next;
--              list->AsyncThreadTail->Next = NULL;
--      }
--      /* Unlock (); */
--}
-diff --git a/libs/xmlrpc-c/src/xmlrpc_utf8.c b/libs/xmlrpc-c/src/xmlrpc_utf8.c
-deleted file mode 100644
-index 390cc7b..0000000
---- a/libs/xmlrpc-c/src/xmlrpc_utf8.c
-+++ /dev/null
-@@ -1,376 +0,0 @@
--/* Copyright (C) 2001 by Eric Kidd. 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. The name of the author may not be used to endorse or promote products
--**    derived from this software without specific prior written permission. 
--**  
--** THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. */
--
--
--/*=========================================================================
--**  XML-RPC UTF-8 Utilities
--**=========================================================================
--**  Routines for validating, encoding and decoding UTF-8 data.  We try to
--**  be very, very strict about invalid UTF-8 data.
--**
--**  All of the code in this file assumes that your machine represents
--**  wchar_t as a 16-bit (or wider) character containing UCS-2 data.  If this
--**  assumption is incorrect, you may need to replace this file.
--**
--**  For lots of information on Unicode and UTF-8 decoding, see:
--**    http://www.cl.cam.ac.uk/~mgk25/unicode.html
--*/
--
--#include "xmlrpc_config.h"
--
--#include "xmlrpc-c/base.h"
--
--#ifdef HAVE_UNICODE_WCHAR
--
--/*=========================================================================
--**  Tables and Constants
--**=========================================================================
--**  We use a variety of tables and constants to help decode and validate
--**  UTF-8 data.
--*/
--
--/* The number of bytes in a UTF-8 sequence starting with the character used
--** as the array index.  A zero entry indicates an illegal initial byte.
--** This table was generated using a Perl script and information from the
--** UTF-8 standard.
--**
--** Fredrik Lundh's UTF-8 decoder Python 2.0 uses a similar table.  But
--** since Python 2.0 has the icky CNRI license, I regenerated this
--** table from scratch and wrote my own decoder. */
--static unsigned char utf8_seq_length[256] = {
--    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
--    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
--    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
--    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
--    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
--    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
--    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
--    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
--    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
--    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
--    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
--    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
--    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
--    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
--    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
--    4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 0, 0
--};
--
--/* The minimum legal character value for a UTF-8 sequence of the given
--** length.  We have to check this to avoid accepting "overlong" UTF-8
--** sequences, which use more bytes than necessary to encode a given
--** character.  Such sequences are commonly used by evil people to bypass
--** filters and security checks.  This table is based on the UTF-8-test.txt
--** file by Markus Kuhn <mkuhn@acm.org>. */
--static wchar_t utf8_min_char_for_length[4] = {
--    0,          /* Length 0: Not used (meaningless) */
--    0x0000,     /* Length 1: Not used (special-cased) */
--    0x0080,     /* Length 2 */
--    0x0800      /* Length 3 */
--
--#if 0
--    /* These are only useful on systems where wchar_t is 32-bits wide
--    ** and supports full UCS-4. */
--    0x00010000, /* Length 4 */
--    0x00200000, /* Length 5 */
--    0x04000000  /* Length 6 */
--#endif
--};
--
--/* This is the maximum legal 16-byte (UCS-2) character.  Again, this
--** information is based on UTF-8-test.txt. */
--#define UCS2_MAX_LEGAL_CHARACTER (0xFFFD)
--
--/* First and last UTF-16 surrogate characters.  These are *not* legal UCS-2
--** characters--they're used to code for UCS-4 characters when using
--** UTF-16.  They should never appear in decoded UTF-8 data!  Again, these
--** could hypothetically be used to bypass security measures on some machines.
--** Based on UTF-8-test.txt. */
--#define UTF16_FIRST_SURROGATE (0xD800)
--#define UTF16_LAST_SURROGATE  (0xDFFF)
--
--/* Is the character 'c' a UTF-8 continuation character? */
--#define IS_CONTINUATION(c) (((c) & 0xC0) == 0x80)
--
--/* Maximum number of bytes needed to encode a supported character. */
--#define MAX_ENCODED_BYTES (3)
--
--
--/*=========================================================================
--**  decode_utf8
--**=========================================================================
--**  Internal routine which decodes (or validates) a UTF-8 string.
--**  To validate, set io_buff and out_buff_len to NULL.  To decode, allocate
--**  a sufficiently large buffer, pass it as io_buff, and pass a pointer as
--**  as out_buff_len.  The data will be written to the buffer, and the
--**  length to out_buff_len.
--**
--**  We assume that wchar_t holds a single UCS-2 character in native-endian
--**  byte ordering.
--*/
--
--static void 
--decode_utf8(xmlrpc_env * const env,
--            const char * const utf8_data,
--            size_t       const utf8_len,
--            wchar_t *    const io_buff,
--            size_t *     const out_buff_len) {
--
--    size_t i, length, out_pos;
--    char init, con1, con2;
--    wchar_t wc;
--
--    XMLRPC_ASSERT_ENV_OK(env);
--    XMLRPC_ASSERT_PTR_OK(utf8_data);
--    XMLRPC_ASSERT((!io_buff && !out_buff_len) ||
--                  (io_buff && out_buff_len));
--
--    /* Suppress GCC warning about possibly undefined variable. */
--    wc = 0;
--
--    i = 0;
--    out_pos = 0;
--    while (i < utf8_len) {
--        init = utf8_data[i];
--        if ((init & 0x80) == 0x00) {
--            /* Convert ASCII character to wide character. */
--            wc = init;
--            i++;
--        } else {
--            /* Look up the length of this UTF-8 sequence. */
--            length = utf8_seq_length[(unsigned char) init];
--            
--            /* Check to make sure we have enough bytes to convert. */
--            if (i + length > utf8_len)
--                XMLRPC_FAIL(env, XMLRPC_INVALID_UTF8_ERROR,
--                            "Truncated UTF-8 sequence");
--            
--            /* Decode a multibyte UTF-8 sequence. */
--            switch (length) {
--            case 0:
--                XMLRPC_FAIL(env, XMLRPC_INVALID_UTF8_ERROR,
--                            "Invalid UTF-8 initial byte");
--                
--            case 2:
--                /* 110xxxxx 10xxxxxx */
--                con1 = utf8_data[i+1];
--                if (!IS_CONTINUATION(con1))
--                    XMLRPC_FAIL(env, XMLRPC_INVALID_UTF8_ERROR,
--                                "UTF-8 sequence too short");
--                wc = ((((wchar_t) (init & 0x1F)) <<  6) |
--                      (((wchar_t) (con1 & 0x3F))));
--                break;
--                
--            case 3:
--                /* 1110xxxx 10xxxxxx 10xxxxxx */
--                con1 = utf8_data[i+1];
--                con2 = utf8_data[i+2];
--                if (!IS_CONTINUATION(con1) || !IS_CONTINUATION(con2))
--                    XMLRPC_FAIL(env, XMLRPC_INVALID_UTF8_ERROR,
--                                "UTF-8 sequence too short");
--                wc = ((((wchar_t) (init & 0x0F)) << 12) |
--                      (((wchar_t) (con1 & 0x3F)) <<  6) |
--                      (((wchar_t) (con2 & 0x3F))));
--                break;
--                
--            case 4:
--                /* 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */
--            case 5:
--                /* 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */
--            case 6:
--                /* 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */
--                XMLRPC_FAIL(env, XMLRPC_INVALID_UTF8_ERROR,
--                            "UCS-4 characters not supported");
--                
--            default:
--                XMLRPC_ASSERT("Error in UTF-8 decoder tables");
--            }
--                  
--            /* Advance to the end of the sequence. */
--            i += length;
--            
--            /* Check for illegal UCS-2 characters. */
--            if (wc > UCS2_MAX_LEGAL_CHARACTER)
--                XMLRPC_FAIL(env, XMLRPC_INVALID_UTF8_ERROR,
--                            "UCS-2 characters > U+FFFD are illegal");
--            
--            /* Check for UTF-16 surrogates. */
--            if (UTF16_FIRST_SURROGATE <= wc && wc <= UTF16_LAST_SURROGATE)
--                XMLRPC_FAIL(env, XMLRPC_INVALID_UTF8_ERROR,
--                            "UTF-16 surrogates may not appear in UTF-8 data");
--            
--            /* Check for overlong sequences. */
--            if (wc < utf8_min_char_for_length[length])
--                XMLRPC_FAIL(env, XMLRPC_INVALID_UTF8_ERROR,
--                            "Overlong UTF-8 sequence not allowed");
--        }
--        
--        /* If we have a buffer, write our character to it. */
--        if (io_buff) {
--            io_buff[out_pos++] = wc;
--        }
--    }
--    
--    /* Record the number of characters we found. */
--    if (out_buff_len)
--        *out_buff_len = out_pos;
--    
-- cleanup:
--    if (env->fault_occurred) {
--        if (out_buff_len)
--            *out_buff_len = 0;
--    }
--}
--
--
--
--/*=========================================================================
--**  xmlrpc_validate_utf8
--**=========================================================================
--**  Make sure that a UTF-8 string is valid.
--*/
--
--void 
--xmlrpc_validate_utf8 (xmlrpc_env * const env,
--                      const char * const utf8_data,
--                      size_t       const utf8_len) {
--
--    decode_utf8(env, utf8_data, utf8_len, NULL, NULL);
--}
--
--
--/*=========================================================================
--**  xmlrpc_utf8_to_wcs
--**=========================================================================
--**  Decode UTF-8 string to a "wide character string".  This function
--**  returns an xmlrpc_mem_block with an element type of wchar_t.  Don't
--**  try to intepret the block in a bytewise fashion--it won't work in
--**  any useful or portable fashion.
--*/
--
--xmlrpc_mem_block *xmlrpc_utf8_to_wcs (xmlrpc_env *env,
--                                    char *utf8_data,
--                                    size_t utf8_len)
--{
--    xmlrpc_mem_block *output;
--    size_t wcs_length;
--
--    /* Error-handling preconditions. */
--    output = NULL;
--
--    /* Allocate a memory block large enough to hold any possible output.
--    ** We assume that each byte of the input may decode to a whcar_t. */
--    output = XMLRPC_TYPED_MEM_BLOCK_NEW(wchar_t, env, utf8_len);
--    XMLRPC_FAIL_IF_FAULT(env);
--
--    /* Decode the UTF-8 data. */
--    decode_utf8(env, utf8_data, utf8_len,
--              XMLRPC_TYPED_MEM_BLOCK_CONTENTS(wchar_t, output),
--              &wcs_length);
--    XMLRPC_FAIL_IF_FAULT(env);
--
--    /* Make sure we didn't overrun our buffer. */
--    XMLRPC_ASSERT(wcs_length <= utf8_len);
--
--    /* Correct the length of the memory block. */
--    XMLRPC_TYPED_MEM_BLOCK_RESIZE(wchar_t, env, output, wcs_length);
--    XMLRPC_FAIL_IF_FAULT(env);
--
-- cleanup:
--    if (env->fault_occurred) {
--      if (output)
--          xmlrpc_mem_block_free(output);
--      return NULL;
--    }
--    return output;
--}
--
--
--/*=========================================================================
--**  xmlrpc_utf8_to_wcs
--**=========================================================================
--**  Encode a "wide character string" as UTF-8.
--*/
--
--xmlrpc_mem_block *xmlrpc_wcs_to_utf8 (xmlrpc_env *env,
--                                    wchar_t *wcs_data,
--                                    size_t wcs_len)
--{
--    size_t estimate, bytes_used, i;
--    xmlrpc_mem_block *output;
--    unsigned char *buffer;
--    wchar_t wc;
--
--    XMLRPC_ASSERT_ENV_OK(env);
--    XMLRPC_ASSERT_PTR_OK(wcs_data);
--
--    /* Error-handling preconditions. */
--    output = NULL;
--
--    /* Allocate a memory block large enough to hold any possible output.
--    ** We assume that every wchar might encode to the maximum length. */
--    estimate = wcs_len * MAX_ENCODED_BYTES;
--    output = XMLRPC_TYPED_MEM_BLOCK_NEW(char, env, estimate);
--    XMLRPC_FAIL_IF_FAULT(env);
--
--    /* Output our characters. */
--    buffer = (unsigned char*) XMLRPC_TYPED_MEM_BLOCK_CONTENTS(char, output);
--    bytes_used = 0;
--    for (i = 0; i < wcs_len; i++) {
--      wc = wcs_data[i];
--      if (wc <= 0x007F) {
--          buffer[bytes_used++] = wc & 0x7F;
--      } else if (wc <= 0x07FF) {
--          /* 110xxxxx 10xxxxxx */
--          buffer[bytes_used++] = 0xC0 | (wc >> 6);
--          buffer[bytes_used++] = 0x80 | (wc & 0x3F);
--      } else if (wc <= 0xFFFF) {
--          /* 1110xxxx 10xxxxxx 10xxxxxx */
--          buffer[bytes_used++] = 0xE0 | (wc >> 12);
--          buffer[bytes_used++] = 0x80 | ((wc >> 6) & 0x3F);
--          buffer[bytes_used++] = 0x80 | (wc & 0x3F);
--      } else {
--          XMLRPC_FAIL(env, XMLRPC_INTERNAL_ERROR,
--                      "Don't know how to encode UCS-4 characters yet");
--      }
--    }
--
--    /* Make sure we didn't overrun our buffer. */
--    XMLRPC_ASSERT(bytes_used <= estimate);
--
--    /* Correct the length of the memory block. */
--    XMLRPC_TYPED_MEM_BLOCK_RESIZE(char, env, output, bytes_used);
--    XMLRPC_FAIL_IF_FAULT(env);
--
-- cleanup:
--    if (env->fault_occurred) {
--      if (output)
--          xmlrpc_mem_block_free(output);
--      return NULL;
--    }
--    return output;
--}
--
--#endif /* HAVE_UNICODE_WCHAR */
-diff --git a/libs/xmlrpc-c/srcdir.mk.in b/libs/xmlrpc-c/srcdir.mk.in
-new file mode 100644
-index 0000000..d389df1
---- /dev/null
-+++ b/libs/xmlrpc-c/srcdir.mk.in
-@@ -0,0 +1 @@
-+SRCDIR=@abs_srcdir@
-diff --git a/libs/xmlrpc-c/tools/.cvsignore b/libs/xmlrpc-c/tools/.cvsignore
-deleted file mode 100644
-index f3c7a7c..0000000
---- a/libs/xmlrpc-c/tools/.cvsignore
-+++ /dev/null
-@@ -1 +0,0 @@
--Makefile
-diff --git a/libs/xmlrpc-c/tools/Makefile b/libs/xmlrpc-c/tools/Makefile
-index 621dbf9..c2eb347 100644
---- a/libs/xmlrpc-c/tools/Makefile
-+++ b/libs/xmlrpc-c/tools/Makefile
-@@ -7,15 +7,20 @@ SUBDIR := tools
- include $(BLDDIR)/config.mk
--SUBDIRS = binmode-rpc-kit turbocharger
-+SUBDIRS = \
-+  binmode-rpc-kit \
-+  lib \
-+  turbocharger \
- ifeq ($(MUST_BUILD_CLIENT),yes)
-   SUBDIRS += xmlrpc xmlrpc_transport
-   ifeq ($(ENABLE_CPLUSPLUS),yes)
--    SUBDIRS += xml-rpc-api2cpp xmlrpc_cpp_proxy
--    # We could add 'xmlrpc_pstream' here, but we don't because we don't
--    # want to deal with finding the Readline/Ncurses libraries.
-+    SUBDIRS += xml-rpc-api2cpp xml-rpc-api2txt xmlrpc_cpp_proxy
-+
-+    ifeq ($(BUILD_XMLRPC_PSTREAM),yes)
-+      SUBDIRS += xmlrpc_pstream
-+    endif
-   endif
- endif
-diff --git a/libs/xmlrpc-c/tools/Makefile.common b/libs/xmlrpc-c/tools/Makefile.common
-deleted file mode 100644
-index 8b0cdce..0000000
---- a/libs/xmlrpc-c/tools/Makefile.common
-+++ /dev/null
-@@ -1,47 +0,0 @@
--# -*-makefile-*-    <-- an Emacs control
--
--CLIENT_LDFLAGS =
--ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
--  CLIENT_LDFLAGS += $(shell libwww-config --libs)
--endif
--ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
--  CLIENT_LDFLAGS += $(shell curl-config --libs) -lpthread
--endif
--ifeq ($(MUST_BUILD_WININET_CLIENT),yes)
--  CLIENT_LDFLAGS += $(shell wininet-config --libs)
--endif
--
--LIBEXPAT = $(BUILDDIR)/lib/expat/xmlparse/libxmlrpc_xmlparse.la \
--           $(BUILDDIR)/lib/expat/xmltok/libxmlrpc_xmltok.la
--
--ifeq ($(ENABLE_LIBXML2_BACKEND),yes)
--  LIBXML = $(LIBXML2_LIBS)
--else
--  LIBXML = $(LIBEXPAT)
--endif
--
--LIBXMLRPC = $(BUILDDIR)/src/libxmlrpc.la
--LIBXMLRPC_CPP = $(BUILDDIR)/src/cpp/libxmlrpc_cpp.a
--LIBXMLRPC_CLIENT = $(BUILDDIR)/src/libxmlrpc_client.la
--LIBXMLRPC_SERVER = $(BUILDDIR)/src/libxmlrpc_server.la
--
--XMLRPC_LIBS = $(LIBXMLRPC) $(LIBXMLRPC_CPP) $(LIBXMLRPC_CLIENT) \
--      $(LIBXMLRPC_SERVER) $(LIBXML)
--
--UTIL_DIR = $(BUILDDIR)/lib/util
--
--BUILDABLE_UTILS = casprintf.o cmdline_parser.o getoptx.o
--
--$(BUILDABLE_UTILS:%=$(UTIL_DIR)/%): FORCE
--      $(MAKE) -C $(dir $@) $(notdir $@)
--
--include $(SRCDIR)/Makefile.common
--
--.PHONY: install
--install: install-common
--
--.PHONY: check
--check:
--
--.PHONY: FORCE
--FORCE:
-diff --git a/libs/xmlrpc-c/tools/common.mk b/libs/xmlrpc-c/tools/common.mk
-index fe71e97..4c377fe 100644
---- a/libs/xmlrpc-c/tools/common.mk
-+++ b/libs/xmlrpc-c/tools/common.mk
-@@ -29,7 +29,7 @@ CLIENTPP_LDLIBS += -lxmlrpc_client++ -lxmlrpc_packetsocket -lxmlrpc++
- include $(SRCDIR)/common.mk
- ifneq ($(OMIT_LIB_RULE),Y)
--srcdir/tools/lib/dumpvalue.o: FORCE
-+blddir/tools/lib/dumpvalue.o: FORCE
-       $(MAKE) -C $(dir $@) -f $(SRCDIR)/tools/lib/Makefile $(notdir $@) 
- endif
-diff --git a/libs/xmlrpc-c/tools/lib/Makefile b/libs/xmlrpc-c/tools/lib/Makefile
-index 5b04eed..836d9c9 100644
---- a/libs/xmlrpc-c/tools/lib/Makefile
-+++ b/libs/xmlrpc-c/tools/lib/Makefile
-@@ -20,8 +20,6 @@ INCLUDES = \
-   -Isrcdir/include \
-   -Isrcdir/lib/util/include \
--CFLAGS = $(CFLAGS_COMMON) $(INCLUDES) $(CFLAGS_PERSONAL) $(CADD)
--
- LIBOBJS = \
-   dumpvalue.o \
-@@ -29,14 +27,14 @@ LIBOBJS = \
- all: $(LIBOBJS)
- %.o:%.c
--      $(CC) -c $(CFLAGS) $<
-+      $(CC) -c $(CFLAGS_ALL) $<
- # This common.mk dependency makes sure the symlinks get built before
- # this make file is used for anything.
--$(SRCDIR)/tool/common.mk: srcdir blddir
-+$(SRCDIR)/tools/common.mk: srcdir blddir
--include Makefile.depend
-+include depend.mk
- .PHONY: dep
- dep: dep-common
-diff --git a/libs/xmlrpc-c/tools/lib/dumpvalue.c b/libs/xmlrpc-c/tools/lib/dumpvalue.c
-index ebcc000..682c904 100644
---- a/libs/xmlrpc-c/tools/lib/dumpvalue.c
-+++ b/libs/xmlrpc-c/tools/lib/dumpvalue.c
-@@ -5,7 +5,7 @@
-    used for debugging purposes in other places.
- */
--//#define _GNU_SOURCE
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
- #include <stdlib.h>
- #include <stdio.h>
-@@ -297,12 +297,12 @@ dumpStructMember(const char *   const prefix,
-         const char * prefix2;
-         const char * blankPrefix;
--        casprintf(&prefix2, "%s  Key:   ", prefix);
-+        casprintf(&blankPrefix, "%*s", blankCount, "");
-+        
-+        casprintf(&prefix2, "%s  Key:   ", blankPrefix);
-         dumpValue(prefix2, keyP);
-         strfree(prefix2);
--        casprintf(&blankPrefix, "%*s", blankCount, "");
--        
-         casprintf(&prefix2, "%s  Value: ", blankPrefix);
-         dumpValue(prefix2, valueP);
-         strfree(prefix2);
-@@ -407,13 +407,13 @@ dumpI8(const char *   const prefix,
-     xmlrpc_env_init(&env);
-     xmlrpc_read_i8(&env, valueP, &value);
--    
-+
-     if (env.fault_occurred)
-         printf("Internal error: unable to extract value of "
-                "64-bit integer xmlrpc_value %lx.  %s\n",
-                (unsigned long)valueP, env.fault_string);
-     else
--        printf("%s64-bit integer: %" PRId64 "\n", prefix, value);
-+        printf("%s64-bit integer: %" XMLRPC_PRId64 "\n", prefix, value);
-     xmlrpc_env_clean(&env);
- }
-diff --git a/libs/xmlrpc-c/tools/turbocharger/.cvsignore b/libs/xmlrpc-c/tools/turbocharger/.cvsignore
-deleted file mode 100644
-index f3c7a7c..0000000
---- a/libs/xmlrpc-c/tools/turbocharger/.cvsignore
-+++ /dev/null
-@@ -1 +0,0 @@
--Makefile
-diff --git a/libs/xmlrpc-c/tools/xml-rpc-api2cpp/.cvsignore b/libs/xmlrpc-c/tools/xml-rpc-api2cpp/.cvsignore
-deleted file mode 100644
-index c194ee8..0000000
---- a/libs/xmlrpc-c/tools/xml-rpc-api2cpp/.cvsignore
-+++ /dev/null
-@@ -1 +0,0 @@
--xml-rpc-api2cpp
-diff --git a/libs/xmlrpc-c/tools/xml-rpc-api2cpp/Makefile b/libs/xmlrpc-c/tools/xml-rpc-api2cpp/Makefile
-index dbe374f..0ad3907 100644
---- a/libs/xmlrpc-c/tools/xml-rpc-api2cpp/Makefile
-+++ b/libs/xmlrpc-c/tools/xml-rpc-api2cpp/Makefile
-@@ -10,23 +10,24 @@ default: all
- include $(BLDDIR)/config.mk
--include $(SRCDIR)/tools/common.mk
--
--INCLUDES = -I$(BLDDIR) -I$(BLDDIR)/include -I$(SRCDIR)/include
-+PROGS := xml-rpc-api2cpp
-+PROGRAMS_TO_INSTALL := $(PROGS)
-+MAN_FILES_TO_INSTALL := xml-rpc-api2cpp.1
--CXXFLAGS = $(INCLUDES) $(CXXFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
-+all: $(PROGS)
--LDFLAGS = $(LADD)
-+include $(SRCDIR)/tools/common.mk
--LDLIBS = -L$(BLDDIR)/src/cpp -lxmlrpc_cpp -lxmlrpc_server $(CLIENT_LDLIBS)
-+# <sstream.h> in Glibc 2.2 has a bug that results in inlining failure,
-+# so we disable warnings for that:
-+CFLAGS_LOCAL = -Wno-inline
--PROGS :=
-+INCLUDES = -I$(BLDDIR) -I$(BLDDIR)/include -Isrcdir/include
--ifeq ($(MUST_BUILD_CLIENT),yes)
--  PROGS += xml-rpc-api2cpp
--endif
-+LDFLAGS = $(LADD)
--all: $(PROGS)
-+LDLIBS = -L$(BLDDIR)/src/cpp -lxmlrpc_cpp -L$(BLDDIR)/src -lxmlrpc_server \
-+  $(CLIENT_LDLIBS)
- OBJECTS = \
-   xml-rpc-api2cpp.o \
-@@ -46,14 +47,14 @@ xml-rpc-api2cpp: \
-       $(CXXLD) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS)
- %.o:%.cpp
--      $(CXX) -c $(CXXFLAGS) $<
-+      $(CXX) -c $(CXXFLAGS_ALL) $<
- # This common.mk dependency makes sure the symlinks get built before
- # this make file is used for anything.
--$(SRCDIR)/common.mk: srcdir blddir
-+$(SRCDIR)/tools/common.mk: srcdir blddir
--include Makefile.depend
-+include depend.mk
- .PHONY: clean
- clean: clean-common
-diff --git a/libs/xmlrpc-c/tools/xml-rpc-api2cpp/Makefile.depend b/libs/xmlrpc-c/tools/xml-rpc-api2cpp/Makefile.depend
-deleted file mode 100644
-index e69de29..0000000
-diff --git a/libs/xmlrpc-c/tools/xml-rpc-api2cpp/README b/libs/xmlrpc-c/tools/xml-rpc-api2cpp/README
-deleted file mode 100644
-index 4dff2a3..0000000
---- a/libs/xmlrpc-c/tools/xml-rpc-api2cpp/README
-+++ /dev/null
-@@ -1,6 +0,0 @@
--This program generates C++ wrapper classes for XML-RPC servers.  It talks
--to xmlrpc-c and XML-RPC.NET servers without any problems, but tends to
--choke when talking to mod_php-based servers.  It looks like there is some
--kind of pipelining problem.
--
--This code is an ongoing project.  Please send feedback!
-diff --git a/libs/xmlrpc-c/tools/xml-rpc-api2txt b/libs/xmlrpc-c/tools/xml-rpc-api2txt
-deleted file mode 100755
-index e771463..0000000
---- a/libs/xmlrpc-c/tools/xml-rpc-api2txt
-+++ /dev/null
-@@ -1,147 +0,0 @@
--#!/usr/bin/perl -w
--#
--# A handy little program to get the documentation of the available
--# methods from an XML-RPC service (via XML-RPC Introspection) and
--# print it out nicely formatted.
--#
--# (I wrote this in Perl because of all the spiffy report-generation
--# features.)
--#
--# You'll need to get Ken MacLeod's Frontier::RPC2 module from CPAN to use
--# this.
--#
--# Eric Kidd <eric.kidd@pobox.com>
--#
--# This script is part of xmlrpc-c, and may be used and distributed under
--# the same terms as the rest of the package.
--
--use strict;
--
--# One global variable for use with Perl's format routines, and one for
--# use inside an 'exec' block.
--use vars qw/$helptext $method_list/;
--
--# Try to load our Perl XML-RPC bindings, but fail gracefully.
--eval {
--    require Frontier::Client;
--};
--if ($@) {
--    print STDERR <<"EOD";
--This script requires Ken MacLeod\'s Frontier::RPC2 module. You can get this
--from CPAN or from his website at http://bitsko.slc.ut.us/~ken/xml-rpc/ .
--
--For installation instructions, see the XML-RPC HOWTO at:
--    http://www.linuxdoc.org/HOWTO/XML-RPC-HOWTO/index.html
--
--EOD
--    exit 1;
--}
--
--# Parse our command-line arguments.
--if (@ARGV != 1 || $ARGV[0] eq "--help") {
--    print STDERR "Usage: xml-rpc-api2txt serverURL\n";
--    exit 1;
--}
--
--my $server = Frontier::Client->new(url => $ARGV[0]);
--
--# Try (very carefully) to get our a list of methods from the server.
--local $method_list;
--eval {
--    $method_list = $server->call('system.listMethods');
--};
--if ($@) {
--    print STDERR <<"EOD";
--An error occurred while trying to talk to the XML-RPC server:
--
--  $@
--
--This may have been caused by several things--the server might not support
--introspection, it might not be an XML-RPC server, or your network might be
--down. Try the following:
--
--  xml-rpc-api2txt http://xmlrpc-c.sourceforge.net/api/sample.php
--
--EOD
--    exit 1;
--}
--
--# Enter the methods into a hashtable.
--my @methods = sort @$method_list;
--my %method_table;
--foreach my $method (@methods) {
--    $method_table{$method} = {};
--}
--
--# Get more information for the hash table. Since we need to make lots and
--# lots of very small XML-RPC calls, we'd like to use system.multicall to
--# reduce the latency.
--if (defined $method_table{'system.multicall'}) {
--
--    # This is messy but fast. Everybody hates HTTP round-trip lag, right?
--    my @call;
--    foreach my $method (@methods) {
--      push @call, {methodName => 'system.methodSignature',
--                   params => [$method]};
--      push @call, {methodName => 'system.methodHelp',
--                   params => [$method]};
--    }
--    my @result = @{$server->call('system.multicall', \@call)};
--    for (my $i = 0; $i < @methods; $i++) {
--      my $method = $methods[$i];
--      $method_table{$method}->{'signatures'} = $result[2*$i]->[0];
--      $method_table{$method}->{'help'} = $result[2*$i+1]->[0];
--    }
--} else {
--
--    # This is easy but slow (especially over backbone links).
--    foreach my $method (@methods) {
--      my $signature = $server->call('system.methodSignature', $method);
--      my $help = $server->call('system.methodHelp', $method);
--      $method_table{$method}->{'signatures'} = $signature;
--      $method_table{$method}->{'help'} = $help;
--    }
--}
--
--# Now, we need to dump the API.
--print <<"EOD";
--XML-RPC API for $ARGV[0]
--
--See http://www.linuxdoc.org/HOWTO/XML-RPC-HOWTO/index.html for instructions
--on using XML-RPC with Perl, Python, Java, C, C++, PHP, etc.
--EOD
--foreach my $method (@methods) {
--    print "\n";
--
--    # Print a synopsis of the function.
--    if ($method_table{$method}->{'signatures'} eq 'undef') {
--      # No documentation. Bad server. No biscuit.
--      print "unknown $method (...)\n";
--    } else {
--      for my $signature (@{$method_table{$method}->{'signatures'}}) {
--          my $return_type = shift @$signature;
--          my $arguments = join(", ", @$signature);
--          print "$return_type $method ($arguments)\n";
--      }
--    }
--    print "\n";
--
--    my $help = $method_table{$method}->{'help'};
--    if ($help =~ /\n/) {
--      # Text has already been broken into lines by the server, so just
--      # indent it by two spaces and hope for the best.
--      my @lines = split(/\n/, $help);
--      my $help = "  " . join("\n  ", @lines);
--      print "$help\n";
--    } else {
--      # Print our help text in a nicely-wrapped fashion using Perl's
--      # formatting routines.
--      $helptext = $method_table{$method}->{'help'};
--      write;
--    }
--}
--
--format STDOUT =
--  ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~
--  $helptext
--.
-diff --git a/libs/xmlrpc-c/tools/xml-rpc-api2txt.1 b/libs/xmlrpc-c/tools/xml-rpc-api2txt.1
-deleted file mode 100644
-index a9e1ee3..0000000
---- a/libs/xmlrpc-c/tools/xml-rpc-api2txt.1
-+++ /dev/null
-@@ -1,47 +0,0 @@
--.\"                                      Hey, EMACS: -*- nroff -*-
--.\" First parameter, NAME, should be all caps
--.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
--.\" other parameters are allowed: see man(7), man(1)
--.TH XML-RPC-API2TXT 1 "June 27, 2001"
--.\" Please adjust this date whenever revising the manpage.
--.\"
--.\" Some roff macros, for reference:
--.\" .nh        disable hyphenation
--.\" .hy        enable hyphenation
--.\" .ad l      left justify
--.\" .ad b      justify to both left and right margins
--.\" .nf        disable filling
--.\" .fi        enable filling
--.\" .br        insert line break
--.\" .sp <n>    insert n+1 empty lines
--.\" for manpage-specific macros, see man(7)
--.SH NAME
--xml-rpc-api2txt \- Print out a description of an XML-RPC API as text
--.SH SYNOPSIS
--.B xml-rpc-api2txt
--\fIserver-url\fR
--.SH DESCRIPTION
--xml-rpc-api2txt queries an XML-RPC server using the XML-RPC
--Instrospection API designed by Edd Dumbill.  It then prints the
--results to standard output in a nicely formatted form, suitable for
--sending via e-mail.
--.PP
--You can find a list of supported XML-RPC server libraries (and patches
--for many others) at \fBhttp://xmlrpc-c.sourceforge.net/hacks.php\fR.
--.SH OPTIONS
--.TP
--.I server-url
--The name of the server to query.  Try
--\fBhttp://xmlrpc-c.sourceforge.net/cgi-bin/interop.cgi\fR.
--.SH BUGS
--xml-rpc-api2txt assumes that method descriptions are ASCII text, not
--HTML as specified in the standard.  (In practice, both conventions are
--often seen.)
--.SH SEE ALSO
--.BR xmlrpc-c (7),
--.BR xml-rpc-api2cpp (1).
--.PP
--This program is part of xmlrpc-c.
--.SH AUTHOR
--This manual page was written by Eric Kidd <eric.kidd@pobox.com>.
--It may be distributed under the same terms as the rest of xmlrpc-c.
-diff --git a/libs/xmlrpc-c/tools/xmlrpc/.cvsignore b/libs/xmlrpc-c/tools/xmlrpc/.cvsignore
-deleted file mode 100644
-index 73a3b1b..0000000
---- a/libs/xmlrpc-c/tools/xmlrpc/.cvsignore
-+++ /dev/null
-@@ -1 +0,0 @@
--xmlrpc
-diff --git a/libs/xmlrpc-c/tools/xmlrpc/Makefile b/libs/xmlrpc-c/tools/xmlrpc/Makefile
-index c1f3b34..a8b3372 100644
---- a/libs/xmlrpc-c/tools/xmlrpc/Makefile
-+++ b/libs/xmlrpc-c/tools/xmlrpc/Makefile
-@@ -21,8 +21,6 @@ INCLUDES = \
-   -Isrcdir/include \
-   -Isrcdir/lib/util/include
--CFLAGS = $(CFLAGS_COMMON) $(INCLUDES) $(CFLAGS_PERSONAL) $(CADD)
--
- LDFLAGS = $(LADD)
- all: xmlrpc
-@@ -36,7 +34,7 @@ UTIL_OBJS = \
- UTILS = $(UTIL_OBJS:%=$(UTIL_DIR)/%)
--DUMPVALUE = srcdir/tools/lib/dumpvalue.o
-+DUMPVALUE = blddir/tools/lib/dumpvalue.o
- # Can we just use $(LIBS) in the link?
-@@ -48,14 +46,14 @@ xmlrpc: $(XMLRPC_OBJS) $(LIBS) $(UTILS)
-       $(CCLD) -o $@ $(LDFLAGS) $(XMLRPC_OBJS) $(UTILS) $(CLIENT_LDLIBS)
- %.o:%.c $(BLDDIR)/include/xmlrpc-c/config.h
--      $(CC) -c $(CFLAGS) $<
-+      $(CC) -c $(CFLAGS_ALL) $<
- # This common.mk dependency makes sure the symlinks get built before
- # this make file is used for anything.
- $(SRCDIR)/tools/common.mk: srcdir blddir
--include Makefile.depend
-+include depend.mk
- .PHONY: dep
- dep: dep-common
-diff --git a/libs/xmlrpc-c/tools/xmlrpc/Makefile.depend b/libs/xmlrpc-c/tools/xmlrpc/Makefile.depend
-deleted file mode 100644
-index e69de29..0000000
-diff --git a/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.c b/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.c
-index c768b7b..06da3e5 100644
---- a/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.c
-+++ b/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.c
-@@ -35,7 +35,7 @@
- */
--//#define _GNU_SOURCE
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
- #include <stdlib.h>
- #include <stdio.h>
-@@ -55,6 +55,7 @@
- #include "xmlrpc-c/base.h"
- #include "xmlrpc-c/client.h"
-+#include "xmlrpc-c/string_int.h"
- #define NAME "xmlrpc command line program"
- #define VERSION "1.0"
-@@ -260,6 +261,33 @@ buildString(xmlrpc_env *    const envP,
- static void
-+interpretHex(xmlrpc_env *    const envP,
-+             const char *    const valueString,
-+             size_t          const valueStringSize,
-+             unsigned char * const byteString) {
-+
-+    size_t bsCursor;
-+    size_t strCursor;
-+
-+    for (strCursor = 0, bsCursor = 0;
-+         strCursor < valueStringSize && !envP->fault_occurred;
-+        ) {
-+        int rc;
-+
-+        rc = sscanf(&valueString[strCursor], "%2hhx",
-+                    &byteString[bsCursor++]);
-+
-+        if (rc != 1)
-+            xmlrpc_faultf(envP, "Invalid hex data '%s'",
-+                          &valueString[strCursor]);
-+        else
-+            strCursor += 2;
-+    }
-+}
-+
-+
-+
-+static void
- buildBytestring(xmlrpc_env *    const envP,
-                 const char *    const valueString,
-                 xmlrpc_value ** const paramPP) {
-@@ -269,33 +297,25 @@ buildBytestring(xmlrpc_env *    const envP,
-     if (valueStringSize / 2 * 2 != valueStringSize)
-         xmlrpc_faultf(envP, "Hexadecimal text is not an even "
-                       "number of characters (it is %u characters)",
--                      strlen(valueString));
-+                      (unsigned)strlen(valueString));
-     else {
-         size_t const byteStringSize = strlen(valueString)/2;
-         
--        unsigned char byteString[byteStringSize];
--        size_t bsCursor;
--        size_t strCursor;
--
--        strCursor = 0;
--        bsCursor = 0;
-+        unsigned char * byteString;
--        while (strCursor < valueStringSize && !envP->fault_occurred) {
--            int rc;
-+        MALLOCARRAY(byteString, byteStringSize);
--            assert(bsCursor < byteStringSize);
-+        if (byteString == NULL)
-+            xmlrpc_faultf(envP, "Failed to allocate %u-byte buffer",
-+                          (unsigned)byteStringSize);
-+        else {
-+            interpretHex(envP, valueString, valueStringSize, byteString);
--            rc = sscanf(&valueString[strCursor], "%2hhx",
--                        &byteString[bsCursor++]);
-+            if (!envP->fault_occurred)
-+                *paramPP = xmlrpc_base64_new(envP, byteStringSize, byteString);
--            if (rc != 1)
--                xmlrpc_faultf(envP, "Invalid hex data '%s'",
--                              &valueString[strCursor]);
--            else
--                strCursor += 2;
-+            free(byteString);
-         }
--        if (!envP->fault_occurred)
--            *paramPP = xmlrpc_base64_new(envP, byteStringSize, byteString);
-     }
- }
-@@ -409,19 +429,19 @@ computeParameter(xmlrpc_env *    const envP,
-                  const char *    const paramArg,
-                  xmlrpc_value ** const paramPP) {
--    if (strncmp(paramArg, "s/", 2) == 0)
-+    if (xmlrpc_strneq(paramArg, "s/", 2))
-         buildString(envP, &paramArg[2], paramPP);
--    else if (strncmp(paramArg, "h/", 2) == 0)
-+    else if (xmlrpc_strneq(paramArg, "h/", 2))
-         buildBytestring(envP, &paramArg[2], paramPP);
--    else if (strncmp(paramArg, "i/", 2) == 0) 
-+    else if (xmlrpc_strneq(paramArg, "i/", 2)) 
-         buildInt(envP, &paramArg[2], paramPP);
--    else if (strncmp(paramArg, "I/", 2) == 0) 
-+    else if (xmlrpc_strneq(paramArg, "I/", 2)) 
-         buildI8(envP, &paramArg[2], paramPP);
--    else if (strncmp(paramArg, "d/", 2) == 0) 
-+    else if (xmlrpc_strneq(paramArg, "d/", 2)) 
-         buildDouble(envP, &paramArg[2], paramPP);
--    else if (strncmp(paramArg, "b/", 2) == 0)
-+    else if (xmlrpc_strneq(paramArg, "b/", 2))
-         buildBool(envP, &paramArg[2], paramPP);
--    else if (strncmp(paramArg, "n/", 2) == 0)
-+    else if (xmlrpc_strneq(paramArg, "n/", 2))
-         buildNil(envP, &paramArg[2], paramPP);
-     else {
-         /* It's not in normal type/value format, so we take it to be
-diff --git a/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.html b/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.html
-index 07119c8..55315d5 100644
---- a/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.html
-+++ b/libs/xmlrpc-c/tools/xmlrpc/xmlrpc.html
-@@ -34,7 +34,7 @@ http://gggeek.damacom.it/debugger/</a>
- <pre>
- <tt>
--     $ xmlrpc http://xmlrpc.server.net/~bryanh echostring \
-+     $ xmlrpc http://xmlrpc.example.com/~bryanh echostring \
-          &quot;s/This is a string&quot;
-      Result:
-        String: This is a string
-@@ -44,7 +44,7 @@ http://gggeek.damacom.it/debugger/</a>
- <pre>
- <tt>
--     $ xmlrpc http://xmlrpc.server.net/~bryanh echostring \
-+     $ xmlrpc http://xmlrpc.example.com/~bryanh echostring \
-          &quot;This is a string in shortcut syntax&quot;
-      Result:
-        String: This is a string in shortcut syntax
-@@ -53,7 +53,7 @@ http://gggeek.damacom.it/debugger/</a>
- </pre>
- <pre>
- <tt>
--     $ xmlrpc http://xmlrpc.server.net sample.add i/3 i/5 \
-+     $ xmlrpc http://xmlrpc.example.com sample.add i/3 i/5 \
-          transport=curl -curlinterface=eth1 -username=bryanh -password=passw0rd
-        Result:
-          Integer: 8
-diff --git a/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/Makefile b/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/Makefile
-index d6f50a6..fec3cb8 100644
---- a/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/Makefile
-+++ b/libs/xmlrpc-c/tools/xmlrpc_cpp_proxy/Makefile
-@@ -14,9 +14,11 @@ PROGRAMS_TO_INSTALL = xmlrpc_cpp_proxy
- include $(SRCDIR)/tools/common.mk
--INCLUDES = -I$(BLDDIR) -I$(BLDDIR)/include -I$(SRCDIR)/include
-+# <sstream.h> in Glibc 2.2 has a bug that results in inlining failure,
-+# so we disable warnings for that:
-+CFLAGS_LOCAL = -Wno-inline
--CXXFLAGS = $(INCLUDES) $(CXXFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
-+INCLUDES = -I$(BLDDIR) -I$(BLDDIR)/include -Isrcdir/include
- LDFLAGS = $(LADD)
-@@ -43,14 +45,14 @@ xmlrpc_cpp_proxy:  $(OBJECTS) $(LIBS)
-       $(CXXLD) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) $(LADD)
- %.o:%.cpp $(BLDDIR)/include/xmlrpc-c/config.h
--      $(CXX) -c $(CXXFLAGS) $<
-+      $(CXX) -c $(CXXFLAGS_ALL) $<
- # This common.mk dependency makes sure the symlinks get built before
- # this make file is used for anything.
- $(SRCDIR)/tools/common.mk: srcdir blddir
--include Makefile.depend
-+include depend.mk
- .PHONY: clean
- clean: clean-common
-diff --git a/libs/xmlrpc-c/tools/xmlrpc_pstream/Makefile b/libs/xmlrpc-c/tools/xmlrpc_pstream/Makefile
-index 2fb24fb..9a538fc 100644
---- a/libs/xmlrpc-c/tools/xmlrpc_pstream/Makefile
-+++ b/libs/xmlrpc-c/tools/xmlrpc_pstream/Makefile
-@@ -23,15 +23,13 @@ INCLUDES = \
-   -Iblddir/include \
-   -Isrcdir/include \
--CXXFLAGS = $(INCLUDES) $(CXXFLAGS_COMMON) $(CFLAGS_PERSONAL) $(CADD)
--
- LDFLAGS = $(LADD)
- all: xmlrpc_pstream
- OBJECTS = \
-   xmlrpc_pstream.o \
--  $(TOOLSDIR)/lib/dumpvalue.o \
-+  blddir/tools/lib/dumpvalue.o \
- LIBS = \
-   $(LIBXMLRPC_CLIENTPP) \
-@@ -57,14 +55,14 @@ xmlrpc_pstream:  $(OBJECTS) $(LIBS) $(UTILS)
-       $(CXXLD) -o $@ $(LDFLAGS) $(OBJECTS) $(UTILS) $(LDLIBS) $(LADD)
- %.o:%.cpp blddir/include/xmlrpc-c/config.h
--      $(CXX) -c $(CXXFLAGS) $<
-+      $(CXX) -c $(CXXFLAGS_ALL) $<
- # This common.mk dependency makes sure the symlinks get built before
- # this make file is used for anything.
--$(SRCDIR)/common.mk: srcdir blddir
-+$(SRCDIR)/tools/common.mk: srcdir blddir
--include Makefile.depend
-+include depend.mk
- .PHONY: clean
- clean: clean-common
-diff --git a/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.cpp b/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.cpp
-index 399e1b3..1417708 100644
---- a/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.cpp
-+++ b/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.cpp
-@@ -3,9 +3,10 @@
- #include <string>
- #include <vector>
- #include <list>
--#include <string.h>
--#include <stdio.h>
--#include <stdlib.h>
-+#include <cstring>
-+#include <cstdio>
-+#include <cstdlib>
-+#include <iostream>
- #include <unistd.h>
- #include <signal.h>
- #include <readline/readline.h>
-diff --git a/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.html b/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.html
-index ca4d859..5604d2b 100644
---- a/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.html
-+++ b/libs/xmlrpc-c/tools/xmlrpc_pstream/xmlrpc_pstream.html
-@@ -121,7 +121,7 @@ You may specify no parameters if you like.
- a slash.  Example: <b>i/5</b>.  Here, the &quot;i&quot; signifies an
- integer data type.  &quot;5&quot; is the value.
--<p><b>xmlrpc</b> is capable of only a subset of the 
-+<p><b>xmlrpc_pstream</b> is capable of only a subset of the 
- possible XML-RPC types, as follows by prefix:
- <dl>
-diff --git a/libs/xmlrpc-c/tools/xmlrpc_transport/.cvsignore b/libs/xmlrpc-c/tools/xmlrpc_transport/.cvsignore
-deleted file mode 100644
-index bff9884..0000000
---- a/libs/xmlrpc-c/tools/xmlrpc_transport/.cvsignore
-+++ /dev/null
-@@ -1 +0,0 @@
--xmlrpc_transport
-diff --git a/libs/xmlrpc-c/tools/xmlrpc_transport/Makefile b/libs/xmlrpc-c/tools/xmlrpc_transport/Makefile
-index 9941eb1..d9eefcb 100644
---- a/libs/xmlrpc-c/tools/xmlrpc_transport/Makefile
-+++ b/libs/xmlrpc-c/tools/xmlrpc_transport/Makefile
-@@ -17,10 +17,8 @@ include $(SRCDIR)/tools/common.mk
- INCLUDES = \
-   -I$(BLDDIR) \
-   -I$(BLDDIR)/include \
--  -I$(SRCDIR)/include \
--  -I$(SRCDIR)/lib/util/include
--
--CFLAGS = $(CFLAGS_COMMON) $(INCLUDES) $(CFLAGS_PERSONAL) $(CADD)
-+  -Isrcdir/include \
-+  -Isrcdir/lib/util/include
- LDFLAGS = $(LADD)
-@@ -35,27 +33,20 @@ UTIL_OBJS = \
- UTILS = $(UTIL_OBJS:%=$(UTIL_DIR)/%)
--# These are the Libtool .la files.  We use them only for make dependencies.
--# We'd like to use these in the link rule, by using libtool --link, but
--# Libtool adds -l options to the link to cover the dependencies that are
--# recorded inside the shared libraries.  And it doesn't add the necessary
--# -L options (it can't), so we end up with a messy mixture of the two
--# forms of specifying libraries.
--
- LIBS = $(LIBXMLRPC_CLIENT) $(LIBXMLRPC) $(LIBXMLRPC_XML) $(LIBXMLRPC_UTIL)
- xmlrpc_transport:%:%.o $(LIBS) $(UTILS)
-       $(CCLD) -o $@ $(LDFLAGS) $< $(CLIENT_LDLIBS) $(UTILS)
- %.o:%.c
--      $(CC) -c $(CFLAGS) $<
-+      $(CC) -c $(CFLAGS_ALL) $<
- # This common.mk dependency makes sure the symlinks get built before
- # this make file is used for anything.
- $(SRCDIR)/tools/common.mk: srcdir blddir
--include Makefile.depend
-+include depend.mk
- .PHONY: dep
- dep: dep-common
-diff --git a/libs/xmlrpc-c/tools/xmlrpc_transport/Makefile.depend b/libs/xmlrpc-c/tools/xmlrpc_transport/Makefile.depend
-deleted file mode 100644
-index e69de29..0000000
-diff --git a/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport b/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport
-deleted file mode 100755
-index e002ec0..0000000
---- a/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport
-+++ /dev/null
-@@ -1,120 +0,0 @@
--#! /bin/sh
--
--# xmlrpc_transport - temporary wrapper script for .libs/xmlrpc_transport
--# Generated by ltmain.sh - GNU libtool 1.3.4 (1.385.2.196 1999/12/07 21:47:57)
--#
--# The xmlrpc_transport program cannot be directly executed until all the libtool
--# libraries that it depends on are installed.
--#
--# This wrapper script should never be moved out of the build directory.
--# If it is, it will not operate correctly.
--
--# Sed substitution that helps us do robust quoting.  It backslashifies
--# metacharacters that are still active within double-quoted strings.
--Xsed='sed -e 1s/^X//'
--sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
--
--# The HP-UX ksh and POSIX shell print the target directory to stdout
--# if CDPATH is set.
--if test "${CDPATH+set}" = set; then CDPATH=:; export CDPATH; fi
--
--relink_command="gcc -o \$progdir/\$file -L /usr/link/w3c-libwww -lwwwxml -lxmltok -lxmlparse -lwwwzip -lwwwinit -lwwwapp -lwwwhtml -lwwwtelnet -lwwwnews -lwwwhttp -lwwwmime -lwwwgopher -lwwwftp -lwwwfile -lwwwdir -lwwwcache -lwwwstream -lwwwmux -lwwwtrans -lwwwcore -lwwwutils -lmd5 -ldl -lz -L /subsys/openssl/link -lssl -lcrypto -L/subsys/curl/lib -lcurl -lssl -lcrypto -ldl -lz -lpthread xmlrpc_transport.o /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../src/.libs/libxmlrpc_client.so /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../src/.libs/libxmlrpc.so /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../lib/expat/xmlparse/.libs/libxmlrpc_xmlparse.so /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../lib/expat/xmltok/.libs/libxmlrpc_xmltok.so /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../lib/util/cmdline_parser.o /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../lib/util/getoptx.o -Wl,--rpath -Wl,/mp/hdc1/xmlrpc-c-1.03.14/src/.libs -Wl,--rpath -Wl,/mp/hdc1/xmlrpc-c-1.03.14/lib/expat/xmlparse/.libs -Wl,--rpath -Wl,/mp/hdc1/xmlrpc-c-1.03.14/lib/expat/xmltok/.libs -Wl,--rpath -Wl,/usr/local/lib"
--
--# This environment variable determines our operation mode.
--if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
--  # install mode needs the following variable:
--  link_against_libtool_libs=' /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../src/libxmlrpc_client.la /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../src/libxmlrpc.la /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../lib/expat/xmlparse/libxmlrpc_xmlparse.la /mp/hdc1/xmlrpc-c-1.03.14/tools/xmlrpc_transport/../../lib/expat/xmltok/libxmlrpc_xmltok.la'
--else
--  # When we are sourced in execute mode, $file and $echo are already set.
--  if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
--    echo="/syspathbasic/echo"
--    file="$0"
--    # Make sure echo works.
--    if test "X$1" = X--no-reexec; then
--      # Discard the --no-reexec flag, and continue.
--      shift
--    elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
--      # Yippee, $echo works!
--      :
--    else
--      # Restart under the correct shell, and then maybe $echo will work.
--      exec /bin/sh "$0" --no-reexec ${1+"$@"}
--    fi
--  fi
--
--  # Find the directory that this script lives in.
--  thisdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
--  test "x$thisdir" = "x$file" && thisdir=.
--
--  # Follow symbolic links until we get to the real thisdir.
--  file=`ls -ld "$file" | sed -n 's/.*-> //p'`
--  while test -n "$file"; do
--    destdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
--
--    # If there was a directory component, then change thisdir.
--    if test "x$destdir" != "x$file"; then
--      case "$destdir" in
--      [\/]* | [A-Za-z]:[\/]*) thisdir="$destdir" ;;
--      *) thisdir="$thisdir/$destdir" ;;
--      esac
--    fi
--
--    file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
--    file=`ls -ld "$thisdir/$file" | sed -n 's/.*-> //p'`
--  done
--
--  # Try to get the absolute directory name.
--  absdir=`cd "$thisdir" && pwd`
--  test -n "$absdir" && thisdir="$absdir"
--
--  program=lt-'xmlrpc_transport'
--  progdir="$thisdir/.libs"
--  
--  if test ! -f "$progdir/$program" || \
--     { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | sed 1q`; \
--       test "X$file" != "X$progdir/$program"; }; then
--
--    file="$$-$program"
--
--    if test ! -d "$progdir"; then
--      mkdir "$progdir"
--    else
--      rm -f "$progdir/$file"
--    fi
--
--    # relink executable if necessary
--    if test -n "$relink_command"; then
--      if (cd "$thisdir" && eval $relink_command); then :
--      else
--      rm -f "$progdir/$file"
--      exit 1
--      fi
--    fi
--
--    mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
--    { rm -f "$progdir/$program";
--      mv -f "$progdir/$file" "$progdir/$program"; }
--    rm -f "$progdir/$file"
--  fi
--
--  if test -f "$progdir/$program"; then
--    if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
--      # Run the actual program with our arguments.
--
--      # Export the path to the program.
--      PATH="$progdir:$PATH"
--      export PATH
--
--      exec $program ${1+"$@"}
--
--      $echo "$0: cannot exec $program ${1+"$@"}"
--      exit 1
--    fi
--  else
--    # The program doesn't exist.
--    $echo "$0: error: $progdir/$program does not exist" 1>&2
--    $echo "This script is just a wrapper for $program." 1>&2
--    echo "See the libtool documentation for more information." 1>&2
--    exit 1
--  fi
--fi
-diff --git a/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport.c b/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport.c
-index 0fe671d..39697b4 100644
---- a/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport.c
-+++ b/libs/xmlrpc-c/tools/xmlrpc_transport/xmlrpc_transport.c
-@@ -2,7 +2,7 @@
-    an XML-RPC call.
- */
--//#define _GNU_SOURCE
-+#define _XOPEN_SOURCE 600  /* Make sure strdup() is in <string.h> */
- #include <stdlib.h>
- #include <stdio.h>
-diff --git a/libs/xmlrpc-c/transport_config.make b/libs/xmlrpc-c/transport_config.make
-deleted file mode 100644
-index 5791af6..0000000
---- a/libs/xmlrpc-c/transport_config.make
-+++ /dev/null
-@@ -1,39 +0,0 @@
--# -*-makefile-*-    <-- an Emacs control
--
--
--# The make variables herein come from config.mk, which is included
--# by the make file that includes us.
--
--transport_config.h: $(BLDDIR)/config.mk
--      rm -f $@
--      echo '/* This file was generated by a make rule */' >>$@
--ifeq ($(MUST_BUILD_WININET_CLIENT),yes)
--      echo '#define MUST_BUILD_WININET_CLIENT 1' >>$@
--else
--      echo '#define MUST_BUILD_WININET_CLIENT 0' >>$@
--endif
--ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
--      echo '#define MUST_BUILD_CURL_CLIENT 1' >>$@
--else
--      echo '#define MUST_BUILD_CURL_CLIENT 0' >>$@
--endif
--ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
--      echo '#define MUST_BUILD_LIBWWW_CLIENT 1' >>$@
--else
--      echo '#define MUST_BUILD_LIBWWW_CLIENT 0' >>$@
--endif
--      echo "static const char * const XMLRPC_DEFAULT_TRANSPORT =" >>$@
--ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
--      echo '"libwww";' >>$@
--else
--  ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
--      echo '"curl";' >>$@
--  else
--    ifeq ($(MUST_BUILD_WININET_CLIENT),yes)
--      echo '"wininet";' >>$@
--    else
--      @echo 'ERROR: no client XML transport configured'; rm $@; false
--    endif
--  endif
--endif
--
-diff --git a/libs/xmlrpc-c/transport_config.mk b/libs/xmlrpc-c/transport_config.mk
-new file mode 100644
-index 0000000..5791af6
---- /dev/null
-+++ b/libs/xmlrpc-c/transport_config.mk
-@@ -0,0 +1,39 @@
-+# -*-makefile-*-    <-- an Emacs control
-+
-+
-+# The make variables herein come from config.mk, which is included
-+# by the make file that includes us.
-+
-+transport_config.h: $(BLDDIR)/config.mk
-+      rm -f $@
-+      echo '/* This file was generated by a make rule */' >>$@
-+ifeq ($(MUST_BUILD_WININET_CLIENT),yes)
-+      echo '#define MUST_BUILD_WININET_CLIENT 1' >>$@
-+else
-+      echo '#define MUST_BUILD_WININET_CLIENT 0' >>$@
-+endif
-+ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
-+      echo '#define MUST_BUILD_CURL_CLIENT 1' >>$@
-+else
-+      echo '#define MUST_BUILD_CURL_CLIENT 0' >>$@
-+endif
-+ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
-+      echo '#define MUST_BUILD_LIBWWW_CLIENT 1' >>$@
-+else
-+      echo '#define MUST_BUILD_LIBWWW_CLIENT 0' >>$@
-+endif
-+      echo "static const char * const XMLRPC_DEFAULT_TRANSPORT =" >>$@
-+ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
-+      echo '"libwww";' >>$@
-+else
-+  ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
-+      echo '"curl";' >>$@
-+  else
-+    ifeq ($(MUST_BUILD_WININET_CLIENT),yes)
-+      echo '"wininet";' >>$@
-+    else
-+      @echo 'ERROR: no client XML transport configured'; rm $@; false
-+    endif
-+  endif
-+endif
-+
-diff --git a/libs/xmlrpc-c/unix-common.make b/libs/xmlrpc-c/unix-common.make
-deleted file mode 100644
-index b684c70..0000000
---- a/libs/xmlrpc-c/unix-common.make
-+++ /dev/null
-@@ -1,79 +0,0 @@
--# -*-makefile-*-    <-- an Emacs control
--
--# The including make file must define these make variables:
--#
--# SHARED_LIBS_TO_BUILD: List of the shared libraries that need to be
--#   built -- just the basic library names.  E.g. "libfoo libbar"
--#
--# SHARED_LIBS_TO_INSTALL: List of the shared libraries that need to be
--#   installed -- just the basic library names.  E.g. "libfoo libbar"
--#
--# SHLIB_SUFFIX: Shared library filename suffix, e.g. "so".
--#
--# MAJ: Library major version number, e.g. "3" in file name "libfoo.3.1"
--#
--# MIN: Library minor version number, e.g. "1" in file name "libfoo.3.1"
--#
--# LDFLAGS_SHLIB: linker (Ld) flags needed to link object files together into
--#   a shared library.  May use $(SONAME) for the soname of the library.
--#   Include -lc if appropriate.
--#
--# LADD: Additional linker flags (normally set on the make command line).
--#
--# INSTALL_DATA: beginning of shell command to install a library file.
--#
--# DESTDIR: main installation directory
--#
--# LIBINST_DIR: directory in which to install libraries, relative to DESTDIR.
--#
--# LN_S: beginning of shell command to make symbolic link (e.g. "ln -s").
--#
--# CXXLD: beginning of shell command to link, e.g. "g++".
--
--# This make file defines these make variables that the including make file
--# can use:
--#
--#   SHLIB_CMD: a command to build a shared library for C linkage
--#     You can use this in a rule to build a shared library
--#   SHLIBPP_CMD: Same, but for C++ linkage
--
--# Including make file must contain a rule to build each library file
--# (e.g. libfoo.3.1)
--
--# This make file provides these rules:
--#
--# install-shared-libraries: install all shared libraries and the necessary
--# symbolic links.
--
--# SONAME is to be referenced by $(LDFLAGS_SHLIB) in $(SHLIB_RULE)
--# SONAME is the name of the library file being built, with the minor
--#   version number cut off.  E.g. if we're building libfoo.so.1.2, SONAME
--#   is libfoo.so.1 .
--SONAME = $(@:%.$(MIN)=%)
--
--SHLIB_CMD = $(CCLD) $(LDFLAGS_SHLIB) -o $@ $^ $(LADD)
--
--SHLIB_LE_TARGETS = $(call shliblefn, $(SHARED_LIBS_TO_BUILD))
--
--$(SHLIB_LE_TARGETS):%:%.$(MAJ).$(MIN)
--      rm -f $@
--      $(LN_S) $< $@
--
--.PHONY: $(SHLIB_INSTALL_TARGETS)
--.PHONY: install-shared-libraries
--
--SHLIB_INSTALL_TARGETS = $(SHARED_LIBS_TO_INSTALL:%=%/install)
--
--#SHLIB_INSTALL_TARGETS is like "libfoo/install libbar/install"
--
--install-shared-libraries: $(SHLIB_INSTALL_TARGETS)
--
--$(SHLIB_INSTALL_TARGETS):%/install:%.$(SHLIB_SUFFIX).$(MAJ).$(MIN)
--# $< is a library file name, e.g. libfoo.so.3.1 .
--      $(INSTALL_SHLIB) $< $(DESTDIR)$(LIBINST_DIR)/$<
--      cd $(DESTDIR)$(LIBINST_DIR); \
--        rm -f $(<:%.$(MIN)=%); \
--          $(LN_S) $< $(<:%.$(MIN)=%)
--      cd $(DESTDIR)$(LIBINST_DIR); \
--        rm -f $(<:%.$(MAJ).$(MIN)=%); \
--          $(LN_S) $(<:%.$(MIN)=%) $(<:%.$(MAJ).$(MIN)=%)
-diff --git a/libs/xmlrpc-c/unix-common.mk b/libs/xmlrpc-c/unix-common.mk
-new file mode 100644
-index 0000000..8f5016c
---- /dev/null
-+++ b/libs/xmlrpc-c/unix-common.mk
-@@ -0,0 +1,82 @@
-+# -*-makefile-*-    <-- an Emacs control
-+
-+# The including make file must define these make variables:
-+#
-+# SHARED_LIBS_TO_BUILD: List of the shared libraries that need to be
-+#   built -- just the basic library names.  E.g. "libfoo libbar"
-+#
-+# SHARED_LIBS_TO_INSTALL: List of the shared libraries that need to be
-+#   installed -- just the basic library names.  E.g. "libfoo libbar"
-+#
-+# SHLIB_SUFFIX: Shared library filename suffix, e.g. "so".
-+#
-+# MAJ: Library major version number, e.g. "3" in file name "libfoo.3.1"
-+#
-+# MIN: Library minor version number, e.g. "1" in file name "libfoo.3.1"
-+#
-+# LDFLAGS_SHLIB: linker (Ld) flags needed to link object files together into
-+#   a shared library.  May use $(SONAME) for the soname of the library.
-+#   Include -lc if appropriate.
-+#
-+# LADD: Additional linker flags (normally set on the make command line).
-+#
-+# INSTALL_DATA: beginning of shell command to install a library file.
-+#
-+# DESTDIR: main installation directory
-+#
-+# LIBINST_DIR: directory in which to install libraries, relative to DESTDIR.
-+#
-+# LN_S: beginning of shell command to make symbolic link (e.g. "ln -s").
-+#
-+# CXXLD: beginning of shell command to link, e.g. "g++".
-+
-+# This make file defines these make variables that the including make file
-+# can use:
-+#
-+#   SHLIB_CMD: a command to build a shared library for C linkage
-+#     You can use this in a rule to build a shared library
-+#   SHLIBPP_CMD: Same, but for C++ linkage
-+
-+# Including make file must contain a rule to build each library file
-+# (e.g. libfoo.3.1)
-+
-+# This make file provides these rules:
-+#
-+# install-shared-libraries: install all shared libraries and the necessary
-+# symbolic links.
-+
-+# SONAME is to be referenced by $(LDFLAGS_SHLIB) in the rule to make
-+# a shared library (in common.mk).  I.e. $@ is the name of the shared
-+# library file.
-+
-+# SONAME is the name of the library file being built, with the minor
-+#   version number cut off.  E.g. if we're building libfoo.so.1.2, SONAME
-+#   is libfoo.so.1 .
-+SONAME = $(@:%.$(MIN)=%)
-+
-+SHLIB_CMD = $(CCLD) $(LADD) $(LDFLAGS_SHLIB) -o $@ $^ 
-+
-+SHLIB_LE_TARGETS = $(call shliblefn, $(SHARED_LIBS_TO_BUILD))
-+
-+$(SHLIB_LE_TARGETS):%:%.$(MAJ).$(MIN)
-+      rm -f $@
-+      $(LN_S) $< $@
-+
-+.PHONY: $(SHLIB_INSTALL_TARGETS)
-+.PHONY: install-shared-libraries
-+
-+SHLIB_INSTALL_TARGETS = $(SHARED_LIBS_TO_INSTALL:%=%/install)
-+
-+#SHLIB_INSTALL_TARGETS is like "libfoo/install libbar/install"
-+
-+install-shared-libraries: $(SHLIB_INSTALL_TARGETS)
-+
-+$(SHLIB_INSTALL_TARGETS):%/install:%.$(SHLIB_SUFFIX).$(MAJ).$(MIN)
-+# $< is a library file name, e.g. libfoo.so.3.1 .
-+      $(INSTALL_SHLIB) $< $(DESTDIR)$(LIBINST_DIR)/$<
-+      cd $(DESTDIR)$(LIBINST_DIR); \
-+        rm -f $(<:%.$(MIN)=%); \
-+          $(LN_S) $< $(<:%.$(MIN)=%)
-+      cd $(DESTDIR)$(LIBINST_DIR); \
-+        rm -f $(<:%.$(MAJ).$(MIN)=%); \
-+          $(LN_S) $(<:%.$(MIN)=%) $(<:%.$(MAJ).$(MIN)=%)
-diff --git a/libs/xmlrpc-c/version.h b/libs/xmlrpc-c/version.h
-deleted file mode 100644
-index 18e70f2..0000000
---- a/libs/xmlrpc-c/version.h
-+++ /dev/null
-@@ -1,8 +0,0 @@
--#ifndef XMLRPC_C_VERSION_INCLUDED 
--#define XMLRPC_C_VERSION_INCLUDED 
--/* generated by Windows/mkvers.bat on Fri 05/23/2008 ... */ 
--#define XMLRPC_C_VERSION "Xmlrpc-c 1.14.99" 
--#define XMLRPC_VERSION_MAJOR 1 
--#define XMLRPC_VERSION_MINOR 14 
--#define XMLRPC_VERSION_POINT 99 
--#endif 
-diff --git a/libs/xmlrpc-c/version.mk b/libs/xmlrpc-c/version.mk
-new file mode 100644
-index 0000000..b59310a
---- /dev/null
-+++ b/libs/xmlrpc-c/version.mk
-@@ -0,0 +1,11 @@
-+###############################################################################
-+# This is not only a make file inclusion, but a source file for the program
-+# 'mkvers' in the Windows build system.  The latter is very particular about
-+# the format of this file.  Do not change white space, add comment lines, or
-+# anything!
-+#
-+#
-+###############################################################################
-+XMLRPC_MAJOR_RELEASE = 1
-+XMLRPC_MINOR_RELEASE = 26
-+XMLRPC_POINT_RELEASE = 0
-diff --git a/libs/xmlrpc-c/xmlrpc-c-config.in b/libs/xmlrpc-c/xmlrpc-c-config.in
-deleted file mode 100644
-index 2095b5f..0000000
---- a/libs/xmlrpc-c/xmlrpc-c-config.in
-+++ /dev/null
-@@ -1,180 +0,0 @@
--#!/bin/sh
--# Stolen from rep-config and adapted for use with xmlrpc-c.
--# Other bits stolen from gnome-config & automake output.
--
--prefix=@prefix@
--exec_prefix=@exec_prefix@
--
--bindir=@bindir@
--sbindir=@sbindir@
--libexecdir=@libexecdir@
--datadir=@datadir@
--sysconfdir=@sysconfdir@
--sharedstatedir=@sharedstatedir@
--localstatedir=@localstatedir@
--libdir=@libdir@
--infodir=@infodir@
--mandir=@mandir@
--includedir=@includedir@
--
--pkgdatadir=$datadir/@PACKAGE@
--pkglibdir=$libdir/@PACKAGE@
--pkgincludedir=$includedir/@PACKAGE@
--
--ENABLE_LIBXML2_BACKEND="@ENABLE_LIBXML2_BACKEND@"
--MUST_BUILD_CURL_CLIENT="@MUST_BUILD_CURL_CLIENT@"
--MUST_BUILD_WININET_CLIENT="@MUST_BUILD_WININET_CLIENT@"
--MUST_BUILD_LIBWWW_CLIENT="@MUST_BUILD_LIBWWW_CLIENT@"
--
--usage="Usage: xmlrpc-c-config <feature> ... <option> ...
--
--The features are:
--  c++            legacy C++ wrapper API
--  c++2           modern C++ API
--  client         client functions
--  cgi-server     CGI-based server functions
--  abyss-server   ABYSS-based server functions
--
--Options are:
--  --version      The version number of the package
--  --features     List all features (aka modules) currently installed
--  --cflags       C compiler flags to use when '#include'ing package headers
--  --libs         Libraries and flags to use when linking programs normally
--  --ldadd        Libraries to use with automake
--  --ldflags      Flags to use with automake & libtool
--  --prefix       The prefix under which the package was installed
--  --exec-prefix  The executable prefix under which the package was installed
--  --*dir         The various directories under which the package was installed"
--
--if test $# -eq 0; then
--      echo "${usage}" 1>&2
--      exit 1
--fi
--
--if test "${ENABLE_LIBXML2_BACKEND}" = "yes"; then
--  LIBXML="@LIBXML2_LIBS@"
--else
--  LIBXML="-lxmlrpc_xmlparse -lxmlrpc_xmltok"
--fi
--
--needCpp=no
--
--the_libdirs="-L@libdir@"
--the_libs="-lxmlrpc ${LIBXML}"
--the_rpath=
--the_wl_rpath=
--cpp_libs=
--
--while test $# -gt 0; do
--  case $1 in
--    c++)
--      the_libs="-lxmlrpc_cpp $the_libs"
--
--      # Unfortunately, there is just one legacy CPP library for
--      # everything, and it needs all the C libraries -- base, client,
--      # and server.  So all legacy C++ programs get linked with client
--      # and server libraries, whether they need them or not.
--
--      the_libs="-lxmlrpc_server_abyss $the_libs"
--      the_libs="-lxmlrpc_server $the_libs"
--      the_libs="-lxmlrpc_client $the_libs"
--      ;;
--    c++2)
--      needCpp=yes
--      the_libs="-lxmlrpc++ $the_libs"
--      ;;
--    cgi-server)
--      the_libs="-lxmlrpc_server $the_libs"
--      the_libs="-lxmlrpc_server_cgi $the_libs"
--      ;;
--    abyss-server)
--      the_libs="@LIBABYSS_LDADD@ $the_libs"
--      the_libs="-lxmlrpc_abyss $the_libs"
--      the_libs="-lxmlrpc_server $the_libs"
--      the_libs="-lxmlrpc_server_abyss $the_libs"
--      if test "${needCpp}" = "yes"; then
--        the_libs="-lxmlrpc_server++ $the_libs"
--        the_libs="-lxmlrpc_server_abyss++ $the_libs"
--        fi
--      ;;
--    client|libwww-client)
--      # libwww-client is for backward compatibility
--      the_libs="-lxmlrpc_client $the_libs"
--
--      if test "${MUST_BUILD_WININET_CLIENT}" = "yes"; then
--        the_libs="@WININET_LDADD@ $the_libs"
--        the_rpath="@WININET_RPATH@ $the_rpath"
--        the_wl_rpath="@WININET_WL_RPATH@ $the_wl_rpath"
--      fi
--      if test "${MUST_BUILD_CURL_CLIENT}" = "yes"; then
--        the_libs="@CURL_LDADD@ -lpthread $the_libs"
--        the_rpath="@CURL_RPATH@ $the_rpath"
--        the_wl_rpath="@CURL_WL_RPATH@ $the_wl_rpath"
--      fi
--      if test "${MUST_BUILD_LIBWWW_CLIENT}" = "yes"; then
--        the_libs="@LIBWWW_LDADD@ $the_libs"
--        the_rpath="@LIBWWW_RPATH@ $the_rpath"
--        the_wl_rpath="@LIBWWW_WL_RPATH@ $the_wl_rpath"
--      fi
--      if test "${needCpp}" = "yes"; then
--        the_libs="-lxmlrpc_client++ $the_libs"
--        fi
--      ;;
--    --version)
--      echo "@VERSION@"
--      exit 0
--      ;;
--    --modules)
--      echo "@FEATURE_LIST@"
--      exit 0
--      ;;
--    --features)
--      echo "@FEATURE_LIST@"
--      exit 0
--      ;;
--    --cflags)
--      echo "-I@includedir@"
--      exit 0
--      ;;
--    --libs)
--      echo "$the_libdirs $the_libs $the_wl_rpath"
--      exit 0
--      ;;
--    --ldadd)
--      echo "$the_libdirs $the_libs"
--      exit 0
--      ;;
--    --ldflags)
--      echo "$the_rpath"
--      exit 0
--      ;;
--    --prefix)
--      echo "@prefix@"
--      exit 0
--      ;;
--    --exec-prefix)
--      echo "@exec_prefix@"
--      exit 0
--      ;;
--    --*dir)
--      # Swiped from gnome-config.
--      dirname=\$`echo $1 | sed -e 's,^--,,'`
--      dirname=`eval echo $dirname`
--      test -z "$dirname" && exit 1
--      echo $dirname
--      exit 0
--      ;;
--    --help)
--      echo "${usage}" 1>&2
--      exit 0
--      ;;
--    *)
--      echo "${usage}" 1>&2
--      exit 1
--      ;;
--  esac
--  shift
--done
--
--echo "${usage}" 1>&2
--exit 1
-diff --git a/libs/xmlrpc-c/xmlrpc-c-config.main b/libs/xmlrpc-c/xmlrpc-c-config.main
-index 6fec342..a176410 100644
---- a/libs/xmlrpc-c/xmlrpc-c-config.main
-+++ b/libs/xmlrpc-c/xmlrpc-c-config.main
-@@ -70,14 +70,22 @@ while test $# -gt 0; do
-       ;;
-     c++2)
-       needCpp=yes
--      the_libs="-lxmlrpc++ $the_libs"
-+      the_libs="-l$LIBXMLRPCPP_NAME $the_libs"
-       ;;
-     server-util)
-       the_libs="-lxmlrpc_server $the_libs"
-+      if test "${needCpp}" = "yes"; then
-+        the_libs="-lxmlrpc_server++ $the_libs"
-+        fi
-       ;;
-     cgi-server)
-       the_libs="-lxmlrpc_server $the_libs"
--      the_libs="-lxmlrpc_server_cgi $the_libs"
-+      if test "${needCpp}" = "yes"; then
-+        the_libs="-lxmlrpc_server_cgi++ $the_libs"
-+        the_libs="-lxmlrpc_server++ $the_libs"
-+      else
-+        the_libs="-lxmlrpc_server_cgi $the_libs"
-+        fi
-       ;;
-     abyss-server)
-       if test "${ENABLE_ABYSS_THREADS}" = "yes"; then
-@@ -110,18 +118,18 @@ while test $# -gt 0; do
-       if test "${MUST_BUILD_WININET_CLIENT}" = "yes"; then
-         the_libs="$the_libs $WININET_LDADD"
--        the_rpath="$WININET_RPATH $the_rpath"
--        the_wl_rpath="$WININET_WL_RPATH $the_wl_rpath"
-+        the_rpath="-R$WININET_LIBDIR $the_rpath"
-+        the_wl_rpath="-Wl,-rpath,$WININET_LIBDIR $the_wl_rpath"
-       fi
-       if test "${MUST_BUILD_CURL_CLIENT}" = "yes"; then
-         the_libs="$the_libs $CURL_LDADD"
--        the_rpath="$CURL_RPATH $the_rpath"
--        the_wl_rpath="$CURL_WL_RPATH $the_wl_rpath"
-+        the_rpath="-R$CURL_LIBDIR $the_rpath"
-+        the_wl_rpath="-Wl,-rpath,$CURL_LIBDIR $the_wl_rpath"
-       fi
-       if test "${MUST_BUILD_LIBWWW_CLIENT}" = "yes"; then
-         the_libs="$the_libs $LIBWWW_LDADD"
--        the_rpath="$LIBWWW_RPATH $the_rpath"
--        the_wl_rpath="$LIBWWW_WL_RPATH $the_wl_rpath"
-+        the_rpath="-R$LIBWWW_LIBDIR $the_rpath"
-+        the_wl_rpath="-Wl,-rpath,$LIBWWW_LIBDIR $the_wl_rpath"
-       fi
-       if test "${needCpp}" = "yes"; then
-         the_libs="-lxmlrpc_client++ $the_libs"
-diff --git a/libs/xmlrpc-c/xmlrpc-c-config.test.in b/libs/xmlrpc-c/xmlrpc-c-config.test.in
-deleted file mode 100644
-index 5c88a4c..0000000
---- a/libs/xmlrpc-c/xmlrpc-c-config.test.in
-+++ /dev/null
-@@ -1,153 +0,0 @@
--#!/bin/sh
--# This is like 'xmlrpc-c-config', but for testing Xmlrpc-c from its build
--# directory instead of for an installed instance of Xmlrpc-c.
--#
--# For example, the make file in the examples/ directory uses this program
--# to link the example programs with the Xmlrpc-c libraries in the build
--# directory.  A real application program would instead use xmlrpc-c-config
--# and get the Xmlrpc-c libraries from their installed home.
--
--# @srcdir@ and @top_srcdir@ are useless because they can be relative.
--
--SRCDIR="@BUILDDIR@"  # until we figure out how to do it right
--BUILDDIR="@BUILDDIR@"
--ENABLE_LIBXML2_BACKEND="@ENABLE_LIBXML2_BACKEND@"
--MUST_BUILD_CURL_CLIENT="@MUST_BUILD_CURL_CLIENT@"
--MUST_BUILD_WININET_CLIENT="@MUST_BUILD_WININET_CLIENT@"
--MUST_BUILD_LIBWWW_CLIENT="@MUST_BUILD_LIBWWW_CLIENT@"
--
--if test $# -eq 0; then
--      echo "You need to specify arguments"
--      exit 1
--fi
--
--sopath=
--
--if test "${ENABLE_LIBXML2_BACKEND}" = "yes"; then
--  LIBXML="@LIBXML2_LIBS@"
--else
--  LIBXML="${BUILDDIR}/lib/expat/xmlparse/.libs/libxmlrpc_xmlparse.a"
--  sopath="${BUILDDIR}/lib/expat/xmlparse/.libs:$sopath"
--  LIBXML="${LIBXML} ${BUILDDIR}/lib/expat/xmltok/.libs/libxmlrpc_xmltok.a"
--  sopath="${BUILDDIR}/lib/expat/xmltok/.libs:$sopath"
--fi
--
--needCpp=no
--
--the_libs="${BUILDDIR}/src/.libs/libxmlrpc.a ${LIBXML}"
--the_includes="-I${SRCDIR}/include"
--sopath="${BUILDDIR}/src/.libs:$sopath"
--
--while test $# -gt 0; do
--  case $1 in
--    c++)
--      # Unfortunately, there is just one legacy CPP library for
--      # everything, and it needs all the C libraries -- base, client,
--      # and server.  So all legacy C++ programs get linked with client
--      # and server libraries, whether they need them or not.
--
--      the_libs="${BUILDDIR}/src/.libs/libxmlrpc_server.a $the_libs"
--      the_libs="${BUILDDIR}/src/.libs/libxmlrpc_server_abyss.a $the_libs"
--      the_libs="${BUILDDIR}/src/.libs/libxmlrpc_client.a $the_libs"
--      the_libs="${BUILDDIR}/src/cpp/libxmlrpc_cpp.a $the_libs"
--      ;;
--    c++2)
--      needCpp=yes
--      the_libs="${BUILDDIR}/src/cpp/libxmlrpc++.a $the_libs"
--      ;;
--    cgi-server)
--      the_libs="${BUILDDIR}/src/.libs/libxmlrpc_server.a $the_libs"
--      the_libs="${BUILDDIR}/src/.libs/libxmlrpc_server_cgi.a $the_libs"
--      ;;
--    abyss-server)
--      the_libs="@LIBABYSS_LDADD@ $the_libs"
--      the_libs="${BUILDDIR}/lib/abyss/src/.libs/libxmlrpc_abyss.a $the_libs"
--      the_libs="${BUILDDIR}/src/.libs/libxmlrpc_server.a $the_libs"
--      the_libs="${BUILDDIR}/src/.libs/libxmlrpc_server_abyss.a $the_libs"
--      if test "${needCpp}" = "yes"; then
--        the_libs="${BUILDDIR}/src/cpp/libxmlrpc_server++.a $the_libs"
--        the_libs="${BUILDDIR}/src/cpp/libxmlrpc_server_abyss++.a $the_libs"
--        fi
--      the_includes="-I${SRCDIR}/lib/abyss/src $the_includes"
--      sopath="${BUILDDIR}/lib/abyss/src/.libs:$sopath"
--      ;;
--    client)
--      the_libs="${BUILDDIR}/src/.libs/libxmlrpc_client.a $the_libs"
--      if test "${MUST_BUILD_WININET_CLIENT}" = "yes"; then
--        the_libs="@WININET_LDADD@ $the_libs"
--        the_rpath="@WININET_RPATH@ $the_rpath"
--        the_wl_rpath="@WININET_WL_RPATH@ $the_wl_rpath"
--        fi
--      if test "${MUST_BUILD_CURL_CLIENT}" = "yes"; then
--        the_libs="@CURL_LDADD@ -lpthread $the_libs"
--        the_rpath="@CURL_RPATH@ $the_rpath"
--        the_wl_rpath="@CURL_WL_RPATH@ $the_wl_rpath"
--        fi
--      if test "${MUST_BUILD_LIBWWW_CLIENT}" = "yes"; then
--        the_libs="@LIBWWW_LDADD@ $the_libs"
--        the_rpath="@LIBWWW_RPATH@ $the_rpath"
--        the_wl_rpath="@LIBWWW_WL_RPATH@ $the_wl_rpath"
--        fi
--      if test "${needCpp}" = "yes"; then
--        the_libs="${BUILDDIR}/src/cpp/libxmlrpc_client++.a $the_libs"
--        fi
--      ;;
--    --version)
--      echo "@VERSION@"
--      exit 0
--      ;;
--    --modules)
--      echo "@FEATURE_LIST@"
--      exit 0
--      ;;
--    --features)
--      echo "@FEATURE_LIST@"
--      exit 0
--      ;;
--    --cflags)
--      echo "$the_includes"
--      exit 0
--      ;;
--    --libs)
--      echo "$the_libdirs $the_libs $the_wl_rpath"
--      exit 0
--      ;;
--    --ldadd)
--      echo "$the_libdirs $the_libs"
--      exit 0
--      ;;
--    --ldflags)
--      echo "$the_rpath"
--      exit 0
--      ;;
--    --sopath)
--      echo "$sopath"
--      exit 0
--      ;;
--    --prefix)
--      echo "@prefix@"
--      exit 0
--      ;;
--    --exec-prefix)
--      echo "@exec_prefix@"
--      exit 0
--      ;;
--    --*dir)
--      # Swiped from gnome-config.
--      dirname=\$`echo $1 | sed -e 's,^--,,'`
--      dirname=`eval echo $dirname`
--      test -z "$dirname" && exit 1
--      echo $dirname
--      exit 0
--      ;;
--    --help)
--      echo "See the real xmlrpc-c-config program" 1>&2
--      exit 0
--      ;;
--    *)
--      echo "Unrecognized option." 1>&2
--      exit 1
--      ;;
--  esac
--  shift
--done
-diff --git a/libs/xmlrpc-c/xmlrpc-c-config.test.main b/libs/xmlrpc-c/xmlrpc-c-config.test.main
-index da9bf15..3ad9ac5 100644
---- a/libs/xmlrpc-c/xmlrpc-c-config.test.main
-+++ b/libs/xmlrpc-c/xmlrpc-c-config.test.main
-@@ -52,14 +52,22 @@ while test $# -gt 0; do
-       ;;
-     c++2)
-       needCpp=yes
--      the_libs="${BLDDIR}/src/cpp/libxmlrpc++.a $the_libs"
-+      the_libs="${BLDDIR}/src/cpp/lib$LIBXMLRPCPP_NAME.a $the_libs"
-       ;;
-     server-util)
-       the_libs="${BLDDIR}/src/libxmlrpc_server.a $the_libs"
-+      if test "${needCpp}" = "yes"; then
-+        the_libs="${BLDDIR}/src/cpp/libxmlrpc_server++.a $the_libs"
-+        fi
-       ;;
-     cgi-server)
-       the_libs="${BLDDIR}/src/libxmlrpc_server.a $the_libs"
--      the_libs="${BLDDIR}/src/libxmlrpc_server_cgi.a $the_libs"
-+      if test "${needCpp}" = "yes"; then
-+        the_libs="${BLDDIR}/src/cpp/libxmlrpc_server_cgi++.a $the_libs"
-+        the_libs="${BLDDIR}/src/cpp/libxmlrpc_server++.a $the_libs"
-+      else
-+        the_libs="${BLDDIR}/src/libxmlrpc_server_cgi.a $the_libs"
-+        fi
-       ;;
-     abyss-server)
-       if test "${ENABLE_ABYSS_THREADS}" = "yes"; then
-@@ -87,18 +95,18 @@ while test $# -gt 0; do
-       the_libs="${BLDDIR}/src/libxmlrpc_client.a $the_libs"
-       if test "${MUST_BUILD_WININET_CLIENT}" = "yes"; then
-         the_libs="$the_libs $WININET_LDADD"
--        the_rpath="$WININET_RPATH $the_rpath"
--        the_wl_rpath="$WININET_WL_RPATH $the_wl_rpath"
-+        the_rpath="-R$WININET_LIBDIR $the_rpath"
-+        the_wl_rpath="-Wl,-rpath,$WININET_LIBDIR $the_wl_rpath"
-         fi
-       if test "${MUST_BUILD_CURL_CLIENT}" = "yes"; then
-         the_libs="$the_libs $CURL_LDADD"
--        the_rpath="$CURL_RPATH $the_rpath"
--        the_wl_rpath="$CURL_WL_RPATH $the_wl_rpath"
-+        the_rpath="-R$CURL_LIBDIR $the_rpath"
-+        the_wl_rpath="-Wl,-rpath,$CURL_LIBDIR $the_wl_rpath"
-         fi
-       if test "${MUST_BUILD_LIBWWW_CLIENT}" = "yes"; then
-         the_libs="$the_libs $LIBWWW_LDADD"
--        the_rpath="$LIBWWW_RPATH $the_rpath"
--        the_wl_rpath="$LIBWWW_WL_RPATH $the_wl_rpath"
-+        the_rpath="-R$LIBWWW_LIBDIR $the_rpath"
-+        the_wl_rpath="-Wl,-rpath,$LIBWWW_LIBDIR $the_wl_rpath"
-         fi
-       if test "${needCpp}" = "yes"; then
-         the_libs="${BLDDIR}/src/cpp/libxmlrpc_client++.a $the_libs"
-@@ -118,7 +126,14 @@ while test $# -gt 0; do
-       echo "$the_includes"
-       ;;
-     --libs)
--      echo "$the_libdirs $the_libs $packetsocket_lib $the_wl_rpath"
-+      if test "$NEED_WL_RPATH" = "yes"; then
-+          rpath=$the_wl_rpath
-+      elif test "$NEED_RPATH" = "yes"; then
-+          rpath=$the_rpath
-+      else
-+          rpath=
-+      fi
-+      echo "$the_libdirs $rpath $the_libs $packetsocket_lib"
-       ;;
-     --ldadd)
-       echo "$the_libdirs $the_libs $packetsocket_lib"
-diff --git a/libs/xmlrpc-c/xmlrpc_amconfig.h.in b/libs/xmlrpc-c/xmlrpc_amconfig.h.in
-index cd289f2..6f3f2ae 100644
---- a/libs/xmlrpc-c/xmlrpc_amconfig.h.in
-+++ b/libs/xmlrpc-c/xmlrpc_amconfig.h.in
-@@ -22,9 +22,12 @@
- #undef HAVE_STRCASECMP
- #undef HAVE_STRICMP
- #undef HAVE__STRICMP
--#undef HAVE_WCHAR_H
--#undef HAVE_SYS_FILIO_H
--#undef HAVE_SYS_IOCTL_H
-+#undef HAVE_STRTOLL
-+#undef HAVE_STRTOQ
-+#undef HAVE___STRTOLL
-+#undef HAVE_STRTOULL
-+#undef HAVE_STRTOUQ
-+#undef HAVE___STRTOULL
- /* Define if you have the socket library (-lsocket).  */
-diff --git a/libs/xmlrpc-c/xmlrpc_config.h.in b/libs/xmlrpc-c/xmlrpc_config.h.in
-index 46e69ae..9cba718 100644
---- a/libs/xmlrpc-c/xmlrpc_config.h.in
-+++ b/libs/xmlrpc-c/xmlrpc_config.h.in
-@@ -15,7 +15,7 @@
-    interface header files that get compiled as part of a user's program.
-    This file just uses plain AC_SUBST substitution, the same as
--   Makefile.config.  Wherever you see @XXX@, that gets replaced by the
-+   config.mk.  Wherever you see @XXX@, that gets replaced by the
-    value of 'configure' variable XXX.
-    Logical macros are 0 or 1 instead of the more traditional defined and
-@@ -62,18 +62,29 @@
- #ifndef HAVE_STRICMP
- #define HAVE_STRICMP 0
- #endif
--#ifndef HAVE__STRICMP
--#define HAVE__STRICMP 0
-+#ifndef HAVE_STRTOLL
-+#define HAVE_STRTOLL 0
- #endif
--#ifndef HAVE_WCHAR_H
--#define HAVE_WCHAR_H 0
-+#ifndef HAVE_STRTOQ
-+#define HAVE_STRTOQ 0
- #endif
--#ifndef HAVE_SYS_FILIO_H
--#define HAVE_SYS_FILIO_H 0
-+#ifndef HAVE___STRTOLL
-+#define HAVE___STRTOLL 0
- #endif
--#ifndef HAVE_SYS_IOCTL_H
--#define HAVE_SYS_IOCTL_H 0
-+#ifndef HAVE_STRTOUQ
-+#define HAVE_STRTOUQ 0
- #endif
-+#ifndef HAVE___STRTOULL
-+#define HAVE___STRTOULL 0
-+#endif
-+#ifndef HAVE__STRTOUI64
-+#define HAVE__STRTOUI64 0
-+#endif
-+
-+#define HAVE_WCHAR_H @HAVE_WCHAR_H_DEFINE@
-+#define HAVE_SYS_FILIO_H @HAVE_SYS_FILIO_H_DEFINE@
-+#define HAVE_SYS_IOCTL_H @HAVE_SYS_IOCTL_H_DEFINE@
-+#define HAVE_SYS_SELECT_H @HAVE_SYS_SELECT_H_DEFINE@
- #define VA_LIST_IS_ARRAY @VA_LIST_IS_ARRAY_DEFINE@
-@@ -129,12 +140,37 @@
- #endif
- #if MSVCRT
-+  #define HAVE_WINDOWS_THREAD 1
-+#else
-+  #define HAVE_WINDOWS_THREAD 0
-+#endif
-+
-+#define HAVE_PTHREAD 1
-+
-+/* Note that the return value of XMLRPC_VSNPRINTF is int on Windows,
-+   ssize_t on POSIX.
-+*/
-+#if MSVCRT
-   #define XMLRPC_VSNPRINTF _vsnprintf
- #else
-   #define XMLRPC_VSNPRINTF vsnprintf
- #endif
--#if defined(_MSC_VER)
-+#if MSVCRT
-+  #define HAVE_REGEX 0
-+#else
-+  #define HAVE_REGEX 1
-+#endif
-+
-+#if MSVCRT
-+  #define XMLRPC_SOCKETPAIR xmlrpc_win32_socketpair
-+  #define XMLRPC_CLOSESOCKET closesocket
-+#else
-+  #define XMLRPC_SOCKETPAIR socketpair
-+  #define XMLRPC_CLOSESOCKET close
-+#endif
-+
-+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
- /* Starting with MSVC 8, the runtime library defines various POSIX functions
-    such as strdup() whose names violate the ISO C standard (the standard
-    says the strXXX names are reserved for the standard), but warns you of
-@@ -152,4 +188,24 @@
- #pragma warning(disable:4996)
- #endif
-+#if HAVE_STRTOLL
-+  # define XMLRPC_STRTOLL strtoll
-+#elif HAVE_STRTOQ
-+  # define XMLRPC_STRTOLL strtoq /* Interix */
-+#elif HAVE___STRTOLL
-+  # define XMLRPC_STRTOLL __strtoll /* HP-UX <= 11.11 */
-+#elif HAVE__STRTOUI64
-+  #define XMLRPC_STRTOLL _strtoui64  /* Windows MSVC */
-+#endif
-+
-+#if HAVE_STRTOULL
-+  # define XMLRPC_STRTOULL strtoull
-+#elif HAVE_STRTOUQ
-+  # define XMLRPC_STRTOULL strtouq /* Interix */
-+#elif HAVE___STRTOULL
-+  # define XMLRPC_STRTOULL __strtoull /* HP-UX <= 11.11 */
-+#elif HAVE__STRTOUI64
-+  #define XMLRPC_STRTOULL _strtoui64  /* Windows MSVC */
-+#endif
-+
- #endif
-diff --git a/src/include/switch_event.h b/src/include/switch_event.h
-index 52187cb..b4b5f1d 100644
---- a/src/include/switch_event.h
-+++ b/src/include/switch_event.h
-@@ -41,10 +41,10 @@
-       Builtin events are fired by the core at various points in the execution of the application and custom events can be 
-       reserved and registered so events from an external module can be rendered and handled by an another even handler module.
--      If the work time to process an event in a callback is anticipated to grow beyond a very small amount of time it is reccommended
--      that you impelment your own handler thread and FIFO queue so you can accept the events int the callback and queue them 
--      into your own thread rather than tie up the delivery agent.  It is in to opinion of the author that such a necessity 
--      should be judged on a per-use basis and therefore does not fall within the scope of this system to provide that 
-+      If the work time to process an event in a callback is anticipated to grow beyond a very small amount of time it is recommended
-+      that you implement your own handler thread and FIFO queue so you can accept the events in the callback and queue them 
-+      into your own thread rather than tie up the delivery agent.  It is in the opinion of the author that such a necessity 
-+      should be judged on a per-use basis and therefore it does not fall within the scope of this system to provide that 
-       functionality at a core level.
- */
-@@ -294,7 +294,7 @@ SWITCH_DECLARE(switch_status_t) switch_name_event(const char *name, switch_event
-   \param owner the owner of the event name
-   \param subclass_name the name to reserve
-   \return SWITCH_STATUS_SUCCESS if the name was reserved
--  \note There is nothing to enforce this but I reccommend using module::event_name for the subclass names
-+  \note There is nothing to enforce this but I recommend using module::event_name for the subclass names
- */
- SWITCH_DECLARE(switch_status_t) switch_event_reserve_subclass_detailed(const char *owner, const char *subclass_name);
-@@ -302,7 +302,7 @@ SWITCH_DECLARE(switch_status_t) switch_event_reserve_subclass_detailed(const cha
- SWITCH_DECLARE(switch_status_t) switch_event_free_subclass_detailed(const char *owner, const char *subclass_name);
- /*!
--  \brief Render a string representation of an event sutable for printing or network transport 
-+  \brief Render a string representation of an event suitable for printing or network transport 
-   \param event the event to render
-   \param str a string pointer to point at the allocated data
-   \param encode url encode the headers
-@@ -319,7 +319,7 @@ SWITCH_DECLARE(switch_status_t) switch_event_create_array_pair(switch_event_t **
- #ifndef SWIG
- /*!
--  \brief Render a XML representation of an event sutable for printing or network transport
-+  \brief Render a XML representation of an event suitable for printing or network transport
-   \param event the event to render
-   \param fmt optional body of the event (varargs see standard sprintf family)
-   \return the xml object if the operation was successful
-@@ -329,7 +329,7 @@ SWITCH_DECLARE(switch_xml_t) switch_event_xmlize(switch_event_t *event, const ch
- #endif
- /*!
--  \brief Determine if the event system has been initilized
-+  \brief Determine if the event system has been initialized
-   \return SWITCH_STATUS_SUCCESS if the system is running
- */
- SWITCH_DECLARE(switch_status_t) switch_event_running(void);
-diff --git a/src/include/switch_xml.h b/src/include/switch_xml.h
-index f2a6eb3..a29250a 100644
---- a/src/include/switch_xml.h
-+++ b/src/include/switch_xml.h
-@@ -198,7 +198,7 @@ SWITCH_DECLARE(const char *) switch_xml_attr(_In_opt_ switch_xml_t xml, _In_opt_
- ///\return the value
- SWITCH_DECLARE(const char *) switch_xml_attr_soft(_In_ switch_xml_t xml, _In_z_ const char *attr);
--///\brief Traverses the switch_xml sturcture to retrieve a specific subtag. Takes a
-+///\brief Traverses the switch_xml structure to retrieve a specific subtag. Takes a
- ///\ variable length list of tag names and indexes. The argument list must be
- ///\ terminated by either an index of -1 or an empty string tag name. Example: 
- ///\ title = switch_xml_get(library, "shelf", 0, "book", 2, "title", -1);
-@@ -208,13 +208,15 @@ SWITCH_DECLARE(const char *) switch_xml_attr_soft(_In_ switch_xml_t xml, _In_z_
- ///\return an xml node or NULL
- SWITCH_DECLARE(switch_xml_t) switch_xml_get(_In_ switch_xml_t xml,...);
--///\brief Converts an switch_xml structure back to xml. Returns a string of xml data that
-+///\brief Converts an switch_xml structure back to xml in html format. Returns a string of html data that
- ///\ must be freed.
- ///\param xml the xml node
- ///\param prn_header add <?xml version..> header too
--///\return the xml text string
-+///\return the ampersanded html text string to display xml
- SWITCH_DECLARE(char *) switch_xml_toxml(_In_ switch_xml_t xml, _In_ switch_bool_t prn_header);
- SWITCH_DECLARE(char *) switch_xml_toxml_nolock(switch_xml_t xml, _In_ switch_bool_t prn_header);
-+SWITCH_DECLARE(char *) switch_xml_tohtml(_In_ switch_xml_t xml, _In_ switch_bool_t prn_header);
-+
- ///\brief Converts an switch_xml structure back to xml using the buffer passed in the parameters.
- ///\param xml the xml node
- ///\param buf buffer to use
-diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c
-index 679f29b..df87773 100644
---- a/src/mod/applications/mod_commands/mod_commands.c
-+++ b/src/mod/applications/mod_commands/mod_commands.c
-@@ -1,4 +1,4 @@
--/* 
-+/*
-  * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
-  * Copyright (C) 2005-2012, Anthony Minessale II <anthm@freeswitch.org>
-  *
-@@ -22,7 +22,7 @@
-  * the Initial Developer. All Rights Reserved.
-  *
-  * Contributor(s):
-- * 
-+ *
-  * Anthony Minessale II <anthm@freeswitch.org>
-  * Michael Jerris <mike@jerris.com>
-  * Johny Kadarisman <jkr888@gmail.com>
-@@ -35,7 +35,8 @@
-  * Joseph Sullivan <jossulli@amazon.com>
-  * Raymond Chandler <intralanman@freeswitch.org>
-  *
-- * 
-+ * Garmt Boekholt <garmt@cimico.com>
-+ *
-  * mod_commands.c -- Misc. Command Module
-  *
-  */
-@@ -54,6 +55,15 @@ struct cb_helper {
-       switch_stream_handle_t *stream;
- };
-+struct stream_format {
-+      char *http;           /* http cmd (from xmlrpc)                                              */
-+      char *query;          /* http query (cmd args)                                               */
-+      switch_bool_t api;    /* flag: define content type for http reply e.g. text/html or text/xml */
-+      switch_bool_t html;   /* flag: format as html                                                */
-+      char *nl;             /* newline to use: html "<br>\n" or just "\n"                          */
-+};
-+typedef struct stream_format stream_format;
-+
- static int url_callback(void *pArg, int argc, char **argv, char **columnNames)
- {
-       struct cb_helper *cb = (struct cb_helper *) pArg;
-@@ -70,7 +80,7 @@ static int url_callback(void *pArg, int argc, char **argv, char **columnNames)
- static switch_status_t select_url(const char *user,
-                                          const char *domain,
-                                          const char *concat,
--                                         const char *exclude_contact, 
-+                                         const char *exclude_contact,
-                                          switch_stream_handle_t *stream)
- {
-       struct cb_helper cb;
-@@ -79,12 +89,12 @@ static switch_status_t select_url(const char *user,
-       switch_cache_db_handle_t *db = NULL;
-       if (!(cflags & SCF_USE_SQL)) {
--              stream->write_function(stream, "-ERR SQL DISABLED NO DATA AVAILABLE!\n");
-+              stream->write_function(stream, "-ERR SQL disabled, no data available!\n");
-               return SWITCH_STATUS_SUCCESS;
-       }
-       if (switch_core_db_handle(&db) != SWITCH_STATUS_SUCCESS) {
--              stream->write_function(stream, "%s", "-ERR Databse Error!\n");
-+              stream->write_function(stream, "%s", "-ERR Database error!\n");
-               return SWITCH_STATUS_SUCCESS;
-       }
-@@ -105,10 +115,10 @@ static switch_status_t select_url(const char *user,
-       switch_cache_db_execute_sql_callback(db, sql, url_callback, &cb, &errmsg);
-       if (errmsg) {
--              stream->write_function(stream, "-ERR SQL Error [%s]\n", errmsg);
-+              stream->write_function(stream, "-ERR SQL error [%s]\n", errmsg);
-               free(errmsg);
-               errmsg = NULL;
--      }       
-+      }
-       switch_safe_free(sql);
-@@ -119,6 +129,22 @@ static switch_status_t select_url(const char *user,
-       return SWITCH_STATUS_SUCCESS;
- }
-+static stream_format set_format(stream_format *format, switch_stream_handle_t *stream)
-+{
-+      format->nl = "\n";
-+      if (stream->param_event && (format->http = switch_event_get_header(stream->param_event, "HTTP-URI"))) {
-+              format->query = switch_event_get_header(stream->param_event, "HTTP-QUERY");
-+              if (switch_event_get_header(stream->param_event, "HTTP-API")) {
-+                      format->api = SWITCH_TRUE;
-+              }
-+              if (!strncasecmp(format->http, "/webapi/", 8)) {
-+                      format->nl = "<br>\n";
-+                      format->html = SWITCH_TRUE;
-+              }
-+      }
-+
-+      return *format;
-+}
- #define SAY_STRING_SYNTAX "<module_name>[.<ext>] <lang>[.<ext>] <say_type> <say_method> [<say_gender>] <text>"
- SWITCH_STANDARD_API(say_string_function)
-@@ -159,10 +185,10 @@ SWITCH_STANDARD_API(say_string_function)
-                                                         argv[1],
-                                                         ext,
-                                                         tosay,
--                                                        argv[0], 
--                                                        argv[2], 
--                                                        argv[3], 
--                                                        (argc == 6) ? argv[4] : NULL , 
-+                                                        argv[0],
-+                                                        argv[2],
-+                                                        argv[3],
-+                                                        (argc == 6) ? argv[4] : NULL ,
-                                                         &string);
-               if (string) {
-                       stream->write_function(stream, "%s", strip ? string + 14 : string);
-@@ -174,11 +200,11 @@ SWITCH_STANDARD_API(say_string_function)
-       if (err) {
-               stream->write_function(stream, "-ERR Usage: %s\n", SAY_STRING_SYNTAX);
-       }
--      
-+
-       free(lbuf);
-       return SWITCH_STATUS_SUCCESS;
--      
-+
- }
- struct user_struct {
-@@ -423,12 +449,12 @@ SWITCH_STANDARD_API(reg_url_function)
-               exclude_contact = switch_channel_get_variable(channel, "sip_exclude_contact");
-       }
--      
-+
-       data = strdup(cmd);
-       switch_assert(data);
-       user = data;
--      
-+
-       if ((domain = strchr(user, '@'))) {
-               *domain++ = '\0';
-               if ((concat = strchr(domain, '/'))) {
-@@ -447,7 +473,7 @@ SWITCH_STANDARD_API(reg_url_function)
-       if (!user) goto end;
--      
-+
-       SWITCH_STANDARD_STREAM(mystream);
-       switch_assert(mystream.data);
-@@ -455,8 +481,8 @@ SWITCH_STANDARD_API(reg_url_function)
-       reply = mystream.data;
-- end:
--      
-+  end:
-+
-       if (zstr(reply)) {
-               reply = "error/user_not_registered";
-       } else if (end_of(reply) == ',') {
-@@ -466,7 +492,7 @@ SWITCH_STANDARD_API(reg_url_function)
-       stream->write_function(stream, "%s", reply);
-       reply = NULL;
--      switch_safe_free(mystream.data);                                        
-+      switch_safe_free(mystream.data);
-       switch_safe_free(data);
-       switch_safe_free(dup_domain);
-@@ -671,7 +697,7 @@ SWITCH_STANDARD_API(nat_map_function)
-       stream->write_function(stream, "false");
-       goto ok;
-- usage:
-+  usage:
-       stream->write_function(stream, "USAGE: nat_map [status|reinit|republish] | [add|del] <port> [tcp|udp] [sticky] | [mapping] <enable|disable>");
-   ok:
-@@ -1014,14 +1040,14 @@ SWITCH_STANDARD_API(group_call_function)
-       }
-   end:
--      
-+
-       switch_safe_free(group_name);
-       switch_safe_free(dup_domain);
-       if (!ok) {
-               stream->write_function(stream, "error/NO_ROUTE_DESTINATION");
-       }
--      
-+
-       return SWITCH_STATUS_SUCCESS;
- }
-@@ -1183,17 +1209,15 @@ static switch_status_t _find_user(const char *cmd, switch_core_session_t *sessio
-       char *mydata = NULL, *argv[3];
-       char *key, *user, *domain;
-       char *xmlstr;
--      char *path_info = NULL;
-       char delim = ' ';
--      char *host = NULL;
-       const char *err = NULL;
--      if (stream->param_event && (host = switch_event_get_header(stream->param_event, "http-host"))) {
-+      stream_format format = { 0 };
-+      set_format(&format, stream);
-+
-+      if (!tf && format.api) {
-               stream->write_function(stream, "Content-Type: text/xml\r\n\r\n");
--              if ((path_info = switch_event_get_header(stream->param_event, "http-path-info"))) {
--                      cmd = path_info;
--                      delim = '/';
--              }
-+              format.html = SWITCH_FALSE;
-       }
-       if (!cmd) {
-@@ -1230,24 +1254,27 @@ static switch_status_t _find_user(const char *cmd, switch_core_session_t *sessio
-               stream->write_function(stream, err ? "false" : "true");
-       } else {
-               if (err) {
--                      if (host) {
-+                      if (format.api) {
-                               stream->write_function(stream, "<error>%s</error>\n", err);
-                       } else {
--                              stream->write_function(stream, "-Error %s\n", err);
-+                              stream->write_function(stream, "-ERR %s\n", err);
-                       }
-               }
-               if (x_user) {
--                      xmlstr = switch_xml_toxml(x_user, SWITCH_FALSE);
-+                      /* print header if request to show xml on webpage */
-+                      if (format.html) {
-+                              xmlstr = switch_xml_tohtml(x_user, SWITCH_TRUE);
-+                      } else {
-+                              xmlstr = switch_xml_toxml(x_user, SWITCH_FALSE);
-+                      }
-                       switch_assert(xmlstr);
--
--                      stream->write_function(stream, "%s", xmlstr);
--                      free(xmlstr);
-+                      stream->write_function(stream, "%s%s%s", format.html?"<pre>":"", xmlstr, format.html?"</pre>":"");
-+                      switch_safe_free(xmlstr);
-               }
-       }
-       switch_xml_free(xml);
--
-       switch_safe_free(mydata);
-       return SWITCH_STATUS_SUCCESS;
- }
-@@ -1363,7 +1390,7 @@ SWITCH_STANDARD_API(expand_function)
-       char uuid[80] = "";
-       if (zstr(cmd)) {
--              stream->write_function(stream, "-ERR, no input\n");
-+              stream->write_function(stream, "-ERR No input\n");
-               return SWITCH_STATUS_SUCCESS;
-       }
-@@ -1378,7 +1405,7 @@ SWITCH_STANDARD_API(expand_function)
-       }
-       if (zstr(mycmd)) {
--              stream->write_function(stream, "-ERR, no input\n");
-+              stream->write_function(stream, "-ERR No input\n");
-               return SWITCH_STATUS_SUCCESS;
-       }
-@@ -1395,7 +1422,7 @@ SWITCH_STANDARD_API(expand_function)
-       expanded = arg ? switch_event_expand_headers(stream->param_event, arg) : arg;
-       if ((status = switch_api_execute(mycmd, expanded, session, stream)) != SWITCH_STATUS_SUCCESS) {
--              stream->write_function(stream, "-ERR, error executing command\n");
-+              stream->write_function(stream, "-ERR Cannot execute command\n");
-       }
-       if (expanded != arg) {
-@@ -1569,20 +1596,20 @@ SWITCH_STANDARD_API(xml_locate_function)
- {
-       switch_xml_t xml = NULL, obj = NULL;
-       int argc;
--      char *mydata = NULL, *argv[4];
-+      char *mydata = NULL, *argv[4] = { 0 } ;
-       char *section, *tag, *tag_attr_name, *tag_attr_val;
-       switch_event_t *params = NULL;
-       char *xmlstr;
--      char *path_info, delim = ' ';
-+      char delim = ' ';
-       char *host = NULL;
-       const char *err = NULL;
--      if (stream->param_event && (host = switch_event_get_header(stream->param_event, "http-host"))) {
-+      stream_format format = { 0 };
-+      set_format(&format, stream);
-+      if (format.api) {
-               stream->write_function(stream, "Content-Type: text/xml\r\n\r\n");
--              if ((path_info = switch_event_get_header(stream->param_event, "http-path-info"))) {
--                      cmd = path_info;
--                      delim = '/';
--              }
-+              cmd = format.query;
-+              delim = '/';
-       }
-       if (!cmd) {
-@@ -1595,7 +1622,7 @@ SWITCH_STANDARD_API(xml_locate_function)
-       argc = switch_separate_string(mydata, delim, argv, (sizeof(argv) / sizeof(argv[0])));
--      if (argc == 1 && !strcasecmp(argv[0], "root")) {
-+      if (argc == 1 && argv[0] && !strcasecmp(argv[0], "root")) {
-               const char *error;
-               xml = switch_xml_open_root(0, &error);
-               obj = xml;
-@@ -1638,7 +1665,7 @@ SWITCH_STANDARD_API(xml_locate_function)
-               if (host) {
-                       stream->write_function(stream, "<error>%s</error>\n", err);
-               } else {
--                      stream->write_function(stream, "-Error %s\n", err);
-+                      stream->write_function(stream, "-ERR %s\n", err);
-               }
-       }
-@@ -1663,12 +1690,12 @@ SWITCH_STANDARD_API(reload_acl_function)
-       if (cmd && !strcasecmp(cmd, "reloadxml")) {
-               stream->write_function(stream, "This option is deprecated, we now always reloadxml.\n");
-       }
--      
-+
-       if (switch_xml_reload(&err) == SWITCH_STATUS_SUCCESS) {
-               switch_load_network_lists(SWITCH_TRUE);
-               stream->write_function(stream, "+OK acl reloaded\n");
-       } else {
--              stream->write_function(stream, "-Error [%s]\n", err);
-+              stream->write_function(stream, "-ERR [%s]\n", err);
-       }
-       return SWITCH_STATUS_SUCCESS;
-@@ -1715,8 +1742,8 @@ SWITCH_STANDARD_API(replace_function)
-       int argc = 0;
-       if (!cmd) {
--        goto error;
--    }
-+              goto error;
-+      }
-       mydata = strdup(cmd);
-       d = mydata;
-@@ -1754,7 +1781,7 @@ SWITCH_STANDARD_API(replace_function)
-   ok:
-       switch_safe_free(mydata);
-       return SWITCH_STATUS_SUCCESS;
--      
-+
- }
-@@ -1969,69 +1996,57 @@ SWITCH_STANDARD_API(lan_addr_function)
- SWITCH_STANDARD_API(status_function)
- {
--      uint8_t html = 0;
-       switch_core_time_duration_t duration = { 0 };
--      char *http = NULL;
-       int sps = 0, last_sps = 0;
--      const char *var;
-+      switch_bool_t html = SWITCH_FALSE;      /* shortcut to format.html      */
-+      char * nl = "\n";                                       /* shortcut to format.nl        */
-+      stream_format format = { 0 };
-       switch_size_t cur = 0, max = 0;
--      switch_core_measure_time(switch_core_uptime(), &duration);
-+      set_format(&format, stream);
--      if (stream->param_event) {
--              http = switch_event_get_header(stream->param_event, "http-host");
--              if ((var = switch_event_get_header(stream->param_event, "content-type"))) {
--                      if (!strcasecmp(var, "text/plain")) {
--                              http = NULL;
--                      }
--              }
-+      if (format.api) {
-+              format.html = SWITCH_TRUE;
-+              format.nl = "<br>\n";
-       }
--      if (http) {
--              stream->write_function(stream, "%s", "Content-Type: text/html\n\n");
-+      if (format.html) {
-+              /* set flag to allow refresh of webpage if web request contained kv-pair refresh=xx  */
-+              switch_event_add_header_string(stream->param_event, SWITCH_STACK_BOTTOM, "HTTP-REFRESH", "true");
-+              if (format.api) {
-+                      /* "Overwrite" default "api" Content-Type: text/plain */
-+                      stream->write_function(stream, "Content-Type: text/html\r\n\r\n");
-+              }
-       }
--      if (http || (cmd && strstr(cmd, "html"))) {
--              html = 1;
--              stream->write_function(stream, "<h1>FreeSWITCH Status</h1>\n<b>");
-+      html = format.html;
-+      nl = format.nl;
-+
-+      if (html) {
-+              /* don't bother cli with heading and timestamp */
-+              stream->write_function(stream, "%sFreeSWITCH Status%s", html?"<h1>":"", html?"</h1>\n":"\n");
-+              stream->write_function(stream, "%s%s", switch_event_get_header(stream->param_event,"Event-Date-Local"), nl);
-       }
-+
-+      switch_core_measure_time(switch_core_uptime(), &duration);
-       stream->write_function(stream,
--                                                 "UP %u year%s, %u day%s, %u hour%s, %u minute%s, %u second%s, %u millisecond%s, %u microsecond%s\n",
--                                                 duration.yr, duration.yr == 1 ? "" : "s", duration.day, duration.day == 1 ? "" : "s",
--                                                 duration.hr, duration.hr == 1 ? "" : "s", duration.min, duration.min == 1 ? "" : "s",
--                                                 duration.sec, duration.sec == 1 ? "" : "s", duration.ms, duration.ms == 1 ? "" : "s", duration.mms,
--                                                 duration.mms == 1 ? "" : "s");
--
--      stream->write_function(stream, "FreeSWITCH is %s\n", switch_core_ready() ? "ready" : "not ready");
--      stream->write_function(stream, "%" SWITCH_SIZE_T_FMT " session(s) since startup\n", switch_core_session_id() - 1);
-+                                              "UP %u year%s, %u day%s, %u hour%s, %u minute%s, %u second%s, %u millisecond%s, %u microsecond%s%s",
-+                                              duration.yr,  duration.yr  == 1 ? "" : "s", duration.day, duration.day == 1 ? "" : "s",
-+                                              duration.hr,  duration.hr  == 1 ? "" : "s", duration.min, duration.min == 1 ? "" : "s",
-+                                              duration.sec, duration.sec == 1 ? "" : "s", duration.ms , duration.ms  == 1 ? "" : "s", duration.mms,
-+                                              duration.mms == 1 ? "" : "s", nl);
-+
-+      stream->write_function(stream, "FreeSWITCH is %s%s", switch_core_ready() ? "ready" : "not ready", nl);
-+      stream->write_function(stream, "%" SWITCH_SIZE_T_FMT " session(s) since startup%s", switch_core_session_id() - 1, nl);
-       switch_core_session_ctl(SCSC_LAST_SPS, &last_sps);
-       switch_core_session_ctl(SCSC_SPS, &sps);
--      stream->write_function(stream, "%d session(s) %d/%d\n", switch_core_session_count(), last_sps, sps);
--      stream->write_function(stream, "%d session(s) max\n", switch_core_session_limit(0));
--      stream->write_function(stream, "min idle cpu %0.2f/%0.2f\n", switch_core_min_idle_cpu(-1.0), switch_core_idle_cpu());
--
-+      stream->write_function(stream, "%d session(s) - %d out of max %d per sec %s", switch_core_session_count(), last_sps, sps, nl);
-+      stream->write_function(stream, "%d session(s) max%s", switch_core_session_limit(0), nl);
-+      stream->write_function(stream, "min idle cpu %0.2f/%0.2f%s", switch_core_min_idle_cpu(-1.0), switch_core_idle_cpu(), nl);
--      if (switch_core_get_stacksizes(&cur, &max) == SWITCH_STATUS_SUCCESS) {
--              stream->write_function(stream, "Current Stack Size/Max %ldK/%ldK\n", cur / 1024, max / 1024);
-+      if (switch_core_get_stacksizes(&cur, &max) == SWITCH_STATUS_SUCCESS) {          stream->write_function(stream, "Current Stack Size/Max %ldK/%ldK\n", cur / 1024, max / 1024);
-       }
--
--      if (html) {
--              stream->write_function(stream, "</b>\n");
--      }
--
--      if (cmd && strstr(cmd, "refresh=")) {
--              char *refresh = strchr(cmd, '=');
--              if (refresh) {
--                      int r;
--                      refresh++;
--                      r = atoi(refresh);
--                      if (r > 0) {
--                              stream->write_function(stream, "<META HTTP-EQUIV=REFRESH CONTENT=\"%d; URL=/api/status?refresh=%d%s\">\n", r, r, html ? "html=1" : "");
--                      }
--              }
--      }
--
-       return SWITCH_STATUS_SUCCESS;
- }
-@@ -2125,7 +2140,7 @@ SWITCH_STANDARD_API(ctl_function)
-                       switch_core_session_ctl(SCSC_THREADED_SYSTEM_EXEC, &arg);
-                       stream->write_function(stream, "+OK threaded_system_exec is %s \n", arg ? "true" : "false");
--                      
-+
-               } else if (!strcasecmp(argv[0], "save_history")) {
-                       switch_core_session_ctl(SCSC_SAVE_HISTORY, NULL);
-                       stream->write_function(stream, "+OK\n");
-@@ -2198,7 +2213,7 @@ SWITCH_STANDARD_API(ctl_function)
-                       stream->write_function(stream, "+OK max sessions: %d\n", arg);
-               } else if (!strcasecmp(argv[0], "min_idle_cpu")) {
-                       double d = -1;
--                      
-+
-                       if (argc > 1) {
-                               d = atof(argv[1]);
-                       }
-@@ -2211,7 +2226,7 @@ SWITCH_STANDARD_API(ctl_function)
-                               stream->write_function(stream, "+OK min idle cpu: DISABLED\n", d);
-                       }
--                      
-+
-               } else if (!strcasecmp(argv[0], "max_dtmf_duration")) {
-                       if (argc > 1) {
-                               arg = atoi(argv[1]);
-@@ -2281,14 +2296,14 @@ SWITCH_STANDARD_API(ctl_function)
-                               stream->write_function(stream, "+OK clock will synchronize when there are no more calls\n");
-                       }
-               } else {
--                      stream->write_function(stream, "-ERR INVALID COMMAND\nUSAGE: fsctl %s", CTL_SYNTAX);
-+                      stream->write_function(stream, "-ERR Invalid command\nUSAGE: fsctl %s\n", CTL_SYNTAX);
-                       goto end;
-               }
-         end:
-               free(mydata);
-       } else {
--              stream->write_function(stream, "-ERR Memory Error\n");
-+              stream->write_function(stream, "-ERR Memory error\n");
-       }
-       return SWITCH_STATUS_SUCCESS;
-@@ -2358,7 +2373,7 @@ SWITCH_STANDARD_API(unload_function)
-       }
-       switch_mutex_lock(reload_mutex);
--      
-+
-       if (switch_loadable_module_unload_module((char *) SWITCH_GLOBAL_dirs.mod_dir, (char *) cmd, force, &err) == SWITCH_STATUS_SUCCESS) {
-               stream->write_function(stream, "+OK\n");
-       } else {
-@@ -2452,11 +2467,11 @@ SWITCH_STANDARD_API(kill_function)
-               *kcause++ = '\0';
-               if (!zstr(kcause)) {
-                       cause = switch_channel_str2cause(kcause);
--              }               
-+              }
-       }
-       if (switch_ivr_kill_uuid(mycmd, cause) != SWITCH_STATUS_SUCCESS) {
--              stream->write_function(stream, "-ERR No Such Channel!\n");
-+              stream->write_function(stream, "-ERR No such channel!\n");
-       } else {
-               stream->write_function(stream, "+OK\n");
-       }
-@@ -2477,7 +2492,7 @@ SWITCH_STANDARD_API(outgoing_answer_function)
-       }
-       if (zstr(mycmd) || !(outgoing_session = switch_core_session_locate(mycmd))) {
--              stream->write_function(stream, "-ERR No Such Channel!\n");
-+              stream->write_function(stream, "-ERR No such channel!\n");
-       } else {
-               switch_channel_t *channel = switch_core_session_get_channel(outgoing_session);
-               if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
-@@ -2511,7 +2526,7 @@ SWITCH_STANDARD_API(preprocess_function)
-       }
-       if (!(ksession = switch_core_session_locate(argv[0]))) {
--              stream->write_function(stream, "-ERR No Such Channel!\n");
-+              stream->write_function(stream, "-ERR No such channel!\n");
-               goto done;
-       } else {
-               switch_ivr_preprocess_session(ksession, (char *) argv[1]);
-@@ -2540,7 +2555,7 @@ SWITCH_STANDARD_API(park_function)
-               switch_core_session_rwunlock(ksession);
-               stream->write_function(stream, "+OK\n");
-       } else {
--              stream->write_function(stream, "-ERR No Such Channel!\n");
-+              stream->write_function(stream, "-ERR No such channel!\n");
-       }
-       return SWITCH_STATUS_SUCCESS;
-@@ -2571,7 +2586,7 @@ SWITCH_STANDARD_API(transfer_function)
-       context = argv[3];
-       if (zstr(tuuid) || !(tsession = switch_core_session_locate(tuuid))) {
--              stream->write_function(stream, "-ERR No Such Channel!\n");
-+              stream->write_function(stream, "-ERR No such channel!\n");
-               goto done;
-       }
-@@ -2665,10 +2680,10 @@ SWITCH_STANDARD_API(dual_transfer_function)
-       }
-       if (zstr(tuuid) || !(tsession = switch_core_session_locate(tuuid))) {
--              stream->write_function(stream, "-ERR No Such Channel!\n");
-+              stream->write_function(stream, "-ERR No such channel!\n");
-               goto done;
-       }
--      
-+
-       if (switch_core_session_get_partner(tsession, &other_session) == SWITCH_STATUS_SUCCESS) {
-               switch_ivr_session_transfer(other_session, dest2, dp2, context2);
-               switch_core_session_rwunlock(other_session);
-@@ -2709,7 +2724,7 @@ SWITCH_STANDARD_API(tone_detect_session_function)
-       }
-       if (!(rsession = switch_core_session_locate(argv[0]))) {
--              stream->write_function(stream, "-ERR Error Cannot locate session!\n");
-+              stream->write_function(stream, "-ERR Cannot locate session!\n");
-               return SWITCH_STATUS_SUCCESS;
-       }
-@@ -2754,8 +2769,8 @@ SWITCH_STANDARD_API(uuid_function)
-       char uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1];
-       switch_uuid_str(uuid_str, sizeof(uuid_str));
--      
--      stream->write_function(stream, "%s", uuid_str); 
-+
-+      stream->write_function(stream, "%s", uuid_str);
-       return SWITCH_STATUS_SUCCESS;
- }
-@@ -2780,14 +2795,14 @@ SWITCH_STANDARD_API(uuid_chat)
-                               switch_event_add_body(event, "%s", text);
-                               if (switch_core_session_receive_event(tsession, &event) != SWITCH_STATUS_SUCCESS) {
-                                       switch_event_destroy(&event);
--                                      stream->write_function(stream, "-ERR Send Failed\n");
-+                                      stream->write_function(stream, "-ERR Send failed\n");
-                               } else {
-                                       stream->write_function(stream, "+OK\n");
-                               }
-                       }
-                       switch_core_session_rwunlock(tsession);
-               } else {
--                      stream->write_function(stream, "-ERR No Such Channel %s!\n", uuid);
-+                      stream->write_function(stream, "-ERR No such channel %s!\n", uuid);
-               }
-       }
-@@ -2823,7 +2838,7 @@ SWITCH_STANDARD_API(uuid_deflect)
-                       stream->write_function(stream, "+OK:%s\n", msg.string_reply);
-                       switch_core_session_rwunlock(tsession);
-               } else {
--                      stream->write_function(stream, "-ERR No Such Channel %s!\n", uuid);
-+                      stream->write_function(stream, "-ERR No such channel %s!\n", uuid);
-               }
-       }
-@@ -2857,7 +2872,7 @@ SWITCH_STANDARD_API(uuid_recovery_refresh)
-                       stream->write_function(stream, "+OK:%s\n", msg.string_reply);
-                       switch_core_session_rwunlock(tsession);
-               } else {
--                      stream->write_function(stream, "-ERR No Such Channel %s!\n", uuid);
-+                      stream->write_function(stream, "-ERR No such channel %s!\n", uuid);
-               }
-       }
-@@ -2896,7 +2911,7 @@ SWITCH_STANDARD_API(sched_transfer_function)
-                       stream->write_function(stream, "+OK\n");
-                       switch_core_session_rwunlock(tsession);
-               } else {
--                      stream->write_function(stream, "-ERR No Such Channel!\n");
-+                      stream->write_function(stream, "-ERR No such channel!\n");
-               }
-       }
-@@ -2945,7 +2960,7 @@ SWITCH_STANDARD_API(sched_hangup_function)
-                       stream->write_function(stream, "+OK\n");
-                       switch_core_session_rwunlock(hsession);
-               } else {
--                      stream->write_function(stream, "-ERR No Such Channel!\n");
-+                      stream->write_function(stream, "-ERR No such channel!\n");
-               }
-       }
-@@ -2977,7 +2992,7 @@ SWITCH_STANDARD_API(uuid_media_function)
-       if (status == SWITCH_STATUS_SUCCESS) {
-               stream->write_function(stream, "+OK Success\n");
-       } else {
--              stream->write_function(stream, "-ERR Operation Failed\n");
-+              stream->write_function(stream, "-ERR Operation failed\n");
-       }
-       switch_safe_free(mycmd);
-@@ -3098,7 +3113,7 @@ SWITCH_STANDARD_API(uuid_broadcast_function)
-                       if (switch_stristr("aleg", argv[2])) {
-                               flags |= SMF_ECHO_ALEG;
--                      } 
-+                      }
-                       if (switch_stristr("bleg", argv[2])) {
-                               flags &= ~SMF_HOLD_BLEG;
-@@ -3115,7 +3130,7 @@ SWITCH_STANDARD_API(uuid_broadcast_function)
-               }
-               switch_ivr_broadcast(argv[0], argv[1], flags);
--              stream->write_function(stream, "+OK Message Sent\n");
-+              stream->write_function(stream, "+OK Message sent\n");
-       }
-       switch_safe_free(mycmd);
-@@ -3157,7 +3172,7 @@ SWITCH_STANDARD_API(sched_broadcast_function)
-               }
-               switch_ivr_schedule_broadcast(when, argv[1], argv[2], flags);
--              stream->write_function(stream, "+OK Message Scheduled\n");
-+              stream->write_function(stream, "+OK Message scheduled\n");
-       }
-       switch_safe_free(mycmd);
-@@ -3188,7 +3203,7 @@ SWITCH_STANDARD_API(uuid_hold_function)
-       if (status == SWITCH_STATUS_SUCCESS) {
-               stream->write_function(stream, "+OK Success\n");
-       } else {
--              stream->write_function(stream, "-ERR Operation Failed\n");
-+              stream->write_function(stream, "-ERR Operation failed\n");
-       }
-       switch_safe_free(mycmd);
-@@ -3226,10 +3241,10 @@ SWITCH_STANDARD_API(uuid_display_function)
-       if (status == SWITCH_STATUS_SUCCESS) {
-               stream->write_function(stream, "+OK Success\n");
-       } else {
--              stream->write_function(stream, "-ERR Operation Failed\n");
-+              stream->write_function(stream, "-ERR Operation failed\n");
-       }
-- end:
-+  end:
-       switch_safe_free(mycmd);
-       return SWITCH_STATUS_SUCCESS;
-@@ -3322,7 +3337,7 @@ SWITCH_STANDARD_API(uuid_simplify_function)
-       if (status == SWITCH_STATUS_SUCCESS) {
-               stream->write_function(stream, "+OK Success\n");
-       } else {
--              stream->write_function(stream, "-ERR Operation Failed\n");
-+              stream->write_function(stream, "-ERR Operation failed\n");
-       }
-       return SWITCH_STATUS_SUCCESS;
-@@ -3375,7 +3390,7 @@ SWITCH_STANDARD_API(uuid_jitterbuffer_function)
-       if (status == SWITCH_STATUS_SUCCESS) {
-               stream->write_function(stream, "+OK Success\n");
-       } else {
--              stream->write_function(stream, "-ERR Operation Failed\n");
-+              stream->write_function(stream, "-ERR Operation failed\n");
-       }
-       return SWITCH_STATUS_SUCCESS;
-@@ -3412,7 +3427,7 @@ SWITCH_STANDARD_API(uuid_phone_event_function)
-       if (status == SWITCH_STATUS_SUCCESS) {
-               stream->write_function(stream, "+OK Success\n");
-       } else {
--              stream->write_function(stream, "-ERR Operation Failed\n");
-+              stream->write_function(stream, "-ERR Operation failed\n");
-       }
-       switch_safe_free(mycmd);
-@@ -3573,7 +3588,7 @@ SWITCH_STANDARD_API(uuid_debug_audio_function)
-       if (status == SWITCH_STATUS_SUCCESS) {
-               stream->write_function(stream, "+OK Success\n");
-       } else {
--              stream->write_function(stream, "-ERR Operation Failed\n");
-+              stream->write_function(stream, "-ERR Operation failed\n");
-       }
-   done:
-@@ -3772,7 +3787,7 @@ SWITCH_STANDARD_API(session_audio_function)
-       }
-       if (!(u_session = switch_core_session_locate(argv[0]))) {
--              stream->write_function(stream, "-ERR No Such Channel!\n");
-+              stream->write_function(stream, "-ERR No such channel!\n");
-               goto done;
-       }
-@@ -3836,7 +3851,7 @@ SWITCH_STANDARD_API(break_function)
-       }
-       if (!(psession = switch_core_session_locate(mycmd))) {
--              stream->write_function(stream, "-ERR No Such Channel!\n");
-+              stream->write_function(stream, "-ERR No such channel!\n");
-               goto done;
-       }
-@@ -3865,7 +3880,7 @@ SWITCH_STANDARD_API(break_function)
-               }
-       }
--      
-+
-       if (switch_channel_test_flag(channel, CF_BROADCAST)) {
-               switch_channel_stop_broadcast(channel);
-@@ -3925,7 +3940,7 @@ SWITCH_STANDARD_API(pause_function)
-                       switch_core_session_rwunlock(psession);
-               } else {
--                      stream->write_function(stream, "-ERR No Such Channel!\n");
-+                      stream->write_function(stream, "-ERR No such channel!\n");
-               }
-       }
-@@ -3947,7 +3962,7 @@ SWITCH_STANDARD_API(originate_function)
-       switch_status_t status = SWITCH_STATUS_SUCCESS;
-       if (zstr(cmd)) {
--              stream->write_function(stream, "-USAGE %s\n", ORIGINATE_SYNTAX);
-+              stream->write_function(stream, "-USAGE: %s\n", ORIGINATE_SYNTAX);
-               return SWITCH_STATUS_SUCCESS;
-       }
-@@ -4000,7 +4015,7 @@ SWITCH_STANDARD_API(originate_function)
-               if (machine) {
-                       stream->write_function(stream, "-ERR %s\n", switch_channel_cause2str(cause));
-               } else {
--                      stream->write_function(stream, "-ERR Cannot Create Outgoing Channel! [%s] cause: %s\n", aleg, switch_channel_cause2str(cause));
-+                      stream->write_function(stream, "-ERR Cannot create outgoing channel! [%s] cause: %s\n", aleg, switch_channel_cause2str(cause));
-               }
-               goto done;
-       }
-@@ -4034,7 +4049,7 @@ SWITCH_STANDARD_API(originate_function)
-       if (machine) {
-               stream->write_function(stream, "+OK %s\n", switch_core_session_get_uuid(caller_session));
-       } else {
--              stream->write_function(stream, "+OK Created Session: %s\n", switch_core_session_get_uuid(caller_session));
-+              stream->write_function(stream, "+OK Created session: %s\n", switch_core_session_get_uuid(caller_session));
-       }
-       switch_core_session_rwunlock(caller_session);
-@@ -4156,7 +4171,7 @@ SWITCH_STANDARD_API(unsched_api_function)
-       }
-       if ((id = (uint32_t) atol(cmd))) {
--              stream->write_function(stream, "%s\n", switch_scheduler_del_task_id(id) ? "+OK" : "-ERR no such id");
-+              stream->write_function(stream, "%s\n", switch_scheduler_del_task_id(id) ? "+OK" : "-ERR No such id");
-       }
-       return SWITCH_STATUS_SUCCESS;
-@@ -4317,15 +4332,15 @@ SWITCH_STANDARD_API(bgapi_function)
- }
- struct holder {
-+      char * delim;
-       switch_stream_handle_t *stream;
--      char *http;
--      char *delim;
-       uint32_t count;
-       int print_title;
-       switch_xml_t xml;
-       cJSON *json;
-       int rows;
-       int justcount;
-+      stream_format *format;
- };
- static int show_as_json_callback(void *pArg, int argc, char **argv, char **columnNames)
-@@ -4424,7 +4439,7 @@ static int show_callback(void *pArg, int argc, char **argv, char **columnNames)
-       }
-       if (holder->print_title && holder->count == 0) {
--              if (holder->http) {
-+              if (holder->format && holder->format->html) {
-                       holder->stream->write_function(holder->stream, "\n<tr>");
-               }
-@@ -4434,7 +4449,7 @@ static int show_callback(void *pArg, int argc, char **argv, char **columnNames)
-                               name = "undefined";
-                       }
--                      if (holder->http) {
-+                      if (holder->format && holder->format->html) {
-                               holder->stream->write_function(holder->stream, "<td>");
-                               holder->stream->write_function(holder->stream, "<b>%s</b>%s", name, x == (argc - 1) ? "</td></tr>\n" : "</td><td>");
-                       } else {
-@@ -4443,7 +4458,7 @@ static int show_callback(void *pArg, int argc, char **argv, char **columnNames)
-               }
-       }
--      if (holder->http) {
-+      if (holder->format && holder->format->html) {
-               holder->stream->write_function(holder->stream, "<tr bgcolor=%s>", holder->count % 2 == 0 ? "eeeeee" : "ffffff");
-       }
-@@ -4451,7 +4466,7 @@ static int show_callback(void *pArg, int argc, char **argv, char **columnNames)
-               char *val = switch_str_nil(argv[x]);
--              if (holder->http) {
-+              if (holder->format && holder->format->html) {
-                       char aval[512];
-                       switch_amp_encode(val, aval, sizeof(aval));
-@@ -4494,7 +4509,7 @@ SWITCH_STANDARD_API(alias_function)
-       return SWITCH_STATUS_SUCCESS;
- }
--#define SHOW_SYNTAX "codec|endpoint|application|api|dialplan|file|timer|calls [count]|channels [count|like <match string>]|calls|detailed_calls|bridged_calls|detailed_bridged_calls|aliases|complete|chat|management|modules|nat_map|say|interfaces|interface_types|tasks|limits"
-+#define SHOW_SYNTAX "codec|endpoint|application|api|dialplan|file|timer|calls [count]|channels [count|like <match string>]|calls|detailed_calls|bridged_calls|detailed_bridged_calls|aliases|complete|chat|management|modules|nat_map|say|interfaces|interface_types|tasks|limits|status"
- SWITCH_STANDARD_API(show_function)
- {
-       char sql[1024];
-@@ -4506,50 +4521,49 @@ SWITCH_STANDARD_API(show_function)
-       char *command = NULL, *as = NULL;
-       switch_core_flag_t cflags = switch_core_flags();
-       switch_status_t status = SWITCH_STATUS_SUCCESS;
--    const char *hostname = switch_core_get_switchname();
-+      const char *hostname = switch_core_get_switchname();
-+      int html = 0;
-+      char *nl = "\n";
-+      stream_format format = { 0 };
-+
-+      holder.format = &format;
-+      set_format(holder.format, stream);
-+      html = holder.format->html; /* html is just a shortcut */
-       if (!(cflags & SCF_USE_SQL)) {
--              stream->write_function(stream, "-ERR SQL DISABLED NO DATA AVAILABLE!\n");
-+              stream->write_function(stream, "-ERR SQL disabled, no data available!\n");
-               return SWITCH_STATUS_SUCCESS;
-       }
-       if (switch_core_db_handle(&db) != SWITCH_STATUS_SUCCESS) {
--              stream->write_function(stream, "%s", "-ERR Databse Error!\n");
-+              stream->write_function(stream, "%s", "-ERR Database error!\n");
-               return SWITCH_STATUS_SUCCESS;
-       }
-       holder.justcount = 0;
--      if (cmd && (mydata = strdup(cmd))) {
-+      if (cmd && *cmd && (mydata = strdup(cmd))) {
-               switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
-               command = argv[0];
-               if (argv[2] && !strcasecmp(argv[1], "as")) {
-                       as = argv[2];
-               }
--
--      }
--
--      if (stream->param_event) {
--              const char *var;
--              holder.http = switch_event_get_header(stream->param_event, "http-host");
--
--              if ((var = switch_event_get_header(stream->param_event, "content-type"))) {
--                      if (!strcasecmp(var, "text/plain")) {
--                              holder.http = NULL;
--                      }
--              } else if (holder.http) {
--                      stream->write_function(stream, "%s", "Content-Type: text/html\n\n");
--              }
--
-       }
-       holder.print_title = 1;
--      /* If you change the field qty or order of any of these select */
--      /* statements, you must also change show_callback and friends to match! */
-       if (!command) {
-               stream->write_function(stream, "-USAGE: %s\n", SHOW_SYNTAX);
-               goto end;
-+      /* for those of us that keep on typing at the CLI: "show status" instead of "status" */
-+      } else if (!strncasecmp(command, "status", 6)) {
-+              if (!as) {
-+                      as = argv[1];
-+              }
-+              switch_api_execute(command, as, NULL, stream);
-+              goto end;
-+      /* If you change the field qty or order of any of these select          */
-+      /* statements, you must also change show_callback and friends to match! */
-       } else if (!strncasecmp(command, "codec", 5) ||
-                          !strncasecmp(command, "dialplan", 8) ||
-                          !strncasecmp(command, "file", 4) ||
-@@ -4563,7 +4577,7 @@ SWITCH_STANDARD_API(show_function)
-               sprintf(sql, "select type, name, ikey from interfaces where hostname='%s' and type = '%s' order by type,name", hostname, command);
-       } else if (!strncasecmp(command, "module", 6)) {
-               if (argv[1]) {
--                      sprintf(sql, "select distinct type, name, ikey, filename from interfaces where hostname='%s' and ikey = '%s' order by type,name", 
-+                      sprintf(sql, "select distinct type, name, ikey, filename from interfaces where hostname='%s' and ikey = '%s' order by type,name",
-                                       hostname, argv[1]);
-               } else {
-                       sprintf(sql, "select distinct type, name, ikey, filename from interfaces where hostname='%s' order by type,name", hostname);
-@@ -4582,70 +4596,7 @@ SWITCH_STANDARD_API(show_function)
-               } else {
-                       sprintf(sql, "select name, description, syntax, ikey from interfaces where hostname='%s' and type = '%s' and description != '' order by type,name", hostname, command);
-               }
--      } else if (!strcasecmp(command, "calls")) {
--              sprintf(sql, "select * from basic_calls where hostname='%s' order by call_created_epoch", hostname);
--              if (argv[1] && !strcasecmp(argv[1], "count")) {
--                      holder.justcount = 1;
--                      if (argv[3] && !strcasecmp(argv[2], "as")) {
--                              as = argv[3];
--                      }
--              }
--      } else if (!strcasecmp(command, "registrations")) {
--              sprintf(sql, "select * from registrations where hostname='%s'", hostname);
--              if (argv[1] && !strcasecmp(argv[1], "count")) {
--                      holder.justcount = 1;
--                      if (argv[3] && !strcasecmp(argv[2], "as")) {
--                              as = argv[3];
--                      }
--              }
--      } else if (!strcasecmp(command, "channels") && argv[1] && !strcasecmp(argv[1], "like")) {
--              if (argv[2]) {
--                      char *p;
--                      for (p = argv[2]; p && *p; p++) {
--                              if (*p == '\'' || *p == ';') {
--                                      *p = ' ';
--                              }
--                      }
--                      if (strchr(argv[2], '%')) {
--                              sprintf(sql,
--                                              "select * from channels where hostname='%s' and uuid like '%s' or name like '%s' or cid_name like '%s' or cid_num like '%s' or presence_data like '%s' order by created_epoch",
--                                              hostname, argv[2], argv[2], argv[2], argv[2], argv[2]);
--                      } else {
--                              sprintf(sql,
--                                              "select * from channels where hostname='%s' and uuid like '%%%s%%' or name like '%%%s%%' or cid_name like '%%%s%%' or cid_num like '%%%s%%' or presence_data like '%%%s%%' order by created_epoch",
--                                              hostname, argv[2], argv[2], argv[2], argv[2], argv[2]);
--
--                      }
--
--                      if (argv[4] && !strcasecmp(argv[3], "as")) {
--                              as = argv[4];
--                      }
--              } else {
--                      sprintf(sql, "select * from channels where hostname='%s' order by created_epoch", hostname);
--              }
--      } else if (!strcasecmp(command, "channels")) {
--              sprintf(sql, "select * from channels where hostname='%s' order by created_epoch", hostname);
--              if (argv[1] && !strcasecmp(argv[1], "count")) {
--                      holder.justcount = 1;
--                      if (argv[3] && !strcasecmp(argv[2], "as")) {
--                              as = argv[3];
--                      }
--              }
--      } else if (!strcasecmp(command, "detailed_calls")) {
--              sprintf(sql, "select * from detailed_calls where hostname='%s' order by created_epoch", hostname);
--              if (argv[2] && !strcasecmp(argv[1], "as")) {
--                      as = argv[2];
--              }
--      } else if (!strcasecmp(command, "bridged_calls")) {
--              sprintf(sql, "select * from basic_calls where b_uuid is not null and hostname='%s' order by created_epoch", hostname);
--              if (argv[2] && !strcasecmp(argv[1], "as")) {
--                      as = argv[2];
--              }
--      } else if (!strcasecmp(command, "detailed_bridged_calls")) {
--              sprintf(sql, "select * from detailed_calls where b_uuid is not null and hostname='%s' order by created_epoch", hostname);
--              if (argv[2] && !strcasecmp(argv[1], "as")) {
--                      as = argv[2];
--              }
-+      /* moved refreshable webpage show commands i.e. show calls|registrations|channels||detailed_calls|bridged_calls|detailed_bridged_calls */
-       } else if (!strcasecmp(command, "aliases")) {
-               sprintf(sql, "select * from aliases where hostname='%s' order by alias", hostname);
-       } else if (!strcasecmp(command, "complete")) {
-@@ -4658,7 +4609,7 @@ SWITCH_STANDARD_API(show_function)
-               if ((cmdname = strchr(command, ' ')) && strcasecmp(cmdname, "as")) {
-                       *cmdname++ = '\0';
-                       switch_snprintfv(sql, sizeof(sql),
--                                                      "select name, syntax, description, ikey from interfaces where hostname='%s' and type = 'api' and name = '%q' order by name", 
-+                                                      "select name, syntax, description, ikey from interfaces where hostname='%s' and type = 'api' and name = '%q' order by name",
-                                                       hostname, cmdname);
-               } else {
-                       switch_snprintfv(sql, sizeof(sql), "select name, syntax, description, ikey from interfaces where hostname='%q' and type = 'api' order by name", hostname);
-@@ -4671,14 +4622,101 @@ SWITCH_STANDARD_API(show_function)
-                                               "       WHEN 1 THEN 'tcp' "
-                                               "       ELSE 'unknown' " "  END AS proto, " "  proto AS proto_num, " "  sticky " " FROM nat where hostname='%s' ORDER BY port, proto", hostname);
-       } else {
--              stream->write_function(stream, "-USAGE: %s\n", SHOW_SYNTAX);
--              goto end;
-+              /* from here on refreshable commands: calls|registrations|channels||detailed_calls|bridged_calls|detailed_bridged_calls */
-+              if (holder.format->api) {
-+                      holder.format->html = SWITCH_TRUE;
-+                      holder.format->nl = "<br>\n";
-+              }
-+
-+              html = holder.format->html;
-+              if (html) {
-+                      /* set flag to allow refresh of webpage if web request contained kv-pair refresh=xx  */
-+                      switch_event_add_header_string(stream->param_event, SWITCH_STACK_BOTTOM, "HTTP-REFRESH", "true");
-+                      if (holder.format->api) {
-+                              /* "Overwrite" default "api" Content-Type: text/plain */
-+                              stream->write_function(stream, "Content-Type: text/html\r\n\r\n");
-+                      }
-+              }
-+
-+              if (!strcasecmp(command, "calls")) {
-+                      sprintf(sql, "select * from basic_calls where hostname='%s' order by call_created_epoch", hostname);
-+                      if (argv[1] && !strcasecmp(argv[1], "count")) {
-+                              holder.justcount = 1;
-+                              if (argv[3] && !strcasecmp(argv[2], "as")) {
-+                                      as = argv[3];
-+                              }
-+                      }
-+              } else if (!strcasecmp(command, "registrations")) {
-+                      sprintf(sql, "select * from registrations where hostname='%s'", hostname);
-+                      if (argv[1] && !strcasecmp(argv[1], "count")) {
-+                              holder.justcount = 1;
-+                              if (argv[3] && !strcasecmp(argv[2], "as")) {
-+                                      as = argv[3];
-+                              }
-+                      }
-+              } else if (!strcasecmp(command, "channels") && argv[1] && !strcasecmp(argv[1], "like")) {
-+                      if (argv[2]) {
-+                              char *p;
-+                              for (p = argv[2]; p && *p; p++) {
-+                                      if (*p == '\'' || *p == ';') {
-+                                              *p = ' ';
-+                                      }
-+                              }
-+                              if (strchr(argv[2], '%')) {
-+                                      sprintf(sql,
-+                                              "select * from channels where hostname='%s' and uuid like '%s' or name like '%s' or cid_name like '%s' or cid_num like '%s' or presence_data like '%s' order by created_epoch",
-+                                              hostname, argv[2], argv[2], argv[2], argv[2], argv[2]);
-+                              } else {
-+                                      sprintf(sql,
-+                                              "select * from channels where hostname='%s' and uuid like '%%%s%%' or name like '%%%s%%' or cid_name like '%%%s%%' or cid_num like '%%%s%%' or presence_data like '%%%s%%' order by created_epoch",
-+                                              hostname, argv[2], argv[2], argv[2], argv[2], argv[2]);
-+                              }
-+                              if (argv[4] && !strcasecmp(argv[3], "as")) {
-+                                      as = argv[4];
-+                              }
-+                      } else {
-+                              sprintf(sql, "select * from channels where hostname='%s' order by created_epoch", hostname);
-+                      }
-+              } else if (!strcasecmp(command, "channels")) {
-+                      sprintf(sql, "select * from channels where hostname='%s' order by created_epoch", hostname);
-+                      if (argv[1] && !strcasecmp(argv[1], "count")) {
-+                              holder.justcount = 1;
-+                              if (argv[3] && !strcasecmp(argv[2], "as")) {
-+                                      as = argv[3];
-+                              }
-+                      }
-+              } else if (!strcasecmp(command, "detailed_calls")) {
-+                      sprintf(sql, "select * from detailed_calls where hostname='%s' order by created_epoch", hostname);
-+                      if (argv[2] && !strcasecmp(argv[1], "as")) {
-+                              as = argv[2];
-+                      }
-+              } else if (!strcasecmp(command, "bridged_calls")) {
-+                      sprintf(sql, "select * from basic_calls where b_uuid is not null and hostname='%s' order by created_epoch", hostname);
-+                      if (argv[2] && !strcasecmp(argv[1], "as")) {
-+                              as = argv[2];
-+                      }
-+              } else if (!strcasecmp(command, "detailed_bridged_calls")) {
-+                      sprintf(sql, "select * from detailed_calls where b_uuid is not null and hostname='%s' order by created_epoch", hostname);
-+                      if (argv[2] && !strcasecmp(argv[1], "as")) {
-+                              as = argv[2];
-+                      }
-+              } else {
-+
-+                      stream->write_function(stream, "-USAGE: %s\n", SHOW_SYNTAX);
-+                      goto end;
-+              }
-       }
-       holder.stream = stream;
-       holder.count = 0;
--      if (holder.http) {
-+      if (html) {
-+              nl = holder.format->nl;
-+              if (!as || strcasecmp(as,"xml")) {
-+                      /* don't bother cli with heading and timestamp */
-+                      stream->write_function(stream, "<h1>FreeSWITCH %s %s</h1>\n", command, holder.justcount?"(count)":"");
-+                      stream->write_function(stream, "%s%s", switch_event_get_header(stream->param_event,"Event-Date-Local"), nl);
-+              }
-               holder.stream->write_function(holder.stream, "<table cellpadding=1 cellspacing=4 border=1>\n");
-       }
-@@ -4687,7 +4725,7 @@ SWITCH_STANDARD_API(show_function)
-               holder.delim = ",";
-       }
--      /* switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "SQL: %s.\n", sql); */
-+      /* switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "SQL: %s\n", sql); */
-       if (!strcasecmp(as, "delim") || !strcasecmp(as, "csv")) {
-               if (zstr(holder.delim)) {
-@@ -4696,25 +4734,25 @@ SWITCH_STANDARD_API(show_function)
-                       }
-               }
-               switch_cache_db_execute_sql_callback(db, sql, show_callback, &holder, &errmsg);
--              if (holder.http) {
-+              if (html) {
-                       holder.stream->write_function(holder.stream, "</table>");
-               }
-               if (errmsg) {
--                      stream->write_function(stream, "-ERR SQL Error [%s]\n", errmsg);
-+                      stream->write_function(stream, "-ERR SQL error [%s]\n", errmsg);
-                       free(errmsg);
-                       errmsg = NULL;
-               } else if (help) {
-                       if (holder.count == 0)
--                              stream->write_function(stream, "-ERR No such command.\n");
-+                              stream->write_function(stream, "-ERR No such command\n");
-               } else {
--                      stream->write_function(stream, "\n%u total.\n", holder.count);
-+                      stream->write_function(stream, "%s%u total.%s", nl, holder.count, nl);
-               }
-       } else if (!strcasecmp(as, "xml")) {
-               switch_cache_db_execute_sql_callback(db, sql, show_as_xml_callback, &holder, &errmsg);
-               if (errmsg) {
--                      stream->write_function(stream, "-ERR SQL Error [%s]\n", errmsg);
-+                      stream->write_function(stream, "-ERR SQL error [%s]\n", errmsg);
-                       free(errmsg);
-                       errmsg = NULL;
-               }
-@@ -4778,6 +4816,7 @@ SWITCH_STANDARD_API(show_function)
-       } else {
-               holder.stream->write_function(holder.stream, "-ERR Cannot find format %s\n", as);
-+              goto end;
-       }
-   end:
-@@ -4831,7 +4870,7 @@ SWITCH_STANDARD_API(uuid_session_heartbeat_function)
-       }
-       if (!(l_session = switch_core_session_locate(argv[0]))) {
--              stream->write_function(stream, "-ERR Usage: cannot locate session.\n");
-+              stream->write_function(stream, "-ERR Cannot locate session. USAGE: uuid_session_heartbeat %s\n", HEARTBEAT_SYNTAX);
-               return SWITCH_STATUS_SUCCESS;
-       }
-@@ -4870,7 +4909,7 @@ SWITCH_STANDARD_API(uuid_session_heartbeat_function)
-   error:
-       switch_safe_free(mycmd);
--      stream->write_function(stream, "-ERR Usage: uuid_session_heartbeat %s", HEARTBEAT_SYNTAX);
-+      stream->write_function(stream, "-USAGE: uuid_session_heartbeat %s\n", HEARTBEAT_SYNTAX);
-       return SWITCH_STATUS_SUCCESS;
- }
-@@ -4883,7 +4922,7 @@ SWITCH_STANDARD_API(uuid_flush_dtmf_function)
-               switch_core_session_rwunlock(fsession);
-               stream->write_function(stream, "+OK\n");
-       } else {
--              stream->write_function(stream, "-ERR no such session\n");
-+              stream->write_function(stream, "-ERR No such session\n");
-       }
-       return SWITCH_STATUS_SUCCESS;
-@@ -4937,7 +4976,7 @@ SWITCH_STANDARD_API(uuid_setvar_function)
-                               switch_core_session_rwunlock(psession);
-                       } else {
--                              stream->write_function(stream, "-ERR No Such Channel!\n");
-+                              stream->write_function(stream, "-ERR No such channel!\n");
-                       }
-                       goto done;
-               }
-@@ -4991,7 +5030,7 @@ SWITCH_STANDARD_API(uuid_setvar_multi_function)
-                               goto done;
-                       }
-               } else {
--                      stream->write_function(stream, "-ERR No Such Channel!\n");
-+                      stream->write_function(stream, "-ERR No such channel!\n");
-               }
-       }
-@@ -5050,7 +5089,7 @@ SWITCH_STANDARD_API(uuid_getvar_function)
-                               switch_core_session_rwunlock(psession);
-                       } else {
--                              stream->write_function(stream, "-ERR No Such Channel!\n");
-+                              stream->write_function(stream, "-ERR No such channel!\n");
-                       }
-                       goto done;
-               }
-@@ -5080,21 +5119,21 @@ SWITCH_STANDARD_API(uuid_fileman_function)
-                       if ((psession = switch_core_session_locate(uuid))) {
-                               //switch_channel_t *channel;
-                               switch_file_handle_t *fh = NULL;
--                              
-+
-                               //channel = switch_core_session_get_channel(psession);
--                              
-+
-                               if (switch_ivr_get_file_handle(psession, &fh) == SWITCH_STATUS_SUCCESS) {
-                                       switch_ivr_process_fh(psession, cmd, fh);
-                                       switch_ivr_release_file_handle(psession, &fh);
-                                       stream->write_function(stream, "+OK\n");
-                               } else {
--                                      stream->write_function(stream, "-ERR No File Handle!\n");
-+                                      stream->write_function(stream, "-ERR No file handle!\n");
-                               }
-                               switch_core_session_rwunlock(psession);
-                       } else {
--                              stream->write_function(stream, "-ERR No Such Channel!\n");
-+                              stream->write_function(stream, "-ERR No such channel!\n");
-                       }
-                       goto done;
-               }
-@@ -5205,7 +5244,7 @@ SWITCH_STANDARD_API(uuid_recv_dtmf_function)
- SWITCH_STANDARD_API(uuid_dump_function)
- {
-       switch_core_session_t *psession = NULL;
--      char *mycmd = NULL, *argv[4] = { 0 };
-+      char *mycmd = NULL, *argv[2] = { 0 };
-       int argc = 0;
-       if (!zstr(cmd) && (mycmd = strdup(cmd))) {
-@@ -5241,7 +5280,7 @@ SWITCH_STANDARD_API(uuid_dump_function)
-                                       } else if (!strcasecmp(format, "json")) {
-                                               switch_event_serialize_json(event, &buf);
-                                       } else {
--                                              switch_event_serialize(event, &buf, strcasecmp(format, "plain"));
-+                                              switch_event_serialize(event, &buf, (switch_bool_t) strcasecmp(format, "plain"));
-                                       }
-                                       switch_assert(buf);
-@@ -5255,7 +5294,7 @@ SWITCH_STANDARD_API(uuid_dump_function)
-                               switch_core_session_rwunlock(psession);
-                       } else {
--                              stream->write_function(stream, "-ERR No Such Channel!\n");
-+                              stream->write_function(stream, "-ERR No such channel!\n");
-                       }
-                       goto done;
-               }
-@@ -5366,7 +5405,7 @@ SWITCH_STANDARD_API(strftime_tz_api_function)
-               if ((format = strchr(mycmd, ' '))) {
-                       *format++ = '\0';
--              
-+
-                       if (format && (p = strchr(format, '|'))) {
-                               *p++ = '\0';
-                               when = atol(format);
-@@ -5378,11 +5417,11 @@ SWITCH_STANDARD_API(strftime_tz_api_function)
-       if (zstr(format)) {
-               format = "%Y-%m-%d";
-       }
--      
-+
-       if (format && switch_strftime_tz(tz_name, format, date, sizeof(date), when * 1000000) == SWITCH_STATUS_SUCCESS) {       /* The lookup of the zone may fail. */
-               stream->write_function(stream, "%s", date);
-       } else {
--              stream->write_function(stream, "-ERR Invalid Timezone/Format\n");
-+              stream->write_function(stream, "-ERR Invalid timezone/format\n");
-       }
-       switch_safe_free(mycmd);
-@@ -5508,7 +5547,7 @@ SWITCH_STANDARD_API(uuid_loglevel)
-                       stream->write_function(stream, "+OK\n");
-                       switch_core_session_rwunlock(tsession);
-               } else {
--                      stream->write_function(stream, "-ERR No Such Channel %s!\n", uuid);
-+                      stream->write_function(stream, "-ERR No such channel %s!\n", uuid);
-               }
-       }
-@@ -5544,7 +5583,7 @@ SWITCH_STANDARD_API(limit_usage_function)
-               switch_assert(mydata);
-               argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
-       }
--      
-+
-       /* backwards compat version */
-       if (argc == 2) {
-               switch_safe_free(mydata);
-@@ -5555,7 +5594,7 @@ SWITCH_STANDARD_API(limit_usage_function)
-               argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Using deprecated limit api: Please specify backend.  Defaulting to 'db' backend.\n");
-       }
--      
-+
-       if (argc < 3) {
-               stream->write_function(stream, "USAGE: limit_usage %s\n", LIMIT_USAGE_SYNTAX);
-               goto end;
-@@ -5566,9 +5605,9 @@ SWITCH_STANDARD_API(limit_usage_function)
-                       dorate = SWITCH_TRUE;
-               }
-       }
--      
-+
-       count = switch_limit_usage(argv[0], argv[1], argv[2], &rcount);
--      
-+
-       if (dorate == SWITCH_TRUE) {
-               stream->write_function(stream, "%d/%d", count, rcount);
-       } else {
-@@ -5615,7 +5654,7 @@ SWITCH_STANDARD_API(limit_status_function)
-               stream->write_function(stream, "USAGE: limit_status %s\n", LIMIT_STATUS_SYNTAX);
-               goto end;
-       }
--      
-+
-       ret = switch_limit_status(argv[0]);
-       stream->write_function(stream, "%s", ret);
-@@ -5645,7 +5684,7 @@ SWITCH_STANDARD_API(limit_reset_function)
-               stream->write_function(stream, "USAGE: limit_reset %s\n", LIMIT_RESET_SYNTAX);
-               goto end;
-       }
--      
-+
-       ret = switch_limit_reset(argv[0]);
-       stream->write_function(stream, "%s", (ret == SWITCH_STATUS_SUCCESS) ? "+OK" : "-ERR");
-@@ -5675,7 +5714,7 @@ SWITCH_STANDARD_API(uuid_limit_function)
-               switch_assert(mydata);
-               argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
-       }
--      
-+
-       if (argc < 4) {
-               stream->write_function(stream, "USAGE: uuid_limit %s\n", LIMIT_SYNTAX);
-               goto end;
-@@ -5711,7 +5750,7 @@ SWITCH_STANDARD_API(uuid_limit_function)
-       sess = switch_core_session_locate(argv[0]);
-       if (!sess) {
--              stream->write_function(stream, "-ERR did not find a session with uuid %s\n", argv[0]);
-+              stream->write_function(stream, "-ERR Cannot find session with uuid %s\n", argv[0]);
-               goto end;
-       }
-@@ -5752,7 +5791,7 @@ SWITCH_STANDARD_API(uuid_limit_release_function)
-               switch_assert(mydata);
-               argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
-       }
--      
-+
-       if (argc < 2) {
-               stream->write_function(stream, "USAGE: uuid_limit_release %s\n", LIMIT_RELEASE_SYNTAX);
-               goto end;
-@@ -5768,14 +5807,14 @@ SWITCH_STANDARD_API(uuid_limit_release_function)
-       sess = switch_core_session_locate(argv[0]);
-       if (!sess) {
--              stream->write_function(stream, "-ERR did not find a session with uuid %s\n", argv[0]);
-+              stream->write_function(stream, "-ERR Cannot find session with uuid %s\n", argv[0]);
-               goto end;
-       }
-       switch_limit_release(argv[1], sess, realm, resource);
-       switch_core_session_rwunlock(sess);
--      
-+
-       stream->write_function(stream, "+OK");
- end:
-@@ -5796,7 +5835,7 @@ SWITCH_STANDARD_API(limit_interval_reset_function)
-               switch_assert(mydata);
-               argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
-       }
--      
-+
-       if (argc < 3) {
-               stream->write_function(stream, "USAGE: limit_interval_reset %s\n", LIMIT_INTERVAL_RESET_SYNTAX);
-               goto end;
-@@ -5890,132 +5929,131 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_commands_load)
-       switch_thread_rwlock_create(&bgapi_rwlock, pool);
-       switch_mutex_init(&reload_mutex, SWITCH_MUTEX_NESTED, pool);
--      
--      SWITCH_ADD_API(commands_api_interface, "acl", "compare an ip to an acl list", acl_function, "<ip> <list_name>");
-+
-+      SWITCH_ADD_API(commands_api_interface, "acl", "Compare an ip to an acl list", acl_function, "<ip> <list_name>");
-       SWITCH_ADD_API(commands_api_interface, "alias", "Alias", alias_function, ALIAS_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "banner", "Returns the system banner", banner_function, "");
-+      SWITCH_ADD_API(commands_api_interface, "banner", "Return the system banner", banner_function, "");
-       SWITCH_ADD_API(commands_api_interface, "bgapi", "Execute an api command in a thread", bgapi_function, "<command>[ <arg>]");
-       SWITCH_ADD_API(commands_api_interface, "bg_system", "Execute a system command in the background", bg_system_function, SYSTEM_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "break", "Break", break_function, BREAK_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "break", "uuid_break", break_function, BREAK_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "complete", "Complete", complete_function, COMPLETE_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "cond", "Eval a conditional", cond_function, "<expr> ? <true val> : <false val>");
-+      SWITCH_ADD_API(commands_api_interface, "cond", "Evaluate a conditional", cond_function, "<expr> ? <true val> : <false val>");
-       SWITCH_ADD_API(commands_api_interface, "console_complete", "", console_complete_function, "<line>");
-       SWITCH_ADD_API(commands_api_interface, "console_complete_xml", "", console_complete_xml_function, "<line>");
-       SWITCH_ADD_API(commands_api_interface, "create_uuid", "Create a uuid", uuid_function, UUID_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "db_cache", "db cache management", db_cache_function, "status");
--      SWITCH_ADD_API(commands_api_interface, "domain_exists", "check if a domain exists", domain_exists_function, "<domain>");
--      SWITCH_ADD_API(commands_api_interface, "echo", "echo", echo_function, "<data>");
--      SWITCH_ADD_API(commands_api_interface, "escape", "escape a string", escape_function, "<data>");
-+      SWITCH_ADD_API(commands_api_interface, "db_cache", "Manage db cache", db_cache_function, "status");
-+      SWITCH_ADD_API(commands_api_interface, "domain_exists", "Check if a domain exists", domain_exists_function, "<domain>");
-+      SWITCH_ADD_API(commands_api_interface, "echo", "Echo", echo_function, "<data>");
-+      SWITCH_ADD_API(commands_api_interface, "escape", "Escape a string", escape_function, "<data>");
-       SWITCH_ADD_API(commands_api_interface, "eval", "eval (noop)", eval_function, "[uuid:<uuid> ]<expression>");
--      SWITCH_ADD_API(commands_api_interface, "expand", "expand vars and execute", expand_function, "[uuid:<uuid> ]<cmd> <args>");
--      SWITCH_ADD_API(commands_api_interface, "find_user_xml", "find a user", find_user_function, "<key> <user> <domain>");
--      SWITCH_ADD_API(commands_api_interface, "fsctl", "control messages", ctl_function, CTL_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "...", "shutdown", shutdown_function, "");
--      SWITCH_ADD_API(commands_api_interface, "shutdown", "shutdown", shutdown_function, "");
--      SWITCH_ADD_API(commands_api_interface, "version", "version", version_function, "[short]");
--      SWITCH_ADD_API(commands_api_interface, "global_getvar", "global_getvar", global_getvar_function, GLOBAL_GETVAR_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "global_setvar", "global_setvar", global_setvar_function, GLOBAL_SETVAR_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "expand", "Execute an api with variable expansion", expand_function, "[uuid:<uuid> ]<cmd> <args>");
-+      SWITCH_ADD_API(commands_api_interface, "find_user_xml", "Find a user", find_user_function, "<key> <user> <domain>");
-+      SWITCH_ADD_API(commands_api_interface, "fsctl", "FS control messages", ctl_function, CTL_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "...", "Shutdown", shutdown_function, "");
-+      SWITCH_ADD_API(commands_api_interface, "shutdown", "Shutdown", shutdown_function, "");
-+      SWITCH_ADD_API(commands_api_interface, "version", "Version", version_function, "[short]");
-+      SWITCH_ADD_API(commands_api_interface, "global_getvar", "Get global var", global_getvar_function, GLOBAL_GETVAR_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "global_setvar", "Set global var", global_setvar_function, GLOBAL_SETVAR_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "group_call", "Generate a dial string to call a group", group_call_function, "<group>[@<domain>]");
-       SWITCH_ADD_API(commands_api_interface, "help", "Show help for all the api commands", help_function, "");
--      SWITCH_ADD_API(commands_api_interface, "host_lookup", "host_lookup", host_lookup_function, "<hostname>");
--      SWITCH_ADD_API(commands_api_interface, "hostname", "Returns the system hostname", hostname_api_function, "");
--      SWITCH_ADD_API(commands_api_interface, "switchname", "Returns the switch name", switchname_api_function, "");
-+      SWITCH_ADD_API(commands_api_interface, "host_lookup", "Lookup host", host_lookup_function, "<hostname>");
-+      SWITCH_ADD_API(commands_api_interface, "hostname", "Return the system hostname", hostname_api_function, "");
-+      SWITCH_ADD_API(commands_api_interface, "switchname", "Return the switch name", switchname_api_function, "");
-       SWITCH_ADD_API(commands_api_interface, "hupall", "hupall", hupall_api_function, "<cause> [<var> <value>]");
--      SWITCH_ADD_API(commands_api_interface, "in_group", "determine if a user is in a group", in_group_function, "<user>[@<domain>] <group_name>");
--      SWITCH_ADD_API(commands_api_interface, "is_lan_addr", "see if an ip is a lan addr", lan_addr_function, "<ip>");
--      SWITCH_ADD_API(commands_api_interface, "limit_usage", "Gets the usage count of a limited resource", limit_usage_function, "<backend> <realm> <id>");
-+      SWITCH_ADD_API(commands_api_interface, "in_group", "Determine if a user is in a group", in_group_function, "<user>[@<domain>] <group_name>");
-+      SWITCH_ADD_API(commands_api_interface, "is_lan_addr", "See if an ip is a lan addr", lan_addr_function, "<ip>");
-+      SWITCH_ADD_API(commands_api_interface, "limit_usage", "Get the usage count of a limited resource", limit_usage_function, "<backend> <realm> <id>");
-       SWITCH_ADD_API(commands_api_interface, "limit_hash_usage", "Deprecated: gets the usage count of a limited resource", limit_hash_usage_function, "<realm> <id>");
--      SWITCH_ADD_API(commands_api_interface, "limit_status", "Gets the status of a limit backend", limit_status_function, "<backend>");
-+      SWITCH_ADD_API(commands_api_interface, "limit_status", "Get the status of a limit backend", limit_status_function, "<backend>");
-       SWITCH_ADD_API(commands_api_interface, "limit_reset", "Reset the counters of a limit backend", limit_reset_function, "<backend>");
-       SWITCH_ADD_API(commands_api_interface, "limit_interval_reset", "Reset the interval counter for a limited resource", limit_interval_reset_function, LIMIT_INTERVAL_RESET_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "list_users", "List Users configured in Directory", list_users_function, LIST_USERS_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "load", "Load Module", load_function, LOAD_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "log", "Log", log_function, LOG_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "md5", "md5", md5_function, "<data>");
--      SWITCH_ADD_API(commands_api_interface, "module_exists", "check if module exists", module_exists_function, "<module>");
--      SWITCH_ADD_API(commands_api_interface, "msleep", "sleep N milliseconds", msleep_function, "<milliseconds>");
--      SWITCH_ADD_API(commands_api_interface, "nat_map", "nat_map", nat_map_function, "[status|republish|reinit] | [add|del] <port> [tcp|udp] [static]");
--      SWITCH_ADD_API(commands_api_interface, "originate", "Originate a Call", originate_function, ORIGINATE_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "pause", "Pause", pause_function, PAUSE_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "regex", "Eval a regex", regex_function, "<data>|<pattern>[|<subst string>]");
--      SWITCH_ADD_API(commands_api_interface, "reloadacl", "Reload ACL", reload_acl_function, "");
--      SWITCH_ADD_API(commands_api_interface, "reload", "Reload Module", reload_function, UNLOAD_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "md5", "Return md5 hash", md5_function, "<data>");
-+      SWITCH_ADD_API(commands_api_interface, "module_exists", "Check if module exists", module_exists_function, "<module>");
-+      SWITCH_ADD_API(commands_api_interface, "msleep", "Sleep N milliseconds", msleep_function, "<milliseconds>");
-+      SWITCH_ADD_API(commands_api_interface, "nat_map", "Manage NAT", nat_map_function, "[status|republish|reinit] | [add|del] <port> [tcp|udp] [static]");
-+      SWITCH_ADD_API(commands_api_interface, "originate", "Originate a call", originate_function, ORIGINATE_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "pause", "Pause media on a channel", pause_function, PAUSE_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "regex", "Evaluate a regex", regex_function, "<data>|<pattern>[|<subst string>]");
-+      SWITCH_ADD_API(commands_api_interface, "reloadacl", "Reload XML", reload_acl_function, "");
-+      SWITCH_ADD_API(commands_api_interface, "reload", "Reload module", reload_function, UNLOAD_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "reloadxml", "Reload XML", reload_xml_function, "");
--      SWITCH_ADD_API(commands_api_interface, "replace", "replace a string", replace_function, "<data>|<string1>|<string2>");
-+      SWITCH_ADD_API(commands_api_interface, "replace", "Replace a string", replace_function, "<data>|<string1>|<string2>");
-       SWITCH_ADD_API(commands_api_interface, "say_string", "", say_string_function, SAY_STRING_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "sched_api", "Schedule an api command", sched_api_function, SCHED_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "sched_broadcast", "Schedule a broadcast event to a running call", sched_broadcast_function,
--                                 SCHED_BROADCAST_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "sched_del", "Delete a Scheduled task", sched_del_function, "<task_id>|<group_id>");
-+      SWITCH_ADD_API(commands_api_interface, "sched_broadcast", "Schedule a broadcast event to a running call", sched_broadcast_function, SCHED_BROADCAST_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "sched_del", "Delete a scheduled task", sched_del_function, "<task_id>|<group_id>");
-       SWITCH_ADD_API(commands_api_interface, "sched_hangup", "Schedule a running call to hangup", sched_hangup_function, SCHED_HANGUP_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "sched_transfer", "Schedule a transfer for a running call", sched_transfer_function, SCHED_TRANSFER_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "show", "Show", show_function, SHOW_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "show", "Show various reports", show_function, SHOW_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "sql_escape", "Escape a string to prevent sql injection", sql_escape, SQL_ESCAPE_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "status", "status", status_function, "");
--      SWITCH_ADD_API(commands_api_interface, "strftime_tz", "strftime_tz", strftime_tz_api_function, "<Timezone_name> [<epoch>|][format string]");
--      SWITCH_ADD_API(commands_api_interface, "stun", "stun", stun_function, "<stun_server>[:port]");
-+      SWITCH_ADD_API(commands_api_interface, "status", "Show current status", status_function, "");
-+      SWITCH_ADD_API(commands_api_interface, "strftime_tz", "Display formatted time of timezone", strftime_tz_api_function, "<timezone_name> [<epoch>|][format string]");
-+      SWITCH_ADD_API(commands_api_interface, "stun", "Execute STUN lookup", stun_function, "<stun_server>[:port]");
-       SWITCH_ADD_API(commands_api_interface, "system", "Execute a system command", system_function, SYSTEM_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "time_test", "time_test", time_test_function, "<mss> [count]");
--      SWITCH_ADD_API(commands_api_interface, "timer_test", "timer_test", timer_test_function, TIMER_TEST_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "tone_detect", "Start Tone Detection on a channel", tone_detect_session_function, TONE_DETECT_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "unload", "Unload Module", unload_function, UNLOAD_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "time_test", "Show time jitter", time_test_function, "<mss> [count]");
-+      SWITCH_ADD_API(commands_api_interface, "timer_test", "Exercise FS timer", timer_test_function, TIMER_TEST_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "tone_detect", "Start tone detection on a channel", tone_detect_session_function, TONE_DETECT_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "unload", "Unload module", unload_function, UNLOAD_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "unsched_api", "Unschedule an api command", unsched_api_function, UNSCHED_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "reg_url", "", reg_url_function, "<user>@<realm>");
--      SWITCH_ADD_API(commands_api_interface, "url_decode", "url decode a string", url_decode_function, "<string>");
--      SWITCH_ADD_API(commands_api_interface, "url_encode", "url encode a string", url_encode_function, "<string>");
--      SWITCH_ADD_API(commands_api_interface, "user_data", "find user data", user_data_function, "<user>@<domain> [var|param|attr] <name>");
-+      SWITCH_ADD_API(commands_api_interface, "url_decode", "Url decode a string", url_decode_function, "<string>");
-+      SWITCH_ADD_API(commands_api_interface, "url_encode", "Url encode a string", url_encode_function, "<string>");
-+      SWITCH_ADD_API(commands_api_interface, "user_data", "Find user data", user_data_function, "<user>@<domain> [var|param|attr] <name>");
-       SWITCH_ADD_API(commands_api_interface, "uuid_early_ok", "stop ignoring early media", uuid_early_ok_function, "<uuid>");
--      SWITCH_ADD_API(commands_api_interface, "user_exists", "find a user", user_exists_function, "<key> <user> <domain>");
-+      SWITCH_ADD_API(commands_api_interface, "user_exists", "Find a user", user_exists_function, "<key> <user> <domain>");
-       SWITCH_ADD_API(commands_api_interface, "uuid_answer", "answer", uuid_answer_function, "<uuid>");
-       SWITCH_ADD_API(commands_api_interface, "uuid_audio", "uuid_audio", session_audio_function, AUDIO_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_break", "Break", break_function, BREAK_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_bridge", "uuid_bridge", uuid_bridge_function, "");
--      SWITCH_ADD_API(commands_api_interface, "uuid_broadcast", "broadcast", uuid_broadcast_function, BROADCAST_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_break", "Break out of media sent to channel", break_function, BREAK_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_bridge", "Bridge call legs", uuid_bridge_function, "");
-+      SWITCH_ADD_API(commands_api_interface, "uuid_broadcast", "Execute dialplan application", uuid_broadcast_function, BROADCAST_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "uuid_buglist", "List media bugs on a session", uuid_buglist_function, BUGLIST_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "uuid_chat", "Send a chat message", uuid_chat, UUID_CHAT_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_debug_audio", "debug audio", uuid_debug_audio_function, DEBUG_AUDIO_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_debug_audio", "Debug audio", uuid_debug_audio_function, DEBUG_AUDIO_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "uuid_deflect", "Send a deflect", uuid_deflect, UUID_DEFLECT_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_displace", "session displace", session_displace_function, "<uuid> [start|stop] <path> [<limit>] [mux]");
--      SWITCH_ADD_API(commands_api_interface, "uuid_display", "change display", uuid_display_function, DISPLAY_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_dump", "uuid_dump", uuid_dump_function, DUMP_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_exists", "see if a uuid exists", uuid_exists_function, EXISTS_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_fileman", "uuid_fileman", uuid_fileman_function, FILEMAN_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_displace", "Displace audio", session_displace_function, "<uuid> [start|stop] <path> [<limit>] [mux]");
-+      SWITCH_ADD_API(commands_api_interface, "uuid_display", "Update phone display", uuid_display_function, DISPLAY_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_dump", "Dump session vars", uuid_dump_function, DUMP_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_exists", "Check if a uuid exists", uuid_exists_function, EXISTS_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_fileman", "Manage session audio", uuid_fileman_function, FILEMAN_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "uuid_flush_dtmf", "Flush dtmf on a given uuid", uuid_flush_dtmf_function, "<uuid>");
--      SWITCH_ADD_API(commands_api_interface, "uuid_getvar", "uuid_getvar", uuid_getvar_function, GETVAR_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_hold", "hold", uuid_hold_function, HOLD_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_kill", "Kill Channel", kill_function, KILL_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_getvar", "Get a variable from a channel", uuid_getvar_function, GETVAR_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_hold", "Place call on hold", uuid_hold_function, HOLD_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_kill", "Kill channel", kill_function, KILL_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "uuid_send_message", "Send MESSAGE to the endpoint", uuid_send_message_function, SEND_MESSAGE_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "uuid_send_info", "Send info to the endpoint", uuid_send_info_function, INFO_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "uuid_video_refresh", "Send video refresh.", uuid_video_refresh_function, VIDEO_REFRESH_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_outgoing_answer", "Answer Outgoing Channel", outgoing_answer_function, OUTGOING_ANSWER_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_limit", "Increase limit resource", uuid_limit_function, LIMIT_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_outgoing_answer", "Answer outgoing channel", outgoing_answer_function, OUTGOING_ANSWER_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_limit", "Increase limit resource", uuid_limit_function, LIMIT_SYNTAX);     
-+      SWITCH_ADD_API(commands_api_interface, "uuid_limit_release", "Release limit resource", uuid_limit_release_function, LIMIT_RELEASE_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "uuid_limit_release", "Release limit resource", uuid_limit_release_function, LIMIT_RELEASE_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_loglevel", "set loglevel on session", uuid_loglevel, UUID_LOGLEVEL_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_media", "media", uuid_media_function, MEDIA_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_media_reneg", "media negotiation", uuid_media_neg_function, MEDIA_RENEG_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_park", "Park Channel", park_function, PARK_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_phone_event", "Send and event to the phone", uuid_phone_event_function, PHONE_EVENT_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_loglevel", "Set loglevel on session", uuid_loglevel, UUID_LOGLEVEL_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_media", "Reinvite FS in or out of media path", uuid_media_function, MEDIA_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_media_reneg", "Media negotiation", uuid_media_neg_function, MEDIA_RENEG_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_park", "Park channel", park_function, PARK_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_pause", "Pause media on a channel", pause_function, PAUSE_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_phone_event", "Send an event to the phone", uuid_phone_event_function, PHONE_EVENT_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "uuid_pre_answer", "pre_answer", uuid_pre_answer_function, "<uuid>");
-       SWITCH_ADD_API(commands_api_interface, "uuid_preprocess", "Pre-process Channel", preprocess_function, PREPROCESS_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_record", "session record", session_record_function, SESS_REC_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_record", "Record session audio", session_record_function, SESS_REC_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "uuid_recovery_refresh", "Send a recovery_refresh", uuid_recovery_refresh, UUID_RECOVERY_REFRESH_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_recv_dtmf", "receive dtmf digits", uuid_recv_dtmf_function, UUID_RECV_DTMF_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_send_dtmf", "send dtmf digits", uuid_send_dtmf_function, UUID_SEND_DTMF_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_recv_dtmf", "Receive dtmf digits", uuid_recv_dtmf_function, UUID_RECV_DTMF_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_send_dtmf", "Send dtmf digits", uuid_send_dtmf_function, UUID_SEND_DTMF_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "uuid_session_heartbeat", "uuid_session_heartbeat", uuid_session_heartbeat_function, HEARTBEAT_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_setvar_multi", "uuid_setvar_multi", uuid_setvar_multi_function, SETVAR_MULTI_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_setvar", "uuid_setvar", uuid_setvar_function, SETVAR_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_setvar_multi", "Set multiple variables", uuid_setvar_multi_function, SETVAR_MULTI_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_setvar", "Set a variable", uuid_setvar_function, SETVAR_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "uuid_transfer", "Transfer a session", transfer_function, TRANSFER_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "uuid_dual_transfer", "Transfer a session and its partner", dual_transfer_function, DUAL_TRANSFER_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "uuid_simplify", "Try to cut out of a call path / attended xfer", uuid_simplify_function, SIMPLIFY_SYNTAX);
--      SWITCH_ADD_API(commands_api_interface, "uuid_jitterbuffer", "Try to cut out of a call path / attended xfer", 
--                                 uuid_jitterbuffer_function, JITTERBUFFER_SYNTAX);
-+      SWITCH_ADD_API(commands_api_interface, "uuid_jitterbuffer", "uuid_jitterbuffer", uuid_jitterbuffer_function, JITTERBUFFER_SYNTAX);
-       SWITCH_ADD_API(commands_api_interface, "uuid_zombie_exec", "Set zombie_exec flag on the specified uuid", uuid_zombie_exec_function, "<uuid>");
--      SWITCH_ADD_API(commands_api_interface, "xml_flush_cache", "clear xml cache", xml_flush_function, "<id> <key> <val>");
--      SWITCH_ADD_API(commands_api_interface, "xml_locate", "find some xml", xml_locate_function, "[root | <section> <tag> <tag_attr_name> <tag_attr_val>]");
-+      SWITCH_ADD_API(commands_api_interface, "xml_flush_cache", "Clear xml cache", xml_flush_function, "<id> <key> <val>");
-+      SWITCH_ADD_API(commands_api_interface, "xml_locate", "Find some xml", xml_locate_function, "[root | <section> <tag> <tag_attr_name> <tag_attr_val>]");
-       SWITCH_ADD_API(commands_api_interface, "xml_wrap", "Wrap another api command in xml", xml_wrap_api_function, "<command> <args>");
--      SWITCH_ADD_API(commands_api_interface, "file_exists", "check if a file exists on server", file_exists_function, "<file>");
--
-+      SWITCH_ADD_API(commands_api_interface, "file_exists", "Check if a file exists on server", file_exists_function, "<file>");
-       switch_console_set_complete("add alias add");
-       switch_console_set_complete("add alias del");
-@@ -6100,6 +6138,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_commands_load)
-       switch_console_set_complete("add show nat_map");
-       switch_console_set_complete("add show registrations");
-       switch_console_set_complete("add show say");
-+      switch_console_set_complete("add show status");
-       switch_console_set_complete("add show timer");
-       switch_console_set_complete("add shutdown");
-       switch_console_set_complete("add sql_escape");
-@@ -6165,18 +6204,17 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_commands_load)
-       switch_console_set_complete("add ...");
-       switch_console_set_complete("add file_exists");
--
-       /* indicate that the module should continue to be loaded */
-       return SWITCH_STATUS_NOUNLOAD;
- }
- /* For Emacs:
-- * Local Variables:
-- * mode:c
-- * indent-tabs-mode:t
-- * tab-width:4
-- * c-basic-offset:4
-- * End:
-- * For VIM:
-- * vim:set softtabstop=4 shiftwidth=4 tabstop=4 noet:
-- */
-+* Local Variables:
-+* mode:c
-+* indent-tabs-mode:t
-+* tab-width:4
-+* c-basic-offset:4
-+* End:
-+* For VIM:
-+* vim:set softtabstop=4 shiftwidth=4 tabstop=4 noet:
-+*/
-diff --git a/src/mod/languages/mod_lua/mod_lua.cpp b/src/mod/languages/mod_lua/mod_lua.cpp
-index 0df0d8f..a409f05 100644
---- a/src/mod/languages/mod_lua/mod_lua.cpp
-+++ b/src/mod/languages/mod_lua/mod_lua.cpp
-@@ -483,10 +483,14 @@ SWITCH_STANDARD_API(lua_api_function)
-               }
-               if ((error = lua_parse_and_execute(L, mycmd))) {
--                      if (switch_event_get_header(stream->param_event, "http-host")) {
--                              stream->write_function(stream, "Content-Type: text/html\n\n<H2>Error Executing Script</H2>");
-+                      char * http = switch_event_get_header(stream->param_event, "http-uri");
-+                      if (http && (!strncasecmp(http, "/api/", 5) || !strncasecmp(http, "/webapi/", 8))) {
-+                                      /* api -> fs api streams the Content-Type e.g. text/html or text/xml               */
-+                                      /* api -> default Content-Type is text/plain                                                   */
-+                                      /* webapi, txtapi -> Content-Type defined in mod_xmlrpc text/html resp. text/plain */
-+                                      stream->write_function(stream, "<H2>Error Executing Script</H2>");
-                       } else {
--                              stream->write_function(stream, "-ERR encountered\n");
-+                              stream->write_function(stream, "-ERR Cannot execute script\n");
-                       }
-               }
-               lua_uninit(L);
-diff --git a/src/mod/xml_int/mod_xml_rpc/Makefile b/src/mod/xml_int/mod_xml_rpc/Makefile
-index b4890d5..cfc0276 100644
---- a/src/mod/xml_int/mod_xml_rpc/Makefile
-+++ b/src/mod/xml_int/mod_xml_rpc/Makefile
-@@ -1,7 +1,8 @@
- BASE=../../../..
- XMLRPC_DIR=$(BASE)/libs/xmlrpc-c
--LOCAL_OBJS = $(XMLRPC_DIR)/lib/libutil/asprintf.o\
-+LOCAL_OBJS = $(XMLRPC_DIR)/src/version.o\
-+$(XMLRPC_DIR)/lib/libutil/asprintf.o\
- $(XMLRPC_DIR)/lib/util/casprintf.o\
- $(XMLRPC_DIR)/lib/abyss/src/channel.o\
- $(XMLRPC_DIR)/lib/abyss/src/chanswitch.o\
-@@ -22,6 +23,7 @@ $(XMLRPC_DIR)/lib/libutil/make_printable.o\
- $(XMLRPC_DIR)/lib/libutil/memblock.o\
- $(XMLRPC_DIR)/src/method.o\
- $(XMLRPC_DIR)/src/parse_value.o\
-+$(XMLRPC_DIR)/src/parse_datetime.o\
- $(XMLRPC_DIR)/src/registry.o\
- $(XMLRPC_DIR)/src/resource.o\
- $(XMLRPC_DIR)/lib/abyss/src/response.o\
-@@ -40,7 +42,8 @@ $(XMLRPC_DIR)/lib/abyss/src/token.o\
- $(XMLRPC_DIR)/src/trace.o\
- $(XMLRPC_DIR)/lib/abyss/src/trace.o\
- $(XMLRPC_DIR)/lib/libutil/utf8.o\
--$(XMLRPC_DIR)/src/version.o\
-+$(XMLRPC_DIR)/lib/libutil/string_number.o\
-+$(XMLRPC_DIR)/lib/libutil/base64.o\
- $(XMLRPC_DIR)/lib/expat/xmlparse/xmlparse.o\
- $(XMLRPC_DIR)/lib/expat/xmltok/xmlrole.o\
- $(XMLRPC_DIR)/src/xmlrpc_array.o\
-@@ -59,14 +62,6 @@ $(XMLRPC_DIR)/src/xmlrpc_string.o\
- $(XMLRPC_DIR)/src/xmlrpc_struct.o\
- $(XMLRPC_DIR)/lib/expat/xmltok/xmltok.o
--#XMLRPCLAS  = $(XMLRPC_DIR)/src/libxmlrpc.a 
--#dont ask...
--#XMLRPCLAS  = $(XMLRPC_DIR)/src/*.o
--#XMLRPCLAS += $(XMLRPC_DIR)/src/libxmlrpc_server.so $(XMLRPC_DIR)/src/libxmlrpc.so
--#XMLRPCLAS += $(XMLRPC_DIR)/src/libxmlrpc_server_abyss.so $(XMLRPC_DIR)/lib/abyss/src/libxmlrpc_abyss.so
--#XMLRPCLAS += $(XMLRPC_DIR)/lib/expat/xmlparse/libxmlrpc_xmlparse.so $(XMLRPC_DIR)/lib/expat/xmltok/libxmlrpc_xmltok.so
--#LOCAL_LIBADD =$(XMLRPCLAS)
--
- LOCAL_CFLAGS = -w -I$(XMLRPC_DIR)/lib/expat/xmlparse -I$(XMLRPC_DIR)/lib/expat/xmltok -I$(XMLRPC_DIR) -I$(XMLRPC_DIR)/include
- LOCAL_CFLAGS+= -I$(XMLRPC_DIR)/lib/abyss/src -I$(XMLRPC_DIR)/lib/util/include -D_THREAD -D__EXTENSIONS__
-@@ -81,3 +76,15 @@ $(XMLRPC_DIR)/lib/expat/xmltok/xmltok.o: $(XMLRPC_DIR)/lib/expat/xmltok/nametab.
- $(XMLRPC_DIR)/lib/expat/xmltok/nametab.h:
-       cd $(XMLRPC_DIR)/lib/expat/gennmtab && $(MAKE)
-       cd $(XMLRPC_DIR)/lib/expat/xmltok   && ../gennmtab/gennmtab > nametab.h
-+
-+$(XMLRPC_DIR)/src/version.o: $(XMLRPC_DIR)/version.h
-+
-+$(XMLRPC_DIR)/version.h:
-+      cd $(XMLRPC_DIR) && $(MAKE) version.h
-+      cd $(XMLRPC_DIR)/include && $(MAKE) xmlrpc-c/config.h
-+
-+local_clean:
-+      cd $(XMLRPC_DIR) && $(MAKE) clean
-+
-+
-+
-diff --git a/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.2010.vcxproj b/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.2010.vcxproj
-index a57eaf0..3471e07 100644
---- a/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.2010.vcxproj
-+++ b/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.2010.vcxproj
-@@ -47,22 +47,18 @@
-   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
-     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-     <Import Project="..\..\..\..\w32\module_release.props" />\r
--    <Import Project="..\..\..\..\w32\curl.props" />\r
-   </ImportGroup>\r
-   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
-     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-     <Import Project="..\..\..\..\w32\module_debug.props" />\r
--    <Import Project="..\..\..\..\w32\curl.props" />\r
-   </ImportGroup>\r
-   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
-     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-     <Import Project="..\..\..\..\w32\module_release.props" />\r
--    <Import Project="..\..\..\..\w32\curl.props" />\r
-   </ImportGroup>\r
-   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
-     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-     <Import Project="..\..\..\..\w32\module_debug.props" />\r
--    <Import Project="..\..\..\..\w32\curl.props" />\r
-   </ImportGroup>\r
-   <PropertyGroup Label="UserMacros" />\r
-   <PropertyGroup>\r
-@@ -70,7 +66,7 @@
-   </PropertyGroup>\r
-   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
-     <ClCompile>\r
--      <AdditionalIncludeDirectories>%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\abyss\src;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\util\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\Windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <AdditionalIncludeDirectories>$(SolutionDir)libs\xmlrpc-c\include;$(SolutionDir)libs\xmlrpc-c\lib\abyss\src;$(SolutionDir)libs\xmlrpc-c\lib\util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-       <PreprocessorDefinitions>ABYSS_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-       <PrecompiledHeader>\r
-       </PrecompiledHeader>\r
-@@ -87,7 +83,7 @@
-       <TargetEnvironment>X64</TargetEnvironment>\r
-     </Midl>\r
-     <ClCompile>\r
--      <AdditionalIncludeDirectories>%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\abyss\src;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\util\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\Windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <AdditionalIncludeDirectories>$(SolutionDir)libs\xmlrpc-c\include;$(SolutionDir)libs\xmlrpc-c\lib\abyss\src;$(SolutionDir)libs\xmlrpc-c\lib\util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-       <PreprocessorDefinitions>ABYSS_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-       <PrecompiledHeader>\r
-       </PrecompiledHeader>\r
-@@ -102,7 +98,7 @@
-   </ItemDefinitionGroup>\r
-   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
-     <ClCompile>\r
--      <AdditionalIncludeDirectories>%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\abyss\src;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\util\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\Windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <AdditionalIncludeDirectories>$(SolutionDir)libs\xmlrpc-c\include;$(SolutionDir)libs\xmlrpc-c\lib\abyss\src;$(SolutionDir)libs\xmlrpc-c\lib\util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-       <PreprocessorDefinitions>ABYSS_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-       <PrecompiledHeader>\r
-       </PrecompiledHeader>\r
-@@ -119,7 +115,7 @@
-       <TargetEnvironment>X64</TargetEnvironment>\r
-     </Midl>\r
-     <ClCompile>\r
--      <AdditionalIncludeDirectories>%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\abyss\src;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\lib\util\include;%(RootDir)%(Directory)..\..\..\..\libs\xmlrpc-c\Windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+      <AdditionalIncludeDirectories>$(SolutionDir)libs\xmlrpc-c\include;$(SolutionDir)libs\xmlrpc-c\lib\abyss\src;$(SolutionDir)libs\xmlrpc-c\lib\util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-       <PreprocessorDefinitions>ABYSS_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-       <PrecompiledHeader>\r
-       </PrecompiledHeader>\r
-@@ -136,25 +132,17 @@
-     <ClCompile Include="mod_xml_rpc.c" />\r
-   </ItemGroup>\r
-   <ItemGroup>\r
--    <ProjectReference Include="..\..\..\..\libs\win32\curl\curllib.2010.vcxproj">\r
--      <Project>{87ee9da4-de1e-4448-8324-183c98dca588}</Project>\r
--      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
--    </ProjectReference>\r
--    <ProjectReference Include="..\..\..\..\libs\xmlrpc-c\Windows\abyss.2010.vcxproj">\r
-+    <ProjectReference Include="..\..\..\..\libs\win32\xmlrpc-c\abyss.2010.vcxproj">\r
-       <Project>{d2396dd7-7d38-473a-abb7-6f96d65ae1b9}</Project>\r
--      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-     </ProjectReference>\r
--    <ProjectReference Include="..\..\..\..\libs\xmlrpc-c\Windows\xmlparse.2010.vcxproj">\r
-+    <ProjectReference Include="..\..\..\..\libs\win32\xmlrpc-c\xmlparse.2010.vcxproj">\r
-       <Project>{0d108721-eae8-4baf-8102-d8960ec93647}</Project>\r
--      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-     </ProjectReference>\r
--    <ProjectReference Include="..\..\..\..\libs\xmlrpc-c\Windows\xmlrpc.2010.vcxproj">\r
-+    <ProjectReference Include="..\..\..\..\libs\win32\xmlrpc-c\xmlrpc.2010.vcxproj">\r
-       <Project>{cee544a9-0303-44c2-8ece-efa7d7bcbbba}</Project>\r
--      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-     </ProjectReference>\r
--    <ProjectReference Include="..\..\..\..\libs\xmlrpc-c\Windows\xmltok.2010.vcxproj">\r
-+    <ProjectReference Include="..\..\..\..\libs\win32\xmlrpc-c\xmltok.2010.vcxproj">\r
-       <Project>{b535402e-38d2-4d54-8360-423acbd17192}</Project>\r
--      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
-     </ProjectReference>\r
-     <ProjectReference Include="..\..\..\..\w32\Library\FreeSwitchCore.2010.vcxproj">\r
-       <Project>{202d7a4e-760d-4d0e-afa1-d7459ced30ff}</Project>\r
-diff --git a/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c b/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
-index 9b20546..4489cfc 100644
---- a/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
-+++ b/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
-@@ -1,4 +1,4 @@
--/* 
-+/*
-  * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
-  * Copyright (C) 2005-2012, Anthony Minessale II <anthm@freeswitch.org>
-  *
-@@ -22,13 +22,38 @@
-  * the Initial Developer. All Rights Reserved.
-  *
-  * Contributor(s):
-- * 
-+ *
-  * Anthony Minessale II <anthm@freeswitch.org>
-  * John Wehle <john@feith.com>
-- *
-+ * Garmt Boekholt <garmt@cimico.com>
-  *
-  * mod_xml_rpc.c -- XML RPC
-  *
-+ * embedded webserver for FS
-+ * exposes fs api to web (and ajax, javascript, ...)
-+ * supports GET/POST requests (as defined below)
-+ * and similar XMLRPC format /RPC2 freeswitch.api and management.api
-+ *
-+ * usage:
-+ * (1) http:/host:port/[txt|web|xml]api/fsapicommand[?arg[ arg]*][ &key=value[+&key=value]*]
-+ *     e.g.  http:/host:port/api/show?calls &refresh=5+&weather=nice
-+ * (2) http:/host:port/filepath - serves files from conf/htdocs
-+ *
-+ * NB:
-+ * ad (1) - key/value pairs are propagated as event headers
-+ *        - if &key=value is "&refresh=xx" - special feature: automatic refresh after xx sec (triggered by browser)
-+ *          note that refresh works only
-+ *                IF response content-type: text/html (i.e. "webapi" or "api")
-+ *                AND fs api command created an event header HTTP-REFRESH before the first write_stream
-+ *                NOTE if "api", fs api command has to overwrite content-type to be text/html i.s.o. text/plain (default)
-+ *
-+ *        - if api format is "api" mod_xml_rpc will automatically assume plain/text (so webunaware fs commands are rendered apropriately)
-+ *        - xmlapi doesn't seem to be used, however if a fs api command renders xml, you can set the format type to xml
-+ *          txtapi-text/plain or webapi-text/html surround xml with <pre> xml <pre/>
-+ *        - typically fs api command arguments are encoded with UrlPathEncode (spaces -> %20), and k/v pairs are urlencoded (space -> +)
-+ *
-+ * ad (2)   ms ie may show extra empty lines when serving large txt files as ie has problems rendering content-type "plain/text"
-+ *
-  */
- #include <switch.h>
- #include <switch_version.h>
-@@ -40,16 +65,17 @@
- #include <xmlrpc-c/abyss.h>
- #include <xmlrpc-c/server.h>
- #include <xmlrpc-c/server_abyss.h>
--#include "../../libs/xmlrpc-c/lib/abyss/src/token.h"
--#include "http.h"
--#include "session.h"
-+#include <xmlrpc-c/base64_int.h>
-+#include <../lib/abyss/src/token.h>
-+#include <../lib/abyss/src/http.h>
-+#include <../lib/abyss/src/session.h>
- SWITCH_MODULE_LOAD_FUNCTION(mod_xml_rpc_load);
- SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_xml_rpc_shutdown);
- SWITCH_MODULE_RUNTIME_FUNCTION(mod_xml_rpc_runtime);
- SWITCH_MODULE_DEFINITION(mod_xml_rpc, mod_xml_rpc_load, mod_xml_rpc_shutdown, mod_xml_rpc_runtime);
--static abyss_bool HTTPWrite(TSession * s, char *buffer, uint32_t len);
-+static abyss_bool HTTPWrite(TSession * s, const char *buffer, const uint32_t len);
- static struct {
-       uint16_t port;
-@@ -60,6 +86,7 @@ static struct {
-       char *default_domain;
-       switch_bool_t virtual_host;
-       TServer abyssServer;
-+      xmlrpc_registry *registryP;
- } globals;
- SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_realm, globals.realm);
-@@ -86,18 +113,20 @@ static switch_status_t do_config(void)
-                       char *var = (char *) switch_xml_attr_soft(param, "name");
-                       char *val = (char *) switch_xml_attr_soft(param, "value");
--                      if (!strcasecmp(var, "auth-realm")) {
--                              realm = val;
--                      } else if (!strcasecmp(var, "auth-user")) {
--                              user = val;
--                      } else if (!strcasecmp(var, "auth-pass")) {
--                              pass = val;
--                      } else if (!strcasecmp(var, "http-port")) {
--                              globals.port = (uint16_t) atoi(val);
--                      } else if (!strcasecmp(var, "default-domain")) {
--                              default_domain = val;
--                      } else if (!strcasecmp(var, "virtual-host")) {
--                              globals.virtual_host = switch_true(val);
-+                      if (!zstr(var) && !zstr(val)) {
-+                              if (!strcasecmp(var, "auth-realm")) {
-+                                      realm = val;
-+                              } else if (!strcasecmp(var, "auth-user")) {
-+                                      user = val;
-+                              } else if (!strcasecmp(var, "auth-pass")) {
-+                                      pass = val;
-+                              } else if (!strcasecmp(var, "http-port")) {
-+                                      globals.port = (uint16_t) atoi(val);
-+                              } else if (!strcasecmp(var, "default-domain")) {
-+                                      default_domain = val;
-+                              } else if (!strcasecmp(var, "virtual-host")) {
-+                                      globals.virtual_host = switch_true(val);
-+                              }
-                       }
-               }
-       }
-@@ -135,7 +164,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_xml_rpc_load)
- static switch_status_t http_stream_raw_write(switch_stream_handle_t *handle, uint8_t *data, switch_size_t datalen)
- {
--      TSession *r = handle->data;
-+      TSession *r = (TSession *) handle->data;
-       return HTTPWrite(r, (char *) data, (uint32_t) datalen) ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_FALSE;
-@@ -143,19 +172,59 @@ static switch_status_t http_stream_raw_write(switch_stream_handle_t *handle, uin
- static switch_status_t http_stream_write(switch_stream_handle_t *handle, const char *fmt, ...)
- {
--      va_list ap;
--      TSession *r = handle->data;
--      int ret = 0;
-+      TSession *r = (TSession *) handle->data;
-+      int ret = 1;
-       char *data;
-+      switch_event_t *evnt = handle->param_event;
-+      va_list ap;
-       va_start(ap, fmt);
-       ret = switch_vasprintf(&data, fmt, ap);
-       va_end(ap);
-       if (data) {
--              ret = 0;
--              HTTPWrite(r, data, (uint32_t) strlen(data));
--              free(data);
-+              /* Stream Content-Type (http header) to the xmlrpc (web) client, if fs api command did not do it yet.        */
-+              /* If (Content-Type in event) then the header was already replied.                                           */
-+              /* If fs api command is not "web aware", this will set the Content-Type to "text/plain".                     */
-+              const char *http_refresh = NULL;
-+              const char *ct = NULL;
-+              const char *refresh = NULL;
-+              if (evnt && !(ct = switch_event_get_header(evnt, "Content-Type"))){
-+                      const char *val = switch_stristr("Content-Type", data);
-+                      if (!val) {
-+                              val = "Content-Type: text/plain\r\n\r\n";
-+                              ret = HTTPWrite(r, val, (uint32_t) strlen(val));
-+                      }
-+                      /* flag to prevent running this more than once per http reply  */
-+                      switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "Content-Type", strstr(val,":")+2);
-+                      ct = switch_event_get_header(evnt, "Content-Type");
-+              }
-+
-+              if (ret) {
-+                      ret = HTTPWrite(r, data, (uint32_t) strlen(data));
-+              }
-+              switch_safe_free(data);
-+
-+              /* e.g. "http://www.cluecon.fs/api/show?calls &refresh=5"  */
-+              /* fs api command can set event header "HTTP-REFRESH" so that the web page will automagically refresh, if    */
-+              /* "refresh=xxx" was part of the http query kv pairs */
-+              if (ret && ct && *ct && (http_refresh = switch_event_get_header(evnt, "HTTP-REFRESH"))
-+                                       && (refresh = switch_event_get_header(evnt, "refresh"))
-+                                       && !strstr("text/html", ct)
-+                                                       && (atoi(refresh) > 0 )) {
-+                      const char *query = switch_event_get_header(evnt, "HTTP-QUERY");
-+                      const char *uri = switch_event_get_header(evnt, "HTTP-URI");
-+                      if (uri && query && *uri && *query) {
-+                              char *buf = switch_mprintf("<META HTTP-EQUIV=REFRESH CONTENT=\"%s; URL=%s?%s\">\n", refresh, uri, query);
-+                              ret = HTTPWrite(r, buf, (uint32_t) strlen(buf));
-+                              switch_safe_free(buf);
-+                      }
-+              }
-+
-+              /* only one refresh meta header per reply */
-+              if (http_refresh) {
-+                      switch_event_del_header(evnt, "HTTP-REFRESH");
-+              }
-       }
-       return ret ? SWITCH_STATUS_FALSE : SWITCH_STATUS_SUCCESS;
-@@ -192,7 +261,7 @@ static abyss_bool user_attributes(const char *user, const char *domain_name,
-               switch_event_destroy(&params);
-               return FALSE;
-       }
--      
-+
-       switch_event_destroy(&params);
-       alias = switch_xml_attr(x_user, "number-alias");
-@@ -241,9 +310,8 @@ static abyss_bool is_authorized(const TSession * r, const char *command)
-       char *dp;
-       char *dup = NULL;
-       char *argv[256] = { 0 };
--      char *status = NULL;
-       int argc = 0, i = 0, ok = 0;
--      int err = 403;
-+      unsigned int err = 403;
-       if (!r) {
-               return FALSE;
-@@ -273,7 +341,7 @@ static abyss_bool is_authorized(const TSession * r, const char *command)
-               goto end;
-       }
--      
-+
-       err = 686;
-       if (!user_attributes(user, domain_name, NULL, NULL, NULL, &allowed_commands)) {
-@@ -288,8 +356,8 @@ static abyss_bool is_authorized(const TSession * r, const char *command)
-       if ((dup = allowed_commands)) {
-               argc = switch_separate_string(dup, ',', argv, (sizeof(argv) / sizeof(argv[0])));
--              
--              for (i = 0; i < argc; i++) {
-+
-+              for (i = 0; i < argc && argv[i]; i++) {
-                       if (!strcasecmp(argv[i], command) || !strcasecmp(argv[i], "any")) {
-                               ok = 1;
-                               break;
-@@ -310,17 +378,17 @@ static abyss_bool is_authorized(const TSession * r, const char *command)
-       return ok ? TRUE : FALSE;
- }
--static abyss_bool http_directory_auth(TSession * r, char *domain_name)
-+static abyss_bool http_directory_auth(TSession *r, char *domain_name)
- {
--      char *p;
--      char *x;
--      char z[256], t[80];
--      char user[512];
--      char *pass;
-+      char *p = NULL;
-+      char *x = NULL;
-+      char z[256] = "", t[80] = "";
-+      char user[512] = "" ;
-+      char *pass = NULL;
-       const char *mypass1 = NULL, *mypass2 = NULL;
-       const char *box = NULL;
-       int at = 0;
--      char *dp;
-+      char *dp = NULL;
-       abyss_bool rval = FALSE;
-       char *dup_domain = NULL;
-@@ -372,13 +440,13 @@ static abyss_bool http_directory_auth(TSession * r, char *domain_name)
-                                       } else {
-                                               switch_snprintf(z, sizeof(z), "%s:%s", globals.user, globals.pass);
-                                       }
--                                      Base64Encode(z, t);
-+                                      xmlrpc_base64Encode(z, t);
-                                       if (!strcmp(p, t)) {
-                                               goto authed;
-                                       }
-                               }
--                              
-+
-                               if (!user_attributes(user, domain_name, &mypass1, &mypass2, &box, NULL)) {
-                                       goto fail;
-                               }
-@@ -396,7 +464,7 @@ static abyss_bool http_directory_auth(TSession * r, char *domain_name)
-                                       } else {
-                                               switch_snprintf(z, sizeof(z), "%s:%s", user, mypass1);
-                                       }
--                                      Base64Encode(z, t);
-+                                      xmlrpc_base64Encode(z, t);
-                                       if (!strcmp(p, t)) {
-                                               goto authed;
-@@ -408,7 +476,7 @@ static abyss_bool http_directory_auth(TSession * r, char *domain_name)
-                                               } else {
-                                                       switch_snprintf(z, sizeof(z), "%s:%s", user, mypass2);
-                                               }
--                                              Base64Encode(z, t);
-+                                              xmlrpc_base64Encode(z, t);
-                                               if (!strcmp(p, t)) {
-                                                       goto authed;
-@@ -421,7 +489,7 @@ static abyss_bool http_directory_auth(TSession * r, char *domain_name)
-                                               } else {
-                                                       switch_snprintf(z, sizeof(z), "%s:%s", box, mypass1);
-                                               }
--                                              Base64Encode(z, t);
-+                                              xmlrpc_base64Encode(z, t);
-                                               if (!strcmp(p, t)) {
-                                                       goto authed;
-@@ -434,7 +502,7 @@ static abyss_bool http_directory_auth(TSession * r, char *domain_name)
-                                                               switch_snprintf(z, sizeof(z), "%s:%s", box, mypass2);
-                                                       }
--                                                      Base64Encode(z, t);
-+                                                      xmlrpc_base64Encode(z, t);
-                                                       if (!strcmp(p, t)) {
-                                                               goto authed;
-@@ -536,19 +604,19 @@ abyss_bool auth_hook(TSession * r)
- }
--static abyss_bool HTTPWrite(TSession * s, char *buffer, uint32_t len)
-+static abyss_bool HTTPWrite(TSession * s, const char *buffer, const uint32_t len)
- {
-       if (s->chunkedwrite && s->chunkedwritemode) {
-               char t[16];
--              if (ConnWrite(s->conn, t, sprintf(t, "%x" CRLF, len)))
--                      if (ConnWrite(s->conn, buffer, len))
--                              return ConnWrite(s->conn, CRLF, 2);
-+              if (ConnWrite(s->connP, t, sprintf(t, "%x" CRLF, len)))
-+                      if (ConnWrite(s->connP, buffer, len))
-+                              return ConnWrite(s->connP, CRLF, 2);
-               return FALSE;
-       }
--      return ConnWrite(s->conn, buffer, len);
-+      return ConnWrite(s->connP, buffer, len);
- }
- static abyss_bool HTTPWriteEnd(TSession * s)
-@@ -559,7 +627,7 @@ static abyss_bool HTTPWriteEnd(TSession * s)
-       if (s->chunkedwrite) {
-               /* May be one day trailer dumping will be added */
-               s->chunkedwritemode = FALSE;
--              return ConnWrite(s->conn, "0" CRLF CRLF, 5);
-+              return ConnWrite(s->connP, "0" CRLF CRLF, 5);
-       }
-       s->requestInfo.keepalive = FALSE;
-@@ -568,47 +636,48 @@ static abyss_bool HTTPWriteEnd(TSession * s)
- abyss_bool handler_hook(TSession * r)
- {
--      //char *mime = "text/html";
--      char buf[80] = "HTTP/1.1 200 OK\n";
-       switch_stream_handle_t stream = { 0 };
-       char *command;
-       int i;
--      TTableItem *ti;
-       char *fs_user = NULL, *fs_domain = NULL;
-       char *path_info = NULL;
-       abyss_bool ret = TRUE;
--      int html = 0, text = 0, xml = 0;
-+      int html = 0, text = 0, xml = 0, api = 0;
-       const char *api_str;
-+      const char *uri = 0;
-+      TRequestInfo *info = 0;
-+      switch_event_t *evnt = 0; /* shortcut to stream.param_event */
-+
-+      if (!r || !(info = &r->requestInfo) || !(uri = info->uri)) {
-+              return FALSE;
-+      }
-       stream.data = r;
-       stream.write_function = http_stream_write;
-       stream.raw_write_function = http_stream_raw_write;
--      if (!r || !r->requestInfo.uri) {
--              return FALSE;
--      }
--      
--      if ((command = strstr(r->requestInfo.uri, "/api/"))) {
-+      if ((command = strstr(uri, "/api/"))) {
-               command += 5;
--      } else if ((command = strstr(r->requestInfo.uri, "/webapi/"))) {
-+              api++;
-+      } else if ((command = strstr(uri, "/webapi/"))) {
-               command += 8;
-               html++;
--      } else if ((command = strstr(r->requestInfo.uri, "/txtapi/"))) {
-+      } else if ((command = strstr(uri, "/txtapi/"))) {
-               command += 8;
-               text++;
--      } else if ((command = strstr(r->requestInfo.uri, "/xmlapi/"))) {
-+      } else if ((command = strstr(uri, "/xmlapi/"))) {
-               command += 8;
-               xml++;
-       } else {
--              return FALSE;
-+              return FALSE; /* 404 */
-       }
-       if ((path_info = strchr(command, '/'))) {
-               *path_info++ = '\0';
-       }
--      for (i = 0; i < r->response_headers.size; i++) {
--              ti = &r->response_headers.item[i];
-+      for (i = 0; i < r->responseHeaderFields.size; i++) {
-+              TTableItem *ti = &r->responseHeaderFields.item[i];
-               if (!strcasecmp(ti->name, "freeswitch-user")) {
-                       fs_user = ti->value;
-               } else if (!strcasecmp(ti->name, "freeswitch-domain")) {
-@@ -616,63 +685,58 @@ abyss_bool handler_hook(TSession * r)
-               }
-       }
--      if (is_authorized(r, command)) {
--              goto auth;
-+      if (!is_authorized(r, command)) {
-+              ret = TRUE;
-+              goto end;
-       }
--      ret = TRUE;
--      goto end;
--
--  auth:
-+/*  auth: */
-       if (switch_event_create(&stream.param_event, SWITCH_EVENT_API) == SWITCH_STATUS_SUCCESS) {
-               const char *const content_length = RequestHeaderValue(r, "content-length");
--
--              if (html)
--                      switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "Content-type", "text/html");
--              else if (text)
--                      switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "Content-type", "text/plain");
--              else if (xml)
--                      switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "Content-type", "text/xml");
--              if (fs_user)
--                      switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "FreeSWITCH-User", fs_user);
--              if (fs_domain)
--                      switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "FreeSWITCH-Domain", fs_domain);
--              if (path_info)
--                      switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-Path-Info", path_info);
--              switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-URI", r->requestInfo.uri);
--              if (r->requestInfo.query)
--                      switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-QUERY", r->requestInfo.query);
--              if (r->requestInfo.host)
--                      switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-HOST", r->requestInfo.host);
--              if (r->requestInfo.from)
--                      switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-FROM", r->requestInfo.from);
--              if (r->requestInfo.useragent)
--                      switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-USER-AGENT", r->requestInfo.useragent);
--              if (r->requestInfo.referer)
--                      switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-REFERER", r->requestInfo.referer);
--              if (r->requestInfo.requestline)
--                      switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-REQUESTLINE", r->requestInfo.requestline);
--              if (r->requestInfo.user)
--                      switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-USER", r->requestInfo.user);
--              if (r->requestInfo.port)
--                      switch_event_add_header(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-PORT", "%u", r->requestInfo.port);
--              if (r->requestInfo.query || content_length) {
-+              evnt = stream.param_event;
-+
-+              if (html) {
-+                      switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "Content-Type", "text/html");
-+              } else if (text) {
-+                      switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "Content-Type", "text/plain");
-+              } else if (xml) {
-+                      switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "Content-Type", "text/xml");
-+              }
-+              if (api) {
-+                      switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-API", "api");
-+              }
-+              if (fs_user)   switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "FreeSWITCH-User", fs_user);
-+              if (fs_domain) switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "FreeSWITCH-Domain", fs_domain);
-+              if (path_info) switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-Path-Info", path_info);
-+
-+              if (info->host)        switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-HOST", info->host);
-+              if (info->from)        switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-FROM", info->from);
-+              if (info->useragent)   switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-USER-AGENT", info->useragent);
-+              if (info->referer)     switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-REFERER", info->referer);
-+              if (info->requestline) switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-REQUESTLINE", info->requestline);
-+              if (info->user)        switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-USER", info->user);
-+              if (info->port)        switch_event_add_header(evnt, SWITCH_STACK_BOTTOM, "HTTP-PORT", "%u", info->port);
-+
-+              {
-                       char *q, *qd;
-                       char *next;
--                      char *query = (char *) r->requestInfo.query;
-+                      char *query = (char *) info->query;
-                       char *name, *val;
-                       char qbuf[8192] = "";
--                      if (r->requestInfo.method == m_post && content_length) {
-+                      /* first finish reading from the socket if post method was used*/
-+                      if (info->method == m_post && content_length) {
-                               int len = atoi(content_length);
-                               int qlen = 0;
-                               if (len > 0) {
--                                      int succeeded;
-+                                      int succeeded = TRUE;
-                                       char *qp = qbuf;
-+                                      char *readError;
-+
-                                       do {
--                                              int blen = r->conn->buffersize - r->conn->bufferpos;
-+                                              int blen = r->connP->buffersize - r->connP->bufferpos;
-                                               if ((qlen + blen) > len) {
-                                                       blen = len - qlen;
-@@ -684,75 +748,101 @@ abyss_bool handler_hook(TSession * r)
-                                                       break;
-                                               }
--                                              memcpy(qp, r->conn->buffer + r->conn->bufferpos, blen);
-+                                              memcpy(qp, r->connP->buffer.b + r->connP->bufferpos, blen);
-                                               qp += blen;
-                                               if (qlen >= len) {
-                                                       break;
-                                               }
--                                      } while ((succeeded = ConnRead(r->conn, 2000)));
-+
-+                                              ConnRead(r->connP, 2000, NULL, NULL, &readError);
-+                              if (readError) {
-+                                                      succeeded = FALSE;
-+                                                      free(readError);
-+                                              }
-+
-+                                      } while (succeeded);
-                                       query = qbuf;
-                               }
-                       }
--                      if (query) {
--                              switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-QUERY", query);
-+                      /* parse query and add kv-pairs as event headers  */
-+                      /* a kv pair starts with '&', '+' or \0 mark the end */
-+                      if (query) {
-+                              switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-QUERY", query);
-                               qd = strdup(query);
--                              switch_assert(qd != NULL);
--
--                              q = qd;
--                              next = q;
--
--                              do {
--                                      char *p;
-+                      } else {
-+                              qd = strdup(uri);
-+                      }
--                                      if ((next = strchr(next, '&'))) {
--                                              *next++ = '\0';
-+                      switch_assert(qd != NULL);
-+
-+                      q = qd;
-+                      next = q;
-+
-+                      do {
-+                              char *p;
-+
-+                              if (next = strchr(next, '&')) {
-+                                      if (!query) {
-+                                              /* pass kv pairs from uri to query       */
-+                                  /* "?" is absent in url so parse uri     */
-+                                              *((char *)uri + (next - q - 1)) = '\0';
-+                                              query = next;
-+                                              switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-QUERY", next);
-+                                              /* and strip uri                                     */
-+                                              /* the start of first kv pair marks the end of uri   */
-+                                              /* to prevent kv-pairs confusing fs api commands     */
-+                                              /* that have arguments separated by space            */
-                                       }
-+                                      *next++ = '\0';
-+                              }
--                                      for (p = q; p && *p; p++) {
--                                              if (*p == '+') {
--                                                      *p = ' ';
--                                              }
-+                              for (p = q; p && *p; p++) {
-+                                      if (*p == '+') {
-+                                              *p = ' ';
-                                       }
-+                              }
-+                              /* hmmm, get method requests are already decoded ... */
-+                              switch_url_decode(q);
--                                      switch_url_decode(q);
--
--                                      name = q;
--                                      if ((val = strchr(name, '='))) {
--                                              *val++ = '\0';
--                                              switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, name, val);
--                                      }
--                                      q = next;
--                              } while (q != NULL);
-+                              name = q;
-+                              if ((val = strchr(name, '='))) {
-+                                      *val++ = '\0';
-+                                      switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, name, val);
-+                              }
-+                              q = next;
-+                      } while (q != NULL);
--                              free(qd);
--                      }
-+                      free(qd);
-               }
-       }
--      //ResponseChunked(r);
--      //ResponseContentType(r, mime);
--      //ResponseWrite(r);
-+      switch_event_add_header_string(evnt, SWITCH_STACK_BOTTOM, "HTTP-URI", uri);
--      HTTPWrite(r, buf, (uint32_t) strlen(buf));
-+      /* We made it this far, always OK */
-+      if (!HTTPWrite(r, "HTTP/1.1 200 OK\r\n", (uint32_t) strlen("HTTP/1.1 200 OK\r\n"))) {
-+              return TRUE;
-+      }
--      //HTTPWrite(r, "<pre>\n\n", 7);
-+      ResponseAddField(r, "Connection", "close");
-       /* generation of the date field */
-+      if (evnt)
-       {
-+              ResponseAddField(r, "Date", switch_event_get_header(evnt, "Event-Date-GMT"));
-+      }
-+      else {
-               const char *dateValue;
-               DateToString(r->date, &dateValue);
--
-               if (dateValue) {
-                       ResponseAddField(r, "Date", dateValue);
--                      free(dateValue);
-+                      free((void *)dateValue);
-               }
-       }
--
-       /* Generation of the server field */
-       ResponseAddField(r, "Server", "FreeSWITCH-" SWITCH_VERSION_FULL "-mod_xml_rpc");
-@@ -764,48 +854,45 @@ abyss_bool handler_hook(TSession * r)
-               ResponseAddField(r, "Content-Type", "text/xml");
-       }
--      for (i = 0; i < r->response_headers.size; i++) {
--              ti = &r->response_headers.item[i];
--              ConnWrite(r->conn, ti->name, (uint32_t) strlen(ti->name));
--              ConnWrite(r->conn, ": ", 2);
--              ConnWrite(r->conn, ti->value, (uint32_t) strlen(ti->value));
--              ConnWrite(r->conn, CRLF, 2);
-+      for (i = 0; i < r->responseHeaderFields.size; i++) {
-+              TTableItem *ti = &r->responseHeaderFields.item[i];
-+              char *header = switch_mprintf("%s: %s\r\n", ti->name, ti->value);
-+              if (!ConnWrite(r->connP, header, (uint32_t) strlen(header))) {
-+                      switch_safe_free(header);
-+                      return TRUE;
-+              }
-+              switch_safe_free(header);
-       }
--      switch_snprintf(buf, sizeof(buf), "Connection: close\r\n");
--      ConnWrite(r->conn, buf, (uint32_t) strlen(buf));
--
--      if (html || text || xml) {
--              ConnWrite(r->conn, "\r\n", 2);
-+      /* send end http header */
-+      if (html||text||xml) {
-+              if (!ConnWrite(r->connP, CRLF, 2)) {
-+                      return TRUE;
-+              }
-+      }
-+      else {
-+              /* content-type and end of http header will be streamed by fs api or http_stream_write */
-       }
--      if (switch_stristr("unload", command) && switch_stristr("mod_xml_rpc", r->requestInfo.query)) {
-+      if (switch_stristr("unload", command) && switch_stristr("mod_xml_rpc", info->query)) {
-               command = "bgapi";
-               api_str = "unload mod_xml_rpc";
--      } else if (switch_stristr("reload", command) && switch_stristr("mod_xml_rpc", r->requestInfo.query)) {
-+      } else if (switch_stristr("reload", command) && switch_stristr("mod_xml_rpc", info->query)) {
-               command = "bgapi";
-               api_str = "reload mod_xml_rpc";
-       } else {
--              api_str = r->requestInfo.query;
-+              api_str = info->query;
-       }
--      if (switch_api_execute(command, api_str, NULL, &stream) == SWITCH_STATUS_SUCCESS) {
--              ResponseStatus(r, 200);
--              r->responseStarted = TRUE;
--              //r->done = TRUE;
--      } else {
--              ResponseStatus(r, 404);
--              ResponseError(r);
--      }
-+      /* TODO (maybe): take "refresh=xxx" out of query as to not confuse fs api commands         */
--      //SocketClose(&(r->conn->socket));
-+      /* execute actual fs api command                                                            */
-+      /* fs api command will write to stream,  calling http_stream_write / http_stream_raw_write      */
-+      /* switch_api_execute will stream INVALID COMMAND before it fails                                               */
-+      switch_api_execute(command, api_str, NULL, &stream);
--      HTTPWriteEnd(r);
--      //if (r->conn->channelP)
--      //ConnKill(r->conn);
--      //ChannelInterrupt(r->conn->channelP);
--      //ConnClose(r->conn);
--      //ChannelDestroy(r->conn->channelP);
-+      r->responseStarted = TRUE;
-+      ResponseStatus(r, 200);     /* we don't want an assertion failure */
-       r->requestInfo.keepalive = 0;
-   end:
-@@ -925,7 +1012,6 @@ static xmlrpc_value *freeswitch_man(xmlrpc_env * const envP, xmlrpc_value * cons
- SWITCH_MODULE_RUNTIME_FUNCTION(mod_xml_rpc_runtime)
- {
--      xmlrpc_registry *registryP;
-       xmlrpc_env env;
-       char logfile[512];
-       switch_hash_index_t *hi;
-@@ -936,15 +1022,16 @@ SWITCH_MODULE_RUNTIME_FUNCTION(mod_xml_rpc_runtime)
-       xmlrpc_env_init(&env);
--      registryP = xmlrpc_registry_new(&env);
-+      globals.registryP = xmlrpc_registry_new(&env);
--      xmlrpc_registry_add_method2(&env, registryP, "freeswitch.api", &freeswitch_api, NULL, NULL, NULL);
--      xmlrpc_registry_add_method2(&env, registryP, "freeswitch_api", &freeswitch_api, NULL, NULL, NULL);
--      xmlrpc_registry_add_method(&env, registryP, NULL, "freeswitch.management", &freeswitch_man, NULL);
--      xmlrpc_registry_add_method(&env, registryP, NULL, "freeswitch_management", &freeswitch_man, NULL);
-+      /* TODO why twice and why add_method for freeswitch.api and add_method2 for freeswitch.management ? */
-+    xmlrpc_registry_add_method2(&env, globals.registryP, "freeswitch.api", &freeswitch_api, NULL, NULL, NULL);
-+    xmlrpc_registry_add_method2(&env, globals.registryP, "freeswitch_api", &freeswitch_api, NULL, NULL, NULL);
-+    xmlrpc_registry_add_method(&env, globals.registryP, NULL, "freeswitch.management", &freeswitch_man, NULL);
-+    xmlrpc_registry_add_method(&env, globals.registryP, NULL, "freeswitch_management", &freeswitch_man, NULL);
-       MIMETypeInit();
--      MIMETypeAdd("text/html", "html");
-+
-       for (hi = switch_core_mime_index(); hi; hi = switch_hash_next(hi)) {
-               switch_hash_this(hi, &var, NULL, &val);
-               if (var && val) {
-@@ -955,38 +1042,52 @@ SWITCH_MODULE_RUNTIME_FUNCTION(mod_xml_rpc_runtime)
-       switch_snprintf(logfile, sizeof(logfile), "%s%s%s", SWITCH_GLOBAL_dirs.log_dir, SWITCH_PATH_SEPARATOR, "freeswitch_http.log");
-       ServerCreate(&globals.abyssServer, "XmlRpcServer", globals.port, SWITCH_GLOBAL_dirs.htdocs_dir, logfile);
--      xmlrpc_server_abyss_set_handler(&env, &globals.abyssServer, "/RPC2", registryP);
-+      xmlrpc_server_abyss_set_handler(&env, &globals.abyssServer, "/RPC2", globals.registryP);
-+
-+      xmlrpc_env_clean(&env);
-       if (ServerInit(&globals.abyssServer) != TRUE) {
-               globals.running = 0;
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to start HTTP Port %d\n", globals.port);
-+              xmlrpc_registry_free(globals.registryP);
-+              MIMETypeTerm();
-+
-               return SWITCH_STATUS_TERM;
-       }
-       ServerAddHandler(&globals.abyssServer, handler_hook);
-       ServerAddHandler(&globals.abyssServer, auth_hook);
--      ServerSetKeepaliveTimeout(&globals.abyssServer, 1);
-+      ServerSetKeepaliveTimeout(&globals.abyssServer, 5);
-+
-       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Starting HTTP Port %d, DocRoot [%s]\n", globals.port, SWITCH_GLOBAL_dirs.htdocs_dir);
-       ServerRun(&globals.abyssServer);
-+
-       switch_yield(1000000);
-+
-       globals.running = 0;
-       return SWITCH_STATUS_TERM;
- }
-+/* upon module unload */
- SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_xml_rpc_shutdown)
- {
--      //globals.abyssServer.running = 0;
--      //shutdown(globals.abyssServer.listensock, 2);
-+
-+      /* this makes the worker thread (ServerRun) stop */
-       ServerTerminate(&globals.abyssServer);
-       do {
-               switch_yield(100000);
-       } while (globals.running);
-+      ServerFree(&globals.abyssServer);
-+      xmlrpc_registry_free(globals.registryP);
-+      MIMETypeTerm();
-+
-       switch_safe_free(globals.realm);
-       switch_safe_free(globals.user);
-       switch_safe_free(globals.pass);
-+      switch_safe_free(globals.default_domain);
-       return SWITCH_STATUS_SUCCESS;
- }
-diff --git a/src/switch_loadable_module.c b/src/switch_loadable_module.c
-index 7185726..90410d3 100644
---- a/src/switch_loadable_module.c
-+++ b/src/switch_loadable_module.c
-@@ -2259,10 +2259,10 @@ SWITCH_DECLARE(switch_status_t) switch_api_execute(const char *cmd, const char *
-       }
-       if (stream->param_event) {
--              if (cmd_used) {
-+              if (cmd_used && *cmd_used) {
-                       switch_event_add_header_string(stream->param_event, SWITCH_STACK_BOTTOM, "API-Command", cmd_used);
-               }
--              if (arg_used) {
-+              if (arg_used && *arg_used) {
-                       switch_event_add_header_string(stream->param_event, SWITCH_STACK_BOTTOM, "API-Command-Argument", arg_used);
-               }
-       }
-diff --git a/src/switch_xml.c b/src/switch_xml.c
-index f441567..2e74780 100644
---- a/src/switch_xml.c
-+++ b/src/switch_xml.c
-@@ -972,7 +972,7 @@ SWITCH_DECLARE(switch_xml_t) switch_xml_parse_str_dynamic(char *s, switch_bool_t
-       }
- }
--/* parse the given xml string and return an switch_xml structure */
-+/* parse the given xml string and return a switch_xml structure */
- SWITCH_DECLARE(switch_xml_t) switch_xml_parse_str(char *s, switch_size_t len)
- {
-       switch_xml_root_t root = (switch_xml_root_t) switch_xml_new(NULL);
-@@ -2455,7 +2455,7 @@ static char *switch_xml_toxml_r(switch_xml_t xml, char **s, switch_size_t *len,
-                               *len += sprintf(*s + *len, "%s", XML_INDENT);   /* indent */
-                       }
-               }
--              *len += sprintf(*s + (*len), "</%s>\n", xml->name);     /* close tag */
-+              *len += sprintf(*s + (*len), "</%s>", xml->name);       /* close tag */
-       }
-       while (txt[off] && off < xml->off)
-@@ -2496,7 +2496,24 @@ SWITCH_DECLARE(char *) switch_xml_toxml(switch_xml_t xml, switch_bool_t prn_head
-       return r;
- }
--/* converts an switch_xml structure back to xml, returning a string of xml date that
-+SWITCH_DECLARE(char *) switch_xml_tohtml(switch_xml_t xml, switch_bool_t prn_header)
-+{
-+      char *r, *s, *h;
-+      switch_size_t rlen = 0;
-+      switch_size_t len = SWITCH_XML_BUFSIZE;
-+      switch_mutex_lock(XML_GEN_LOCK);
-+      s = (char *) malloc(SWITCH_XML_BUFSIZE);
-+      switch_assert(s);
-+      h = (char *) malloc(SWITCH_XML_BUFSIZE);
-+      switch_assert(h);
-+      r = switch_xml_toxml_buf(xml, s, SWITCH_XML_BUFSIZE, 0, prn_header);
-+      h = switch_xml_ampencode(r, 0, &h, &rlen, &len, 1);
-+      switch_safe_free(r);
-+      switch_mutex_unlock(XML_GEN_LOCK);
-+      return h;
-+}
-+
-+/* converts a switch_xml structure back to xml, returning a string of xml data that
-    must be freed */
- SWITCH_DECLARE(char *) switch_xml_toxml_buf(switch_xml_t xml, char *buf, switch_size_t buflen, switch_size_t offset, switch_bool_t prn_header)
- {
-@@ -2684,7 +2701,7 @@ SWITCH_DECLARE(switch_xml_t) switch_xml_new(const char *name)
-       return &root->xml;
- }
--/* inserts an existing tag into an switch_xml structure */
-+/* inserts an existing tag into a switch_xml structure */
- SWITCH_DECLARE(switch_xml_t) switch_xml_insert(switch_xml_t xml, switch_xml_t dest, switch_size_t off)
- {
-       switch_xml_t cur, prev, head;
-diff --git a/w32/xmlrpc.props b/w32/xmlrpc.props
-new file mode 100644
-index 0000000..ac0fc55
---- /dev/null
-+++ b/w32/xmlrpc.props
-@@ -0,0 +1,15 @@
-+<?xml version="1.0" encoding="utf-8"?>\r
-+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-+  <ImportGroup Label="PropertySheets">\r
-+  </ImportGroup>\r
-+  <PropertyGroup Label="UserMacros">\r
-+    <XMLRPCDir>$(SolutionDir)libs\xmlrpc-c\</XMLRPCDir>\r
-+  </PropertyGroup>\r
-+  <ItemDefinitionGroup>\r
-+    <ClCompile>\r
-+      <AdditionalIncludeDirectories>$(XMLRPCDir);$(XMLRPCDir)include;$(XMLRPCDir)lib\util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-+    </ClCompile>\r
-+    <Link>\r
-+    </Link>\r
-+  </ItemDefinitionGroup>\r
-+</Project>
-\ No newline at end of file
-diff --git a/w32/xmlrpc.vsprops b/w32/xmlrpc.vsprops
-new file mode 100644
-index 0000000..eae9700
---- /dev/null
-+++ b/w32/xmlrpc.vsprops
-@@ -0,0 +1,15 @@
-+<?xml version="1.0" encoding="windows-1251"?>\r
-+<VisualStudioPropertySheet\r
-+      ProjectType="Visual C++"\r
-+      Version="8.00"\r
-+      Name="xmlrpc"\r
-+      >\r
-+      <Tool\r
-+              Name="VCCLCompilerTool"\r
-+              AdditionalIncludeDirectories="&quot;$(XMLRPCDir)&quot;;&quot;$(XMLRPCDir)include&quot;;&quot;$(XMLRPCDir)lib\util\include&quot;;%(AdditionalIncludeDirectories)"\r
-+      />\r
-+      <UserMacro\r
-+              Name="XMLRPCDir"\r
-+              Value="$(SolutionDir)libs\xmlrpc-c\"\r
-+      />\r
-+</VisualStudioPropertySheet>\r