[packages/xmlrpc-c] - updated to 1.32.05 (svn rev 2451; note: new sonames of C++ libs) - updated patches from Fedora - u

qboosh qboosh at pld-linux.org
Sun Mar 3 18:11:29 CET 2013


commit 91f353187f4ecb82c41507a68c2da571aca67f21
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Sun Mar 3 18:11:26 2013 +0100

    - updated to 1.32.05 (svn rev 2451; note: new sonames of C++ libs)
    - updated patches from Fedora
    - updated soname patch
    - added cmake-fix patch (fix for Fedora cmake patch)

 xmlrpc-c-30x-redirect.patch  |  16 +-
 xmlrpc-c-cmake-fix.patch     |  11 ++
 xmlrpc-c-cmake.patch         | 425 ++++++++++++++++++++++++++++---------------
 xmlrpc-c-printf-size_t.patch |  34 ++--
 xmlrpc-c-soname.patch        | 104 ++++++-----
 xmlrpc-c.spec                |  27 +--
 6 files changed, 381 insertions(+), 236 deletions(-)
---
diff --git a/xmlrpc-c.spec b/xmlrpc-c.spec
index 91c24a1..4a6f0f0 100644
--- a/xmlrpc-c.spec
+++ b/xmlrpc-c.spec
@@ -1,19 +1,20 @@
 Summary:	XML-RPC C library - an implementation of the xmlrpc protocol
 Summary(pl.UTF-8):	Biblioteka XML-RPC C - implementacja protokołu xmlrpc
 Name:		xmlrpc-c
-Version:	1.28.10
-Release:	2
+Version:	1.32.05
+Release:	1
 License:	XML-RPC for C License (BSD-like)
 Group:		Libraries
 # svn co http://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/advanced xmlrpc-c
 # Unfortunately, upstream does not tag versions so we must fetch from the branch
 # and check which version was used for it
-# 1.28.10 is svn r2181
+# 1.32.05 is svn r2451
 Source0:	%{name}-%{version}.tar.xz
-# Source0-md5:	b1d7d851bbd50169be668ef16817bc6b
+# Source0-md5:	c80cfb54a6e26247369de042474e08e0
 Patch0:		%{name}-fastdep.patch
 Patch1:		%{name}-soname.patch
 Patch2:		%{name}-cflags.patch
+Patch3:		%{name}-cmake-fix.patch
 # patches 10+ come from Fedora
 Patch10:	%{name}-cmake.patch
 Patch11:	%{name}-printf-size_t.patch
@@ -281,6 +282,7 @@ XML-RPC.
 %patch15 -p1
 %patch16 -p1
 %patch1 -p1
+%patch3 -p1
 
 %build
 mkdir -p build
@@ -400,11 +402,11 @@ rm -rf $RPM_BUILD_ROOT
 %files c++
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_libdir}/libxmlrpc++.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/libxmlrpc++.so.7
+%attr(755,root,root) %ghost %{_libdir}/libxmlrpc++.so.8
 %attr(755,root,root) %{_libdir}/libxmlrpc_cpp.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/libxmlrpc_cpp.so.7
+%attr(755,root,root) %ghost %{_libdir}/libxmlrpc_cpp.so.8
 %attr(755,root,root) %{_libdir}/libxmlrpc_packetsocket.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/libxmlrpc_packetsocket.so.7
+%attr(755,root,root) %ghost %{_libdir}/libxmlrpc_packetsocket.so.8
 
 %files c++-devel
 %defattr(644,root,root,755)
@@ -427,7 +429,7 @@ rm -rf $RPM_BUILD_ROOT
 %files client++
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_libdir}/libxmlrpc_client++.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/libxmlrpc_client++.so.7
+%attr(755,root,root) %ghost %{_libdir}/libxmlrpc_client++.so.8
 
 %files client++-devel
 %defattr(644,root,root,755)
@@ -438,13 +440,13 @@ rm -rf $RPM_BUILD_ROOT
 %files server++
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_libdir}/libxmlrpc_server++.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/libxmlrpc_server++.so.7
+%attr(755,root,root) %ghost %{_libdir}/libxmlrpc_server++.so.8
 %attr(755,root,root) %{_libdir}/libxmlrpc_server_abyss++.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/libxmlrpc_server_abyss++.so.7
+%attr(755,root,root) %ghost %{_libdir}/libxmlrpc_server_abyss++.so.8
 %attr(755,root,root) %{_libdir}/libxmlrpc_server_cgi++.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/libxmlrpc_server_cgi++.so.7
+%attr(755,root,root) %ghost %{_libdir}/libxmlrpc_server_cgi++.so.8
 %attr(755,root,root) %{_libdir}/libxmlrpc_server_pstream++.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/libxmlrpc_server_pstream++.so.7
+%attr(755,root,root) %ghost %{_libdir}/libxmlrpc_server_pstream++.so.8
 
 %files server++-devel
 %defattr(644,root,root,755)
@@ -463,6 +465,7 @@ rm -rf $RPM_BUILD_ROOT
 %defattr(644,root,root,755)
 %doc tools/xmlrpc/xmlrpc.html tools/xmlrpc_transport/xmlrpc_transport.html
 %attr(755,root,root) %{_bindir}/xmlrpc
+%attr(755,root,root) %{_bindir}/xmlrpc_parsecall
 %attr(755,root,root) %{_bindir}/xmlrpc_transport
 %attr(755,root,root) %{_bindir}/xml-rpc-api2cpp
 %attr(755,root,root) %{_bindir}/xml-rpc-api2txt
diff --git a/xmlrpc-c-30x-redirect.patch b/xmlrpc-c-30x-redirect.patch
index 1d3df7a..a2d4446 100644
--- a/xmlrpc-c-30x-redirect.patch
+++ b/xmlrpc-c-30x-redirect.patch
@@ -1,27 +1,27 @@
-From 07f7798d0b6c9b187dd6bfa567be74a224baf1fb Mon Sep 17 00:00:00 2001
+From 255ebf4b1204124123971a3bb27741cccbb51692 Mon Sep 17 00:00:00 2001
 From: Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de>
 Date: Thu, 29 Jul 2010 19:25:32 +0200
-Subject: [PATCH 5/5] allow 30x redirections
+Subject: [PATCH 5/8] allow 30x redirections
 
 ---
  lib/curl_transport/curltransaction.c |    4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
+ 1 file changed, 4 insertions(+)
 
 diff --git a/lib/curl_transport/curltransaction.c b/lib/curl_transport/curltransaction.c
-index 3c75010..e1cfc64 100644
+index 0f76fc2..6292aee 100644
 --- a/lib/curl_transport/curltransaction.c
 +++ b/lib/curl_transport/curltransaction.c
-@@ -495,6 +495,10 @@ setupCurlSession(xmlrpc_env *               const envP,
+@@ -600,6 +600,10 @@ setupCurlSession(xmlrpc_env *               const envP,
      curl_easy_setopt(curlSessionP, CURLOPT_POST, 1);
-     curl_easy_setopt(curlSessionP, CURLOPT_URL, curlTransactionP->serverUrl);
+     curl_easy_setopt(curlSessionP, CURLOPT_URL, transP->serverUrl);
  
 +    curl_easy_setopt(curlSessionP, CURLOPT_FOLLOWLOCATION, 1);
 +    curl_easy_setopt(curlSessionP, CURLOPT_MAXREDIRS, (long)10);
 +    curl_easy_setopt(curlSessionP, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
 +
-     XMLRPC_MEMBLOCK_APPEND(char, envP, callXmlP, "\0", 1);
+     XMLRPC_MEMBLOCK_APPEND(char, envP, transP->postDataP, "\0", 1);
      if (!envP->fault_occurred) {
          curl_easy_setopt(curlSessionP, CURLOPT_POSTFIELDS, 
 -- 
-1.7.1.1
+1.7.10.4
 
diff --git a/xmlrpc-c-cmake-fix.patch b/xmlrpc-c-cmake-fix.patch
new file mode 100644
index 0000000..4e93ec9
--- /dev/null
+++ b/xmlrpc-c-cmake-fix.patch
@@ -0,0 +1,11 @@
+--- xmlrpc-c/src/CMakeLists.txt.orig	2013-03-03 17:47:58.712094469 +0100
++++ xmlrpc-c/src/CMakeLists.txt	2013-03-03 17:50:33.195421319 +0100
+@@ -22,7 +22,7 @@
+ if(MUST_BUILD_LIBWWW_CLIENT)
+   set(client_libwww_CFLAGS "${LIBWWW_CFLAGS}")
+   set(client_libwww_LIBS   "${LIBWWW_LIBS}")
+-  list(APPEND transport_SOURCES ${libwww_srcdir}/xmlrpc_libwww_transport.c ${libwww_srcdir}/xmlrpc_libwww_transport.h)
++  list(APPEND transport_SOURCES ${libwww_srcdir}/xmlrpc_libwww_transport.c)
+ endif(MUST_BUILD_LIBWWW_CLIENT)
+ 
+ if(MUST_BUILD_CURL_CLIENT)
diff --git a/xmlrpc-c-cmake.patch b/xmlrpc-c-cmake.patch
index 69efb96..6d544fb 100644
--- a/xmlrpc-c-cmake.patch
+++ b/xmlrpc-c-cmake.patch
@@ -1,22 +1,22 @@
-From 8410940833027653f6b58866e1468f5dc42dae0e Mon Sep 17 00:00:00 2001
+From 26a4d5168bb69474c3cc304f90592d37bf0be8fe Mon Sep 17 00:00:00 2001
 From: Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de>
 Date: Sat, 5 Apr 2008 10:55:02 +0200
 Subject: [PATCH 1/8] make -> cmake transition
 
 cmake: updated
 ---
- CMakeLists.txt                              |  284 +++++++++++++++++++++++++++
+ CMakeLists.txt                              |  290 +++++++++++++++++++++++++++
  cmake/try-attr.cc                           |    3 +
  cmake/va-list-is-array.c                    |    9 +
- examples/CMakeLists.txt                     |   62 ++++++
+ examples/CMakeLists.txt                     |   68 +++++++
  examples/config.h                           |    1 +
  examples/cpp/CMakeLists.txt                 |   34 ++++
  include/CMakeLists.txt                      |    3 +
  include/xmlrpc-c/CMakeLists.txt             |   74 +++++++
- include/xmlrpc-c/config.h.cmake             |   32 +++
+ include/xmlrpc-c/config.h.cmake             |   34 ++++
  lib/CMakeLists.txt                          |   12 ++
  lib/abyss/CMakeLists.txt                    |    3 +
- lib/abyss/src/CMakeLists.txt                |   66 ++++++
+ lib/abyss/src/CMakeLists.txt                |   70 +++++++
  lib/abyss/src/xmlrpc_abyss.pc.cmake         |   12 ++
  lib/curl_transport/CMakeLists.txt           |   20 ++
  lib/expat/CMakeLists.txt                    |    9 +
@@ -30,7 +30,7 @@ cmake: updated
  lib/libwww_transport/CMakeLists.txt         |    7 +
  lib/util/CMakeLists.txt                     |   17 ++
  lib/wininet_transport/CMakeLists.txt        |    7 +
- src/CMakeLists.txt                          |  122 ++++++++++++
+ src/CMakeLists.txt                          |  121 +++++++++++
  src/cpp/CMakeLists.txt                      |   70 +++++++
  src/cpp/test/CMakeLists.txt                 |   18 ++
  src/cpp/xmlrpc++.pc.cmake                   |   12 ++
@@ -41,18 +41,20 @@ cmake: updated
  src/cpp/xmlrpc_server_abyss++.pc.cmake      |   12 ++
  src/cpp/xmlrpc_server_cgi++.pc.cmake        |   12 ++
  src/cpp/xmlrpc_server_pstream++.pc.cmake    |   12 ++
- src/test/CMakeLists.txt                     |   39 ++++
  src/xmlrpc.pc.cmake                         |   12 ++
  src/xmlrpc_client.pc.cmake                  |   12 ++
  src/xmlrpc_server.pc.cmake                  |   12 ++
  src/xmlrpc_server_abyss.pc.cmake            |   12 ++
  src/xmlrpc_server_cgi.pc.cmake              |   12 ++
- tools/CMakeLists.txt                        |   21 ++
+ test/CMakeLists.txt                         |   41 ++++
+ test/cpp/CMakeLists.txt                     |   34 ++++
+ tools/CMakeLists.txt                        |   22 ++
  tools/binmode-rpc-kit/CMakeLists.txt        |    1 +
  tools/lib/CMakeLists.txt                    |    1 +
  tools/turbocharger/CMakeLists.txt           |    1 +
  tools/xml-rpc-api2cpp/CMakeLists.txt        |   15 ++
  tools/xml-rpc-api2txt/CMakeLists.txt        |    7 +
+ tools/xml/CMakeLists.txt                    |   16 ++
  tools/xmlrpc/CMakeLists.txt                 |   17 ++
  tools/xmlrpc/config.h                       |    1 +
  tools/xmlrpc_cpp_proxy/CMakeLists.txt       |   17 ++
@@ -62,8 +64,8 @@ cmake: updated
  transport_config.h.cmake                    |   16 ++
  version.h.cmake                             |    5 +
  xmlrpc-c-config                             |  105 ++++++++++
- xmlrpc_config.h.cmake                       |  147 ++++++++++++++
- 58 files changed, 1530 insertions(+), 0 deletions(-)
+ xmlrpc_config.h.cmake                       |  183 +++++++++++++++++
+ 60 files changed, 1636 insertions(+)
  create mode 100644 CMakeLists.txt
  create mode 100644 cmake/try-attr.cc
  create mode 100644 cmake/va-list-is-array.c
@@ -100,18 +102,20 @@ cmake: updated
  create mode 100644 src/cpp/xmlrpc_server_abyss++.pc.cmake
  create mode 100644 src/cpp/xmlrpc_server_cgi++.pc.cmake
  create mode 100644 src/cpp/xmlrpc_server_pstream++.pc.cmake
- create mode 100644 src/test/CMakeLists.txt
  create mode 100644 src/xmlrpc.pc.cmake
  create mode 100644 src/xmlrpc_client.pc.cmake
  create mode 100644 src/xmlrpc_server.pc.cmake
  create mode 100644 src/xmlrpc_server_abyss.pc.cmake
  create mode 100644 src/xmlrpc_server_cgi.pc.cmake
+ create mode 100644 test/CMakeLists.txt
+ create mode 100644 test/cpp/CMakeLists.txt
  create mode 100644 tools/CMakeLists.txt
  create mode 100644 tools/binmode-rpc-kit/CMakeLists.txt
  create mode 100644 tools/lib/CMakeLists.txt
  create mode 100644 tools/turbocharger/CMakeLists.txt
  create mode 100644 tools/xml-rpc-api2cpp/CMakeLists.txt
  create mode 100644 tools/xml-rpc-api2txt/CMakeLists.txt
+ create mode 100644 tools/xml/CMakeLists.txt
  create mode 100644 tools/xmlrpc/CMakeLists.txt
  create mode 100644 tools/xmlrpc/config.h
  create mode 100644 tools/xmlrpc_cpp_proxy/CMakeLists.txt
@@ -125,10 +129,10 @@ cmake: updated
 
 diff --git a/CMakeLists.txt b/CMakeLists.txt
 new file mode 100644
-index 0000000..3bb9e03
+index 0000000..2876dea
 --- /dev/null
 +++ b/CMakeLists.txt
-@@ -0,0 +1,284 @@
+@@ -0,0 +1,290 @@
 +## -*- cmake -*-
 +project(xmlrpc-c)
 +include(FindPkgConfig)
@@ -143,8 +147,8 @@ index 0000000..3bb9e03
 +
 +
 +set(XMLRPC_C_VERSION_MAJOR "1"  CACHE STRING "Version (major) of xmlrpc-c")
-+set(XMLRPC_C_VERSION_MINOR "26" CACHE STRING "Version (minor) of xmlrpc-c")
-+set(XMLRPC_C_VERSION_POINT "2"  CACHE STRING "Version (point) of xmlrpc-c")
++set(XMLRPC_C_VERSION_MINOR "32" CACHE STRING "Version (minor) of xmlrpc-c")
++set(XMLRPC_C_VERSION_POINT "5"  CACHE STRING "Version (point) of xmlrpc-c")
 +
 +set(XMLRPC_C_VERSION
 +  "${XMLRPC_C_VERSION_MAJOR}.${XMLRPC_C_VERSION_MINOR}.${XMLRPC_C_VERSION_POINT}"
@@ -153,8 +157,8 @@ index 0000000..3bb9e03
 +set(XMLRPC_C_LIBVERSION "3.${XMLRPC_C_VERSION_MINOR}")
 +set(XMLRPC_C_SOVERSION  "3")
 +
-+set(XMLRPC_CXX_LIBVERSION "7.${XMLRPC_C_VERSION_MINOR}")
-+set(XMLRPC_CXX_SOVERSION  "7")
++set(XMLRPC_CXX_LIBVERSION "8.${XMLRPC_C_VERSION_MINOR}")
++set(XMLRPC_CXX_SOVERSION  "8")
 +
 +string(REGEX REPLACE "^0+" "" XMLRPC_C_VERSION_MAJOR_NUM "${XMLRPC_C_VERSION_MAJOR}")
 +string(REGEX REPLACE "^0+" "" XMLRPC_C_VERSION_MINOR_NUM "${XMLRPC_C_VERSION_MINOR}")
@@ -207,6 +211,8 @@ index 0000000..3bb9e03
 +      set(tmp 0)
 +    endif(WININET_CONFIG_EXECUTABLE)
 +  endif(DEFINED MUST_BUILD_WININET_CLIENT)
++
++  set(MSVCRT yes)
 +else(WIN32)
 +  set(tmp 0)
 +endif(WIN32)
@@ -279,19 +285,19 @@ index 0000000..3bb9e03
 +
 +###########
 +
-+set(ENABLE_TOOLS           0 CACHE BOOL "Build the tools")
 +pkg_check_modules(NCURSES ncurses)
 +find_library(READLINE readline)
 +
-+if (ENABLE_TOOLS)
-+  message(STATUS "Building tools")
-+  if (MUST_BUILD_LIBWWW_CLIENT OR MUST_BUILD_WININET_CLIENT OR MUST_BUILD_CURL_CLIENT)
-+    if (NCURSES_FOUND AND READLINE)
-+      set(BUILD_XMLRPC_PSTREAM 1)
-+      message(STATUS "Building xmlrpc_pstream tool")
-+    endif()
-+    set(BUILD_TOOLS 1)
++if (MUST_BUILD_LIBWWW_CLIENT OR MUST_BUILD_WININET_CLIENT OR MUST_BUILD_CURL_CLIENT)
++  if (NCURSES_FOUND AND READLINE)
++    set(BUILD_XMLRPC_PSTREAM 1)
++    message(STATUS "Building xmlrpc_pstream tool")
 +  endif()
++  message(STATUS "Tools will be built")
++  set(BUILD_TOOLS 1)
++else()
++  message(STATUS "Tools will not be built")
++  set(BUILD_TOOLS 0)
 +endif()
 +
 +####  <wchar.h> tests
@@ -336,8 +342,11 @@ index 0000000..3bb9e03
 +
 +if(WIN32)
 +  set(DIRECTORY_SEPARATOR "\\")
++  set(THREAD_LIBS "")
 +else(WIN32)
 +  set(DIRECTORY_SEPARATOR "/")
++  set(THREAD_LIBS "pthread")
++  set(THREAD_LIBS_PKGCONFIG "-lpthread")
 +endif(WIN32)
 +
 +check_include_file(sys/filio.h  HAVE_SYS_FILIO_H)
@@ -405,11 +414,12 @@ index 0000000..3bb9e03
 +
 +enable_testing()
 +
++add_subdirectory(test)
 +add_subdirectory(lib)
 +add_subdirectory(examples)
 +add_subdirectory(include)
 +add_subdirectory(src)
-+add_subdirectory(test)
++
 +if (BUILD_TOOLS)
 +  add_subdirectory(tools)
 +endif()
@@ -439,10 +449,10 @@ index 0000000..1ad0bab
 +int main() {}
 diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
 new file mode 100644
-index 0000000..30d0db5
+index 0000000..1535adf
 --- /dev/null
 +++ b/examples/CMakeLists.txt
-@@ -0,0 +1,62 @@
+@@ -0,0 +1,68 @@
 +# -*- cmake -*-
 +
 +include_directories(${CMAKE_CURRENT_BINARY_DIR})
@@ -469,6 +479,7 @@ index 0000000..30d0db5
 +set(base_LIBS xmlrpc)
 +ensc_add_example(json               c base)
 +ensc_add_example(gen_sample_add_xml c base)
++ensc_add_example(parse_xml          c base)
 +
 +if(MUST_BUILD_CLIENT)
 +  set(client_LIBS xmlrpc_client)
@@ -483,7 +494,9 @@ index 0000000..30d0db5
 +if(MUST_BUILD_CURL_CLIENT)
 +  set(client_LIBS xmlrpc_client)
 +
-+  ensc_add_example(interrupted_client       c client)
++  if(NOT DEFINED MSVCRT)
++    ensc_add_example(interrupted_client       c client)
++  endif(NOT DEFINED MSVCRT)
 +endif(MUST_BUILD_CURL_CLIENT)
 +
 +if(ENABLE_CGI_SERVER)
@@ -496,12 +509,15 @@ index 0000000..30d0db5
 +  set(abyss_server_LIBS xmlrpc_server_abyss)
 +
 +  ensc_add_example(compound_value_server    c abyss_server)
-+  ensc_add_example(interrupted_server       c abyss_server)
 +  ensc_add_example(xmlrpc_inetd_server      c abyss_server)
 +  ensc_add_example(xmlrpc_socket_server     c abyss_server)
 +  ensc_add_example(xmlrpc_loop_server       c abyss_server)
 +  ensc_add_example(xmlrpc_sample_add_server c abyss_server)
 +  ensc_add_example(xmlrpc_server_validatee  c abyss_server)
++
++  if(NOT DEFINED MSVCRT)
++    ensc_add_example(interrupted_server       c abyss_server)
++  endif(NOT DEFINED MSVCRT)
 +endif(ENABLE_ABYSS_SERVER)
 +
 +ensc_set_link_exe_flags(${example_TARGETS})
@@ -643,10 +659,10 @@ index 0000000..b9386b8
 +endforeach(ln)
 diff --git a/include/xmlrpc-c/config.h.cmake b/include/xmlrpc-c/config.h.cmake
 new file mode 100644
-index 0000000..80892e5
+index 0000000..48f64be
 --- /dev/null
 +++ b/include/xmlrpc-c/config.h.cmake
-@@ -0,0 +1,32 @@
+@@ -0,0 +1,34 @@
 +/* --*- c -*-- */
 +#ifndef XMLRPC_C_CONFIG_H_INCLUDED
 +#define XMLRPC_C_CONFIG_H_INCLUDED
@@ -662,7 +678,7 @@ index 0000000..80892e5
 +   This file was created by a make rule.
 +*/
 +#define XMLRPC_HAVE_WCHAR		@HAVE_WCHAR_H@
-+#ifdef WIN32
++#ifdef _WIN32
 +  /* SOCKET is a type defined by <winsock.h>.  Anyone who
 +     uses XMLRPC_SOCKET on a WIN32 system must #include
 +     <winsock.h>
@@ -671,11 +687,13 @@ index 0000000..80892e5
 +  #define XMLRPC_HAVE_TIMEVAL 0
 +  #define XMLRPC_HAVE_TIMESPEC 0
 +  #define XMLRPC_HAVE_PTHREAD 0
++  #define XMLRPC_HAVE_WINTHREAD 1
 +#else
 +  #define XMLRPC_SOCKET int
 +  #define XMLRPC_HAVE_TIMEVAL 1
 +  #define XMLRPC_HAVE_TIMESPEC 1
 +  #define XMLRPC_HAVE_PTHREAD 1
++  #define XMLRPC_HAVE_WINTHREAD 0
 +#endif
 +
 +#endif
@@ -708,10 +726,10 @@ index 0000000..2358061
 +SUBDIRS(src)
 diff --git a/lib/abyss/src/CMakeLists.txt b/lib/abyss/src/CMakeLists.txt
 new file mode 100644
-index 0000000..e7f89bf
+index 0000000..b1813bb
 --- /dev/null
 +++ b/lib/abyss/src/CMakeLists.txt
-@@ -0,0 +1,66 @@
+@@ -0,0 +1,70 @@
 +## -*- cmake -*-
 +
 +set(xmlrpc_abyss_SOURCES
@@ -741,8 +759,6 @@ index 0000000..e7f89bf
 +  session.h
 +  socket.c
 +  socket.h
-+  socket_unix.c
-+  socket_unix.h
 +  thread.h
 +  token.c
 +  token.h
@@ -751,19 +767,25 @@ index 0000000..e7f89bf
 +
 +add_definitions(-D_UNIX)
 +
-+if(ENABLE_ABYSS_THREADS)
-+  list(APPEND xmlrpc_abyss_SOURCES thread_pthread.c)
-+else(ENABLE_ABYSS_THREADS)
-+  list(APPEND xmlrpc_abyss_SOURCES thread_fork.c)
-+endif(ENABLE_ABYSS_THREADS)
++if(WIN32)
++  list(APPEND xmlrpc_abyss_SOURCES thread_windows.c)
++else(WIN32)
++  list(APPEND xmlrpc_abyss_SOURCES socket_unix.c socket_unix.h)
++
++  if(ENABLE_ABYSS_THREADS)
++    list(APPEND xmlrpc_abyss_SOURCES thread_pthread.c)
++  else(ENABLE_ABYSS_THREADS)
++    list(APPEND xmlrpc_abyss_SOURCES thread_fork.c)
++  endif(ENABLE_ABYSS_THREADS)
++endif(WIN32)
 +
 +add_library(xmlrpc_abyss SHARED ${xmlrpc_abyss_SOURCES})
 +target_link_libraries(xmlrpc_abyss xmlrpc_util)
 +
 +if(ENABLE_ABYSS_THREADS)
 +  set_target_properties(xmlrpc_abyss PROPERTIES DEFINE_SYMBOL _THREAD)
-+  target_link_libraries(xmlrpc_abyss pthread)
-+  ensc_pkgconfig_lib(xmlrpc_abyss "-lpthread")
++  target_link_libraries(xmlrpc_abyss ${THREAD_LIBS})
++  ensc_pkgconfig_lib(xmlrpc_abyss "${THREAD_LIBS_PKGCONFIG}")
 +endif(ENABLE_ABYSS_THREADS)
 +
 +install(TARGETS xmlrpc_abyss
@@ -780,7 +802,7 @@ index 0000000..e7f89bf
 +ensc_pkgconfig(xmlrpc_abyss)
 diff --git a/lib/abyss/src/xmlrpc_abyss.pc.cmake b/lib/abyss/src/xmlrpc_abyss.pc.cmake
 new file mode 100644
-index 0000000..fae7af3
+index 0000000..b0dbcc9
 --- /dev/null
 +++ b/lib/abyss/src/xmlrpc_abyss.pc.cmake
 @@ -0,0 +1,12 @@
@@ -789,12 +811,12 @@ index 0000000..fae7af3
 +libdir=@libdir@
 +includedir=@includedir@
 +
-+Name:        xmlrpc_abyss
++Name:	     xmlrpc_abyss
 +Description: XMLRPC Abyss base library
 +Version:     @XMLRPC_C_VERSION@
 +
 +Requires.private:	xmlrpc_util
-+Libs:   		-L${libdir} -lxmlrpc_abyss @xmlrpc_abyss_pkgconfig_libs@
++Libs:			-L${libdir} -lxmlrpc_abyss @xmlrpc_abyss_pkgconfig_libs@
 +Cflags:
 diff --git a/lib/curl_transport/CMakeLists.txt b/lib/curl_transport/CMakeLists.txt
 new file mode 100644
@@ -955,7 +977,7 @@ index 0000000..25ba487
 +ensc_pkgconfig(xmlrpc_util)
 diff --git a/lib/libutil/xmlrpc_util.pc.cmake b/lib/libutil/xmlrpc_util.pc.cmake
 new file mode 100644
-index 0000000..3d2968e
+index 0000000..d4e01bf
 --- /dev/null
 +++ b/lib/libutil/xmlrpc_util.pc.cmake
 @@ -0,0 +1,10 @@
@@ -963,23 +985,24 @@ index 0000000..3d2968e
 +libdir=@libdir@
 +includedir=@includedir@
 +
-+Name:        xmlrpc_util
++Name:	     xmlrpc_util
 +Description: XMLRPC utility library
 +Version:     @XMLRPC_C_VERSION@
 +
-+Libs:   	-L${libdir} -lxmlrpc_util
++Libs:		-L${libdir} -lxmlrpc_util
 +Cflags:		-I${includedir}
 diff --git a/lib/libwww_transport/CMakeLists.txt b/lib/libwww_transport/CMakeLists.txt
 new file mode 100644
 index 0000000..aa52d9e
 --- /dev/null
 +++ b/lib/libwww_transport/CMakeLists.txt
-@@ -0,0 +1,6 @@
+@@ -0,0 +1,7 @@
 +# -*- cmake -*-
 +
 +if(MUST_BUILD_LIBWWW_CLIENT)
 +  list(APPEND transport_SOURCES
-+    ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_libwww_transport.c)
++    ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_libwww_transport.c
++    ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_libwww_transport.h)
 +endif(MUST_BUILD_LIBWWW_CLIENT)
 diff --git a/lib/util/CMakeLists.txt b/lib/util/CMakeLists.txt
 new file mode 100644
@@ -1019,10 +1042,10 @@ index 0000000..17535ab
 +endif(MUST_BUILD_WININET_CLIENT)
 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
 new file mode 100644
-index 0000000..7ac88b0
+index 0000000..f51e15b
 --- /dev/null
 +++ b/src/CMakeLists.txt
-@@ -0,0 +1,122 @@
+@@ -0,0 +1,121 @@
 +# -*- cmake -*-
 +
 +if(ENABLE_LIBXML2_BACKEND)
@@ -1047,7 +1070,7 @@ index 0000000..7ac88b0
 +if(MUST_BUILD_LIBWWW_CLIENT)
 +  set(client_libwww_CFLAGS "${LIBWWW_CFLAGS}")
 +  set(client_libwww_LIBS   "${LIBWWW_LIBS}")
-+  list(APPEND transport_SOURCES ${libwww_srcdir}/xmlrpc_libwww_transport.c)
++  list(APPEND transport_SOURCES ${libwww_srcdir}/xmlrpc_libwww_transport.c ${libwww_srcdir}/xmlrpc_libwww_transport.h)
 +endif(MUST_BUILD_LIBWWW_CLIENT)
 +
 +if(MUST_BUILD_CURL_CLIENT)
@@ -1075,7 +1098,6 @@ index 0000000..7ac88b0
 +
 +
 +
-+
 +### libxmlrpc.so
 +add_library(xmlrpc SHARED
 +  double.c parse_datetime.c parse_value.c resource.c trace.c version.c
@@ -1084,7 +1106,7 @@ index 0000000..7ac88b0
 +  xmlrpc_data.c xmlrpc_datetime.c xmlrpc_string.c
 +  xmlrpc_array.c xmlrpc_struct.c
 +  xmlrpc_build.c xmlrpc_decompose.c xmlrpc_parse.c xmlrpc_serialize.c
-+  xmlrpc_base64.c xmlrpc_authcookie.c)
++  xmlrpc_authcookie.c)
 +
 +set_target_properties(xmlrpc
 +  PROPERTIES
@@ -1116,7 +1138,7 @@ index 0000000..7ac88b0
 +### libxmlrpc_server_abyss.so
 +if(ENABLE_ABYSS_SERVER)
 +  add_library(xmlrpc_server_abyss SHARED
-+    xmlrpc_server_abyss.c)
++    xmlrpc_server_abyss.c abyss_handler.c)
 +  target_link_libraries(xmlrpc_server_abyss xmlrpc_abyss xmlrpc_server)
 +  list(APPEND lib_TARGETS xmlrpc_server_abyss)
 +  ensc_pkgconfig(xmlrpc_server_abyss)
@@ -1247,7 +1269,7 @@ index 0000000..dffd36c
 +add_test(runtests src-test)
 diff --git a/src/cpp/xmlrpc++.pc.cmake b/src/cpp/xmlrpc++.pc.cmake
 new file mode 100644
-index 0000000..3bfa992
+index 0000000..e99d81e
 --- /dev/null
 +++ b/src/cpp/xmlrpc++.pc.cmake
 @@ -0,0 +1,12 @@
@@ -1256,16 +1278,16 @@ index 0000000..3bfa992
 +libdir=@libdir@
 +includedir=@includedir@
 +
-+Name:        xmlrpc++
++Name:	     xmlrpc++
 +Description: XMLRPC C++ Base library
 +Version:     @XMLRPC_C_VERSION@
 +
 +Requires.private:	xmlrpc xmlrpc_util
-+Libs:   		-L${libdir} -lxmlrpc++
++Libs:			-L${libdir} -lxmlrpc++
 +Cflags:			-I${includedir}
 diff --git a/src/cpp/xmlrpc_client++.pc.cmake b/src/cpp/xmlrpc_client++.pc.cmake
 new file mode 100644
-index 0000000..bd6766b
+index 0000000..fe1f835
 --- /dev/null
 +++ b/src/cpp/xmlrpc_client++.pc.cmake
 @@ -0,0 +1,12 @@
@@ -1274,16 +1296,16 @@ index 0000000..bd6766b
 +libdir=@libdir@
 +includedir=@includedir@
 +
-+Name:        xmlrpc_client++
++Name:	     xmlrpc_client++
 +Description: XMLRPC C++ Client library
 +Version:     @XMLRPC_C_VERSION@
 +
 +Requires.private:	xmlrpc++ xmlrpc_client xmlrpc_packetsocket xmlrpc xmlrpc_util
-+Libs:   		-L${libdir} -lxmlrpc_client++
++Libs:			-L${libdir} -lxmlrpc_client++
 +Cflags:			-I${includedir}
 diff --git a/src/cpp/xmlrpc_cpp.pc.cmake b/src/cpp/xmlrpc_cpp.pc.cmake
 new file mode 100644
-index 0000000..8acc22f
+index 0000000..9f94252
 --- /dev/null
 +++ b/src/cpp/xmlrpc_cpp.pc.cmake
 @@ -0,0 +1,12 @@
@@ -1292,16 +1314,16 @@ index 0000000..8acc22f
 +libdir=@libdir@
 +includedir=@includedir@
 +
-+Name:        xmlrpc_cpp
++Name:	     xmlrpc_cpp
 +Description: XMLRPC CPP library
 +Version:     @XMLRPC_C_VERSION@
 +
 +Requires.private:	xmlrpc xmlrpc_server xmlrpc_util
-+Libs:   		-L${libdir} -lxmlrpc_cpp
++Libs:			-L${libdir} -lxmlrpc_cpp
 +Cflags:			-I${includedir}
 diff --git a/src/cpp/xmlrpc_packetsocket.pc.cmake b/src/cpp/xmlrpc_packetsocket.pc.cmake
 new file mode 100644
-index 0000000..4a8aedc
+index 0000000..e168da3
 --- /dev/null
 +++ b/src/cpp/xmlrpc_packetsocket.pc.cmake
 @@ -0,0 +1,12 @@
@@ -1310,16 +1332,16 @@ index 0000000..4a8aedc
 +libdir=@libdir@
 +includedir=@includedir@
 +
-+Name:        xmlrpc_packetsocket
++Name:	     xmlrpc_packetsocket
 +Description: XMLRPC C++ packsetsocket library
 +Version:     @XMLRPC_C_VERSION@
 +
 +Requires.private:	xmlrpc++
-+Libs:   		-L${libdir} -lxmlrpc_packetsocket
++Libs:			-L${libdir} -lxmlrpc_packetsocket
 +Cflags:			-I${includedir}
 diff --git a/src/cpp/xmlrpc_server++.pc.cmake b/src/cpp/xmlrpc_server++.pc.cmake
 new file mode 100644
-index 0000000..c769d54
+index 0000000..5080b63
 --- /dev/null
 +++ b/src/cpp/xmlrpc_server++.pc.cmake
 @@ -0,0 +1,12 @@
@@ -1328,16 +1350,16 @@ index 0000000..c769d54
 +libdir=@libdir@
 +includedir=@includedir@
 +
-+Name:        xmlrpc_server++
++Name:	     xmlrpc_server++
 +Description: XMLRPC C++ Server library
 +Version:     @XMLRPC_C_VERSION@
 +
 +Requires.private:	xmlrpc++ xmlrpc_server xmlrpc xmlrpc_util
-+Libs:   		-L${libdir} -lxmlrpc_server++
++Libs:			-L${libdir} -lxmlrpc_server++
 +Cflags:			-I${includedir}
 diff --git a/src/cpp/xmlrpc_server_abyss++.pc.cmake b/src/cpp/xmlrpc_server_abyss++.pc.cmake
 new file mode 100644
-index 0000000..b325eff
+index 0000000..f1d2198
 --- /dev/null
 +++ b/src/cpp/xmlrpc_server_abyss++.pc.cmake
 @@ -0,0 +1,12 @@
@@ -1346,16 +1368,16 @@ index 0000000..b325eff
 +libdir=@libdir@
 +includedir=@includedir@
 +
-+Name:        xmlrpc_server_abyss++
++Name:	     xmlrpc_server_abyss++
 +Description: XMLRPC C++ Abyss-Server library
 +Version:     @XMLRPC_C_VERSION@
 +
 +Requires.private:	xmlrpc_server++ xmlrpc_server_abyss xmlrpc++ xmlrpc_abyss xmlrpc_util
-+Libs:   		-L${libdir} -lxmlrpc_server_abyss++
++Libs:			-L${libdir} -lxmlrpc_server_abyss++
 +Cflags:			-I${includedir}
 diff --git a/src/cpp/xmlrpc_server_cgi++.pc.cmake b/src/cpp/xmlrpc_server_cgi++.pc.cmake
 new file mode 100644
-index 0000000..72a3726
+index 0000000..9021564
 --- /dev/null
 +++ b/src/cpp/xmlrpc_server_cgi++.pc.cmake
 @@ -0,0 +1,12 @@
@@ -1364,16 +1386,16 @@ index 0000000..72a3726
 +libdir=@libdir@
 +includedir=@includedir@
 +
-+Name:        xmlrpc_server_cgi++
++Name:	     xmlrpc_server_cgi++
 +Description: XMLRPC C++ CGI-Server library
 +Version:     @XMLRPC_C_VERSION@
 +
 +Requires.private:	xmlrpc_server++ xmlrpc++ xmlrpc
-+Libs:   		-L${libdir} -lxmlrpc_server_cgi++
++Libs:			-L${libdir} -lxmlrpc_server_cgi++
 +Cflags:			-I${includedir}
 diff --git a/src/cpp/xmlrpc_server_pstream++.pc.cmake b/src/cpp/xmlrpc_server_pstream++.pc.cmake
 new file mode 100644
-index 0000000..da5639d
+index 0000000..9b4819f
 --- /dev/null
 +++ b/src/cpp/xmlrpc_server_pstream++.pc.cmake
 @@ -0,0 +1,12 @@
@@ -1382,61 +1404,16 @@ index 0000000..da5639d
 +libdir=@libdir@
 +includedir=@includedir@
 +
-+Name:        xmlrpc_server_pstream++
++Name:	     xmlrpc_server_pstream++
 +Description: XMLRPC C++ pstream-Server library
 +Version:     @XMLRPC_C_VERSION@
 +
 +Requires.private:	xmlrpc_server++ xmlrpc_packetsocket xmlrpc++
-+Libs:   		-L${libdir} -lxmlrpc_server_pstream++
++Libs:			-L${libdir} -lxmlrpc_server_pstream++
 +Cflags:			-I${includedir}
-diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
-new file mode 100644
-index 0000000..fdc6869
---- /dev/null
-+++ b/test/CMakeLists.txt
-@@ -0,0 +1,39 @@
-+# -*- cmake -*-
-+
-+set(test_SOURCES
-+  abyss.c
-+  abyss.h
-+  test.c
-+  cgi.c
-+  method_registry.c
-+  parse_xml.c
-+  serialize.c
-+  serialize_value.c
-+  server_abyss.c
-+  testtool.c
-+  testtool.h
-+  value.c
-+  value_datetime.c
-+  xml_data.c)
-+
-+if(MUST_BUILD_CLIENT)
-+  list(APPEND test_SOURCES client.c)
-+  list(APPEND test_LIBS xmlrpc_client)
-+else(MUST_BUILD_CLIENT)
-+  list(APPEND test_SOURCES client_dummy.c)
-+endif(MUST_BUILD_CLIENT)
-+
-+
-+add_executable(src-test ${test_SOURCES})
-+target_link_libraries(src-test xmlrpc_server_abyss util ${test_LIBS})
-+
-+add_executable(src-cgitest1 cgitest1.c testtool.c testtool.h)
-+target_link_libraries(src-cgitest1 xmlrpc_server_cgi)
-+
-+add_custom_command(TARGET src-test
-+  POST_BUILD
-+  COMMAND rm -f ${CMAKE_CURRENT_BINARY_DIR}/data
-+  COMMAND ln -s ${CMAKE_CURRENT_SOURCE_DIR}/data ${CMAKE_CURRENT_BINARY_DIR})
-+
-+enable_testing()
-+add_test(runtests src-test)
 diff --git a/src/xmlrpc.pc.cmake b/src/xmlrpc.pc.cmake
 new file mode 100644
-index 0000000..4c92f93
+index 0000000..7c098b8
 --- /dev/null
 +++ b/src/xmlrpc.pc.cmake
 @@ -0,0 +1,12 @@
@@ -1445,16 +1422,16 @@ index 0000000..4c92f93
 +libdir=@libdir@
 +includedir=@includedir@
 +
-+Name:        xmlrpc
++Name:	     xmlrpc
 +Description: XMLRPC base library
 +Version:     @XMLRPC_C_VERSION@
 +
 +Requires.private:	@xmlrpc_pkgconfig_req@ xmlrpc_util
-+Libs:   		-L${libdir} -lxmlrpc @xmlrpc_pkgconfig_libs@
++Libs:			-L${libdir} -lxmlrpc @xmlrpc_pkgconfig_libs@
 +Cflags:			-I${includedir}
 diff --git a/src/xmlrpc_client.pc.cmake b/src/xmlrpc_client.pc.cmake
 new file mode 100644
-index 0000000..7f28a15
+index 0000000..61543d4
 --- /dev/null
 +++ b/src/xmlrpc_client.pc.cmake
 @@ -0,0 +1,12 @@
@@ -1463,16 +1440,16 @@ index 0000000..7f28a15
 +libdir=@libdir@
 +includedir=@includedir@
 +
-+Name:        xmlrpc_client
++Name:	     xmlrpc_client
 +Description: XMLRPC client library
 +Version:     @XMLRPC_C_VERSION@
 +
 +Requires.private:	xmlrpc @xmlrpc_client_pkgconfig_req@ xmlrpc_util
-+Libs:   		-L${libdir} -lxmlrpc_client @client_libwww_LIBS@ @client_wininet_LIBS@
++Libs:			-L${libdir} -lxmlrpc_client @client_libwww_LIBS@ @client_wininet_LIBS@
 +Cflags:			-I${includedir}
 diff --git a/src/xmlrpc_server.pc.cmake b/src/xmlrpc_server.pc.cmake
 new file mode 100644
-index 0000000..d5c334e
+index 0000000..cade53d
 --- /dev/null
 +++ b/src/xmlrpc_server.pc.cmake
 @@ -0,0 +1,12 @@
@@ -1481,16 +1458,16 @@ index 0000000..d5c334e
 +libdir=@libdir@
 +includedir=@includedir@
 +
-+Name:        xmlrpc_server
++Name:	     xmlrpc_server
 +Description: XMLRPC Server library
 +Version:     @XMLRPC_C_VERSION@
 +
 +Requires.private:	xmlrpc xmlrpc_util
-+Libs:   		-L${libdir} -lxmlrpc_server
++Libs:			-L${libdir} -lxmlrpc_server
 +Cflags:			-I${includedir}
 diff --git a/src/xmlrpc_server_abyss.pc.cmake b/src/xmlrpc_server_abyss.pc.cmake
 new file mode 100644
-index 0000000..48fa0b1
+index 0000000..198c780
 --- /dev/null
 +++ b/src/xmlrpc_server_abyss.pc.cmake
 @@ -0,0 +1,12 @@
@@ -1499,16 +1476,16 @@ index 0000000..48fa0b1
 +libdir=@libdir@
 +includedir=@includedir@
 +
-+Name:        xmlrpc_server_abyss
++Name:	     xmlrpc_server_abyss
 +Description: XMLRPC Server Abyss library
 +Version:     @XMLRPC_C_VERSION@
 +
 +Requires.private:	xmlrpc_server xmlrpc_abyss xmlrpc xmlrpc_util
-+Libs:   		-L${libdir} -lxmlrpc_server_abyss
++Libs:			-L${libdir} -lxmlrpc_server_abyss
 +Cflags:			-I${includedir}
 diff --git a/src/xmlrpc_server_cgi.pc.cmake b/src/xmlrpc_server_cgi.pc.cmake
 new file mode 100644
-index 0000000..4d174ef
+index 0000000..748b550
 --- /dev/null
 +++ b/src/xmlrpc_server_cgi.pc.cmake
 @@ -0,0 +1,12 @@
@@ -1517,24 +1494,112 @@ index 0000000..4d174ef
 +libdir=@libdir@
 +includedir=@includedir@
 +
-+Name:        xmlrpc_server_cgi
++Name:	     xmlrpc_server_cgi
 +Description: XMLRPC CGI-Server library
 +Version:     @XMLRPC_C_VERSION@
 +
 +Requires.private:	xmlrpc_server xmlrpc xmlrpc_util
-+Libs:   		-L${libdir} -lxmlrpc_server_cgi
++Libs:			-L${libdir} -lxmlrpc_server_cgi
 +Cflags:			-I${includedir}
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+new file mode 100644
+index 0000000..e712382
+--- /dev/null
++++ b/test/CMakeLists.txt
+@@ -0,0 +1,41 @@
++# -*- cmake -*-
++
++set(test_SOURCES
++  abyss.c
++  abyss.h
++  test.c
++  cgi.c
++  method_registry.c
++  parse_xml.c
++  serialize.c
++  serialize_value.c
++  server_abyss.c
++  testtool.c
++  testtool.h
++  value.c
++  value_datetime.c
++  xml_data.c)
++
++if(MUST_BUILD_CLIENT)
++  list(APPEND test_SOURCES client.c)
++  list(APPEND test_LIBS xmlrpc_client)
++else(MUST_BUILD_CLIENT)
++  list(APPEND test_SOURCES client_dummy.c)
++endif(MUST_BUILD_CLIENT)
++
++
++add_executable(src-test ${test_SOURCES})
++target_link_libraries(src-test xmlrpc_server_abyss util ${test_LIBS})
++
++add_executable(src-cgitest1 cgitest1.c testtool.c testtool.h)
++target_link_libraries(src-cgitest1 xmlrpc_server_cgi)
++
++add_custom_command(TARGET src-test
++  POST_BUILD
++  COMMAND rm -f ${CMAKE_CURRENT_BINARY_DIR}/data
++  COMMAND ln -s ${CMAKE_CURRENT_SOURCE_DIR}/data ${CMAKE_CURRENT_BINARY_DIR})
++
++enable_testing()
++add_test(runtests src-test)
++
++add_subdirectory(cpp)
+diff --git a/test/cpp/CMakeLists.txt b/test/cpp/CMakeLists.txt
+new file mode 100644
+index 0000000..15a7c3a
+--- /dev/null
++++ b/test/cpp/CMakeLists.txt
+@@ -0,0 +1,34 @@
++# -*- cmake -*-
++
++set(testcpp_SOURCES
++  test.cpp
++  base64.cpp
++  registry.cpp
++  server_abyss.cpp
++  server_pstream.cpp
++  tools.cpp
++  value.cpp
++  xml.cpp)
++
++if(MUST_BUILD_CLIENT)
++  list(APPEND testcpp_SOURCES testclient.cpp)
++  list(APPEND testcpp_LIBS xmlrpc_client++)
++else(MUST_BUILD_CLIENT)
++  list(APPEND testcpp_SOURCES testclient_dummy.c)
++endif(MUST_BUILD_CLIENT)
++
++if(DEFINED MSVCRT)
++  list(APPEND testcpp_SOURCES ${CMAKE_SOURCE_DIR}/Windows/socketpair.cpp)
++endif(DEFINED MSVCRT)
++
++add_executable(src-testcpp ${testcpp_SOURCES})
++target_link_libraries(src-testcpp
++  xmlrpc++
++  xmlrpc_server++
++  xmlrpc_server_abyss++
++  xmlrpc_server_pstream++
++  xmlrpc_cpp
++  util ${testcpp_LIBS})
++
++enable_testing()
++add_test(runtests src-testcpp)
 diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
 new file mode 100644
-index 0000000..0bc45a9
+index 0000000..cd2a6d7
 --- /dev/null
 +++ b/tools/CMakeLists.txt
-@@ -0,0 +1,21 @@
+@@ -0,0 +1,22 @@
 +# -*- cmake -*-
 +
 +add_subdirectory(lib)
 +add_subdirectory(binmode-rpc-kit)
 +add_subdirectory(turbocharger)
++add_subdirectory(xml)
 +
 +if (MUST_BUILD_CLIENT)
 +  add_subdirectory(xmlrpc)
@@ -1606,6 +1671,28 @@ index 0000000..5b01824
 +
 +install(FILES xml-rpc-api2txt.1
 +  DESTINATION ${mandir}/man1)
+diff --git a/tools/xml/CMakeLists.txt b/tools/xml/CMakeLists.txt
+new file mode 100644
+index 0000000..0bab80c
+--- /dev/null
++++ b/tools/xml/CMakeLists.txt
+@@ -0,0 +1,16 @@
++# -*- cmake -*-
++
++add_executable(xmlrpc_parsecall
++  xmlrpc_parsecall.c
++  ../lib/dumpvalue.c)
++
++target_link_libraries(xmlrpc_parsecall
++  xmlrpc
++  util)
++
++install(TARGETS xmlrpc_parsecall
++  DESTINATION ${_bin})
++
++include_directories(../lib/include)
++
++ensc_set_link_exe_flags(xmlrpc_parsecall)
 diff --git a/tools/xmlrpc/CMakeLists.txt b/tools/xmlrpc/CMakeLists.txt
 new file mode 100644
 index 0000000..da01ec3
@@ -1849,10 +1936,10 @@ index 0000000..50577fd
 +exec pkg-config "$@" $comp
 diff --git a/xmlrpc_config.h.cmake b/xmlrpc_config.h.cmake
 new file mode 100644
-index 0000000..2859749
+index 0000000..9eff724
 --- /dev/null
 +++ b/xmlrpc_config.h.cmake
-@@ -0,0 +1,147 @@
+@@ -0,0 +1,183 @@
 +/* -*- c -*- */
 +
 +#ifndef H_XMLRPC_C_CONFIG_H
@@ -1907,9 +1994,15 @@ index 0000000..2859749
 +
 +/* MSVCRT means we're using the Microsoft Visual C++ runtime library */
 +
-+#ifdef _MSC_VER
-+/* The compiler is Microsoft Visual C++. */
++#if defined(_MSC_VER)
++  /* The compiler is Microsoft Visual C++ */
 +  #define MSVCRT _MSC_VER
++#elif defined(__MINGW32__)
++  /* The compiler is Mingw, which is the Windows version of the GNU
++     compiler. Programs built with this normally use the Microsoft Visual
++     C++ runtime library.
++  */
++  #define MSVCRT 1
 +#else
 +  #define MSVCRT 0
 +#endif
@@ -1937,6 +2030,9 @@ index 0000000..2859749
 +
 +#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
@@ -1957,7 +2053,7 @@ index 0000000..2859749
 +  #define XMLRPC_CLOSESOCKET close
 +#endif
 +
-+#if defined(_MSC_VER)
++#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
@@ -1995,11 +2091,38 @@ index 0000000..2859749
 +  #define XMLRPC_STRTOULL _strtoui64  /* Windows MSVC */
 +#endif
 +
++#if MSVCRT
++  #define snprintf _snprintf
++  #define popen _popen
++#endif
++
 +#define XMLRPC_INT64  int64_t
 +#define XMLRPC_PRId64 PRId64
 +
++/* S_IRUSR is POSIX, defined in <sys/stat.h> Some old BSD systems and Windows
++   systems have S_IREAD instead.  Most Unix today (2011) has both.  In 2011,
++   Android has S_IRUSR and not S_IREAD.
++
++   Some Windows has _S_IREAD.
++
++   We're ignoring S_IREAD now to see if anyone misses it.  If there are still
++   users that need it, we can handle it here.
++*/
++#if MSVCRT
++  #define XMLRPC_S_IWUSR _S_IWRITE
++  #define XMLRPC_S_IRUSR _S_IREAD
++#else
++  #define XMLRPC_S_IWUSR S_IWUSR
++  #define XMLRPC_S_IRUSR S_IRUSR
++#endif
++
++#if MSVCRT
++  #define XMLRPC_CHDIR _chdir
++#else
++  #define XMLRPC_CHDIR chdir
++#endif
 +
 +#endif
 -- 
-1.7.4
+1.7.10.4
 
diff --git a/xmlrpc-c-printf-size_t.patch b/xmlrpc-c-printf-size_t.patch
index 831c590..420b213 100644
--- a/xmlrpc-c-printf-size_t.patch
+++ b/xmlrpc-c-printf-size_t.patch
@@ -1,11 +1,11 @@
-From c06a722a77198ae42fb79b67d185556ac6c1e246 Mon Sep 17 00:00:00 2001
+From 25a777bb0ee2e2ee17d87006f76b3cea5d15a9f7 Mon Sep 17 00:00:00 2001
 From: Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de>
 Date: Mon, 25 Feb 2008 17:48:25 +0100
-Subject: [PATCH 2/7] fixed broken format string modifiers
+Subject: [PATCH 2/9] fixed broken format string modifiers
 
 ---
- examples/json.c                         |    4 ++--
- tools/xmlrpc_pstream/xmlrpc_pstream.cpp |    2 +-
+ examples/json.c      |    4 ++--
+ examples/parse_xml.c |    2 +-
  2 files changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/examples/json.c b/examples/json.c
@@ -30,19 +30,19 @@ index 89fe82b..91ea50d 100644
             XMLRPC_MEMBLOCK_CONTENTS(char, &out));
  
      XMLRPC_MEMBLOCK_CLEAN(char, &out);
-diff --git a/tools/xmlrpc_pstream/xmlrpc_pstream.cpp b/tools/xmlrpc_pstream/xmlrpc_pstream.cpp
-index 1417708..0d6ec11 100644
---- a/tools/xmlrpc_pstream/xmlrpc_pstream.cpp
-+++ b/tools/xmlrpc_pstream/xmlrpc_pstream.cpp
-@@ -103,7 +103,7 @@ bytestringValFromParm(string const& valueString) {
+diff --git a/examples/parse_xml.c b/examples/parse_xml.c
+index 2e6c508..4f6c308 100644
+--- a/examples/parse_xml.c
++++ b/examples/parse_xml.c
+@@ -58,7 +58,7 @@ describeXmlElement(const xml_element * const elemP,
+     printf("%sXML element type:         '%s'\n",
+            prefix, xml_element_name(elemP));
  
-     if (valueString.length() / 2 * 2 != valueString.length())
-         throwf("Hexadecimal text is not an even "
--               "number of characters (it is %u characters)",
-+               "number of characters (it is %zu characters)",
-                valueString.length());
-     else {
-         vector<unsigned char> byteString(valueString.length() / 2);
+-    printf("%sNumber of child elements: %u\n",
++    printf("%sNumber of child elements: %zu\n",
+            prefix, xml_element_children_size(elemP));
+ 
+     for (i = 0; i < xml_element_children_size(elemP); ++i) {
 -- 
-1.7.2.3
+1.7.6
 
diff --git a/xmlrpc-c-soname.patch b/xmlrpc-c-soname.patch
index 761699b..c984025 100644
--- a/xmlrpc-c-soname.patch
+++ b/xmlrpc-c-soname.patch
@@ -1,5 +1,5 @@
---- xmlrpc-c-1.20.3/src/Makefile~	2009-10-03 03:58:24.000000000 +0000
-+++ xmlrpc-c-1.20.3/src/Makefile	2009-12-05 21:20:45.038553497 +0000
+--- xmlrpc-c/src/Makefile.orig	2013-03-03 16:31:13.000000000 +0100
++++ xmlrpc-c/src/Makefile	2013-03-03 17:08:21.062194251 +0100
 @@ -15,7 +15,7 @@
    SUBDIRS += cpp
  endif
@@ -9,7 +9,7 @@
  
  # We cannot build libxmlrpc_server_abyss if we can't also build Abyss,
  # because we need libxmlrpc_abyss in order to build the proper runtime
-@@ -148,7 +148,7 @@
+@@ -155,7 +155,7 @@
  # shlibfn generates e.g. libxmlrpc.so.3.1
  # shliblefn generates e.g. libxmlrpc.so
  
@@ -18,7 +18,7 @@
  
  $(LIBXMLRPC): $(LIBXMLRPC_MODS:%=%.osh) \
    $(LIBXMLRPC_UTIL) \
-@@ -163,10 +163,10 @@
+@@ -170,10 +170,10 @@
  $(LIBXMLRPC_SERVER): \
    $(LIBXMLRPC_SERVER_MODS:%=%.osh) \
    $(LIBXMLRPC_UTIL) \
@@ -31,7 +31,7 @@
  
  LIBXMLRPC_SERVER_ABYSS = $(call shlibfn, libxmlrpc_server_abyss)
  
-@@ -175,12 +175,12 @@
+@@ -182,12 +182,12 @@
    $(LIBXMLRPC_UTIL) \
    $(LIBXMLRPC_ABYSS) \
    $(call shliblefn, libxmlrpc_server) \
@@ -43,10 +43,10 @@
    -L$(LIBXMLRPC_ABYSS_DIR) -lxmlrpc_abyss \
 -  -L. -lxmlrpc $(XML_PARSER_LIBDEP) -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
 +  -L. -lxmlrpc-c $(XML_PARSER_LIBDEP) -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
- 
- LIBXMLRPC_SERVER_CGI = $(call shlibfn, libxmlrpc_server_cgi)
- 
-@@ -188,11 +188,11 @@
+ ifeq ($(MSVCRT),yes)
+   $(LIBXMLRPC_SERVER_ABYSS):  LIBDEP += -lws2_32 -lwsock32
+ endif
+@@ -198,11 +198,11 @@
    $(LIBXMLRPC_SERVER_CGI_MODS:%=%.osh) \
    $(LIBXMRPC_UTIL) \
    $(call shliblefn, libxmlrpc_server) \
@@ -60,7 +60,7 @@
  
  LIBXMLRPC_CLIENT = $(call shlibfn, libxmlrpc_client)
  
-@@ -200,16 +200,16 @@
+@@ -210,7 +210,7 @@
    $(LIBXMLRPC_CLIENT_MODS:%=%.osh) \
    $(TRANSPORT_MODS:%=%.osh) \
    $(LIBXMLRPC_UTIL) \
@@ -69,10 +69,18 @@
  $(LIBXMLRPC_CLIENT): LIBOBJECTS = \
    $(LIBXMLRPC_CLIENT_MODS:%=%.osh) \
    $(TRANSPORT_MODS:%=%.osh)
- $(LIBXMLRPC_CLIENT): LIBDEP = \
+@@ -226,7 +226,7 @@
+ 
+ LIBXMLRPC_CLIENT_LIBDEP = \
+   -Lblddir/src -Lblddir/lib/libutil \
+-  -lxmlrpc -lxmlrpc_util \
++  -lxmlrpc-c -lxmlrpc_util \
+   $(XML_PARSER_LIBDEP) \
    $(TRANSPORT_LIBDEP) \
--  -L. -lxmlrpc $(XML_PARSER_LIBDEP) -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
-+  -L. -lxmlrpc-c $(XML_PARSER_LIBDEP) -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
+ 
+@@ -235,8 +235,8 @@
+   $(LIBXMLRPC_CLIENT):  LIBDEP += -lws2_32 -lwsock32 -lpthread
+ endif
  
 -libxmlrpc.a: $(LIBXMLRPC_MODS:%=%.o)
 -libxmlrpc.a: LIBOBJECTS = $(LIBXMLRPC_MODS:%=%.o)
@@ -81,17 +89,6 @@
  
  libxmlrpc_server.a: $(LIBXMLRPC_SERVER_MODS:%=%.o)
  libxmlrpc_server.a: LIBOBJECTS = $(LIBXMLRPC_SERVER_MODS:%=%.o)
---- xmlrpc-c-1.14.2/tools/common.mk	2008-03-27 19:17:42.000000000 +0100
-+++ xmlrpc-c-1.14.2/tools/common.mk	2008-05-14 18:01:21.855674904 +0200
-@@ -11,7 +11,7 @@
- 
- CLIENT_LDLIBS = -L$(BLDDIR)/src -L$(BLDDIR)/lib/libutil
- 
--CLIENT_LDLIBS += -lxmlrpc_client -lxmlrpc -lxmlrpc_util
-+CLIENT_LDLIBS += -lxmlrpc_client -lxmlrpc-c -lxmlrpc_util
- 
- ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
-   CLIENT_LDLIBS += $(shell libwww-config --libs)
 --- xmlrpc-c-1.14.2/common.mk	2008-05-14 17:43:31.882708000 +0200
 +++ xmlrpc-c-1.14.2/common.mk	2008-05-14 17:59:12.072278970 +0200
 @@ -142,7 +142,7 @@
@@ -112,20 +109,20 @@
  LIBXMLRPC_CLIENT_A       = $(BLDDIR)/src/libxmlrpc_client.a
  LIBXMLRPC_SERVER_A       = $(BLDDIR)/src/libxmlrpc_server.a
  LIBXMLRPC_SERVER_ABYSS_A = $(BLDDIR)/src/libxmlrpc_server_abyss.a
---- xmlrpc-c-1.14.2/xmlrpc-c-config.main.orig	2008-04-18 18:22:02.000000000 +0200
-+++ xmlrpc-c-1.14.2/xmlrpc-c-config.main	2008-05-14 18:02:04.022081182 +0200
+--- xmlrpc-c/xmlrpc-c-config.main.orig	2013-03-03 17:06:35.282198688 +0100
++++ xmlrpc-c/xmlrpc-c-config.main	2013-03-03 17:44:58.868768683 +0100
 @@ -45,7 +45,7 @@
  
  the_libdirs="-L$LIBINST_DIR $the_libdirs"
  
--the_libs="-lxmlrpc -lxmlrpc_util ${LIBXML}"
-+the_libs="-lxmlrpc-c -lxmlrpc_util ${LIBXML}"
+-the_libs="-lxmlrpc  ${LIBXML} -lxmlrpc_util"
++the_libs="-lxmlrpc-c ${LIBXML} -lxmlrpc_util"
  the_rpath="-R$LIBINST_DIR $the_rpath"
  the_wl_rpath="-Wl,-rpath,$LIBINST_DIR $the_wl_rpath"
  
---- xmlrpc-c-1.20.3/src/cpp/Makefile~	2009-07-01 17:39:59.000000000 +0000
-+++ xmlrpc-c-1.20.3/src/cpp/Makefile	2009-12-05 21:25:08.455609267 +0000
-@@ -127,7 +127,7 @@
+--- xmlrpc-c/src/cpp/Makefile.orig	2013-03-03 16:31:11.000000000 +0100
++++ xmlrpc-c/src/cpp/Makefile	2013-03-03 17:46:03.132099319 +0100
+@@ -119,7 +119,7 @@
    $(LIBXMLRPC_UTIL)
  $(LIBXMLRPC_CPP_SH): LIBOBJECTS = XmlRpcCpp.osh
  $(LIBXMLRPC_CPP_SH): LIBDEP = \
@@ -134,7 +131,7 @@
    $(XML_PARSER_LIBDEP) \
    -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
  
-@@ -138,7 +138,7 @@
+@@ -130,7 +130,7 @@
    $(LIBXMLRPC_UTIL)
  $(LIBXMLRPCPP_SH): LIBOBJECTS = $(LIBXMLRPCPP_MODS:%=%.osh)
  $(LIBXMLRPCPP_SH): LIBDEP = \
@@ -142,8 +139,8 @@
 +  -Lblddir/src -lxmlrpc-c \
    $(XML_PARSER_LIBDEP) \
    -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
- 
-@@ -153,7 +153,7 @@
+ ifeq ($(MSVCRT),yes)
+@@ -147,7 +147,7 @@
  $(LIBXMLRPC_SERVERPP_SH): LIBOBJECTS = $(LIBXMLRPC_SERVERPP_MODS:%=%.osh)
  $(LIBXMLRPC_SERVERPP_SH): LIBDEP = \
    -L. -l$(LIBXMLRPCPP_NAME) \
@@ -151,8 +148,8 @@
 +  -Lblddir/src -lxmlrpc_server -lxmlrpc-c \
    $(XML_PARSER_LIBDEP) \
    -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
- 
-@@ -169,7 +169,7 @@
+ ifeq ($(MSVCRT),yes)
+@@ -166,7 +166,7 @@
  $(LIBXMLRPC_SERVER_ABYSSPP_SH): LIBOBJECTS = $(LIBXMLRPC_SERVER_ABYSSPP_MODS:%=%.osh)
  $(LIBXMLRPC_SERVER_ABYSSPP_SH): LIBDEP = \
     -L. -lxmlrpc_server++  -l$(LIBXMLRPCPP_NAME) \
@@ -161,7 +158,7 @@
     $(XML_PARSER_LIBDEP) \
     -L$(LIBXMLRPC_ABYSS_DIR) -lxmlrpc_abyss \
     -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util \
-@@ -183,7 +183,7 @@
+@@ -184,7 +184,7 @@
  $(LIBXMLRPC_SERVER_CGIPP_SH): LIBOBJECTS = $(LIBXMLRPC_SERVER_CGIPP_MODS:%=%.osh)
  $(LIBXMLRPC_SERVER_CGIPP_SH): LIBDEP = \
    -L. -lxmlrpc_server++  -l$(LIBXMLRPCPP_NAME) \
@@ -169,8 +166,8 @@
 +  -Lblddir/src -lxmlrpc_server -lxmlrpc-c \
    $(XML_PARSER_LIBDEP) \
   -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
- 
-@@ -197,7 +197,7 @@
+ ifeq ($(MSVCRT),yes)
+@@ -201,7 +201,7 @@
  $(LIBXMLRPC_SERVER_PSTREAMPP_SH): LIBOBJECTS = $(LIBXMLRPC_SERVER_PSTREAMPP_MODS:%=%.osh)
  $(LIBXMLRPC_SERVER_PSTREAMPP_SH): LIBDEP = \
    -L. -lxmlrpc_server++ -l$(LIBXMLRPCPP_NAME) -lxmlrpc_packetsocket \
@@ -179,16 +176,16 @@
    $(XML_PARSER_LIBDEP) \
    -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util \
  
-@@ -212,7 +212,7 @@
- $(LIBXMLRPC_CLIENTPP_SH): LIBOBJECTS = $(LIBXMLRPC_CLIENTPP_MODS:%=%.osh)
+@@ -222,7 +222,7 @@
  $(LIBXMLRPC_CLIENTPP_SH): LIBDEP = \
    -L. -l$(LIBXMLRPCPP_NAME) -lxmlrpc_packetsocket \
+   $(shell cat blddir/src/libxmlrpc_client.ldflags) \
 -  -Lblddir/src -lxmlrpc_client -lxmlrpc \
 +  -Lblddir/src -lxmlrpc_client -lxmlrpc-c \
    $(XML_PARSER_LIBDEP) \
    -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
- 
-@@ -223,7 +223,7 @@
+ ifeq ($(MSVCRT),yes)
+@@ -236,7 +236,7 @@
  $(LIBXMLRPC_PACKETSOCKET_SH): LIBOBJECTS = $(LIBXMLRPC_PACKETSOCKET_MODS:%=%.osh)
  $(LIBXMLRPC_PACKETSOCKET_SH): LIBDEP = \
    -L. -l$(LIBXMLRPCPP_NAME) \
@@ -196,15 +193,15 @@
 +  -Lblddir/src -lxmlrpc-c \
    $(XML_PARSER_LIBDEP) \
    -L$(LIBXMLRPC_UTIL_DIR) -lxmlrpc_util
- 
---- xmlrpc-c-1.20.3/src/xmlrpc.pc.cmake~	2009-12-05 22:00:03.000000000 +0000
-+++ xmlrpc-c-1.20.3/src/xmlrpc.pc.cmake	2009-12-05 22:00:41.931645906 +0000
+ ifeq ($(MSVCRT),yes)
+--- xmlrpc-c/src/xmlrpc.pc.cmake.orig	2013-03-03 17:06:35.285532023 +0100
++++ xmlrpc-c/src/xmlrpc.pc.cmake	2013-03-03 17:46:37.542097875 +0100
 @@ -8,5 +8,5 @@
  Version:     @XMLRPC_C_VERSION@
  
  Requires.private:	@xmlrpc_pkgconfig_req@ xmlrpc_util
--Libs:   		-L${libdir} -lxmlrpc @xmlrpc_pkgconfig_libs@
-+Libs:   		-L${libdir} -lxmlrpc-c @xmlrpc_pkgconfig_libs@
+-Libs:			-L${libdir} -lxmlrpc @xmlrpc_pkgconfig_libs@
++Libs:			-L${libdir} -lxmlrpc-c @xmlrpc_pkgconfig_libs@
  Cflags:			-I${includedir}
 --- xmlrpc-c-1.20.3/src/CMakeLists.txt	2009-12-05 22:06:26.335153315 +0000
 +++ xmlrpc-c-1.20.3/src/CMakeLists.txt	2009-12-05 22:09:49.944925301 +0000
@@ -281,3 +278,14 @@
  ensc_add_example(json               c base)
  ensc_add_example(gen_sample_add_xml c base)
  
+--- xmlrpc-c/tools/xml/CMakeLists.txt.orig	2013-03-03 17:51:15.572086205 +0100
++++ xmlrpc-c/tools/xml/CMakeLists.txt	2013-03-03 17:56:38.495405989 +0100
+@@ -5,7 +5,7 @@
+   ../lib/dumpvalue.c)
+ 
+ target_link_libraries(xmlrpc_parsecall
+-  xmlrpc
++  xmlrpc-c
+   util)
+ 
+ install(TARGETS xmlrpc_parsecall
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/xmlrpc-c.git/commitdiff/91f353187f4ecb82c41507a68c2da571aca67f21




More information about the pld-cvs-commit mailing list