diff --git a/.xmlrpc-c.metadata b/.xmlrpc-c.metadata new file mode 100644 index 0000000..aaa00db --- /dev/null +++ b/.xmlrpc-c.metadata @@ -0,0 +1 @@ +962990f129e1ab7686c984fbf53c6caf2e945324 SOURCES/xmlrpc-c-1.32.5.tar.xz diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/dfs.cc b/SOURCES/dfs.cc new file mode 100644 index 0000000..c7d9535 --- /dev/null +++ b/SOURCES/dfs.cc @@ -0,0 +1,104 @@ +/* --*- c++ -*-- + * Copyright (C) 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> + * + * 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; version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <string> +#include <list> +#include <map> +#include <iostream> + +class node { + public: + node(std::string const &name) : name_(name) {} + void add_child(class node *n) + { + children_.push_back(n); + } + + void dfs(std::list<std::string> &res); + bool visited; + + private: + std::string const name_; + std::list<class node *> children_; +}; + +void node::dfs(std::list<std::string> &res) +{ + std::list<class node *>::iterator i; + + visited = true; + + for (i = children_.begin(); i != children_.end(); ++i) { + if ((*i)->visited) + continue; + + (*i)->dfs(res); + } + + res.push_front(name_); +} + +int main(void) +{ + std::map<std::string, class node *> nodes; + + for (;;) { + std::string name; + class node *cur_node; + + std::cin >> name; + if (!std::cin.good()) + break; + + if (nodes.find(name) == nodes.end()) + nodes[name] = new node(name); + + cur_node = nodes[name]; + + while (std::cin.good()) { + std::cin >> name; + + if (name == "##") + break; + + if (nodes.find(name) == nodes.end()) + nodes[name] = new node(name); + + cur_node->add_child(nodes[name]); + } + } + + typedef std::map<std::string, class node *>::iterator node_iterator; + + for (node_iterator n = nodes.begin(); n != nodes.end(); ++n) { + for (node_iterator m = nodes.begin(); + m != nodes.end(); ++m) + m->second->visited = false; + + std::list<std::string> res(nodes.size()); + n->second->dfs(res); + + for (std::list<std::string>::const_iterator i = res.begin(); + i != res.end(); ++i) + std::cout << *i << " "; + + std::cout << std::endl; + } +} diff --git a/SOURCES/dso-fixup b/SOURCES/dso-fixup new file mode 100755 index 0000000..4045bf0 --- /dev/null +++ b/SOURCES/dso-fixup @@ -0,0 +1,57 @@ +#! /bin/bash +# Copyright (C) 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> +# +# 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; version 3 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +## Usage: dso-fixup <build-root> <libdir> <pattern> <libs>* + +BR=$1 +LIBDIR=$2 +PATTERN=$3 +shift 3 + +for i; do + echo -n $(basename "$i")' ' + readelf -d $i | sed "\\!(NEEDED).*${PATTERN}!"'s/[^:]\+: \[\(.*\)\]/\1/p;d' | xargs echo -n + echo " ##" +done | ./depsort | while read lib deps; do + link=$BR$LIBDIR/${lib%.so.*}.so + test -L "$link" || { + echo "bad file '$link'" >&2 + exit 1 + } + + set -- $deps + test $# -ne 0 || continue + + rm -f $link + + + { + echo '/* GNU ld script */' + echo -n "INPUT($LIBDIR/$lib" + d= + if test "$#" -gt 0; then + echo -n " AS_NEEDED(" + for i; do + echo -n "$d$LIBDIR/$i" + d=' ' + done + echo -n ")" + fi + echo ")" + } > "$link" + + chmod 0644 "$link" +done diff --git a/SOURCES/xmlrpc-c-30x-redirect.patch b/SOURCES/xmlrpc-c-30x-redirect.patch new file mode 100644 index 0000000..a2d4446 --- /dev/null +++ b/SOURCES/xmlrpc-c-30x-redirect.patch @@ -0,0 +1,27 @@ +From 255ebf4b1204124123971a3bb27741cccbb51692 Mon Sep 17 00:00:00 2001 +From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> +Date: Thu, 29 Jul 2010 19:25:32 +0200 +Subject: [PATCH 5/8] allow 30x redirections + +--- + lib/curl_transport/curltransaction.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/lib/curl_transport/curltransaction.c b/lib/curl_transport/curltransaction.c +index 0f76fc2..6292aee 100644 +--- a/lib/curl_transport/curltransaction.c ++++ b/lib/curl_transport/curltransaction.c +@@ -600,6 +600,10 @@ setupCurlSession(xmlrpc_env * const envP, + curl_easy_setopt(curlSessionP, CURLOPT_POST, 1); + 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, transP->postDataP, "\0", 1); + if (!envP->fault_occurred) { + curl_easy_setopt(curlSessionP, CURLOPT_POSTFIELDS, +-- +1.7.10.4 + diff --git a/SOURCES/xmlrpc-c-check-vasprintf-return-value.patch b/SOURCES/xmlrpc-c-check-vasprintf-return-value.patch new file mode 100644 index 0000000..cfc7f45 --- /dev/null +++ b/SOURCES/xmlrpc-c-check-vasprintf-return-value.patch @@ -0,0 +1,41 @@ +From 80047d74644eeda55c451aea59951eb502649cf4 Mon Sep 17 00:00:00 2001 +From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> +Date: Thu, 29 Jul 2010 19:43:08 +0200 +Subject: [PATCH 7/8] check vasprintf return value + +--- + lib/libutil/asprintf.c | 3 ++- + lib/util/casprintf.c | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/lib/libutil/asprintf.c b/lib/libutil/asprintf.c +index a79cd81..5a06f0f 100644 +--- a/lib/libutil/asprintf.c ++++ b/lib/libutil/asprintf.c +@@ -121,7 +121,8 @@ xmlrpc_vasprintf(const char ** const retvalP, + char * string; + + #if HAVE_ASPRINTF +- vasprintf(&string, fmt, varargs); ++ if (vasprintf(&string, fmt, varargs) < 0) ++ string = NULL; + #else + simpleVasprintf(&string, fmt, varargs); + #endif +diff --git a/lib/util/casprintf.c b/lib/util/casprintf.c +index 643f145..9139253 100644 +--- a/lib/util/casprintf.c ++++ b/lib/util/casprintf.c +@@ -99,7 +99,8 @@ cvasprintf(const char ** const retvalP, + char * string; + + #if HAVE_ASPRINTF +- vasprintf(&string, fmt, varargs); ++ if (vasprintf(&string, fmt, varargs) < 0) ++ string = NULL; + #else + simpleVasprintf(&string, fmt, varargs); + #endif +-- +1.7.3.4 + diff --git a/SOURCES/xmlrpc-c-cmake.patch b/SOURCES/xmlrpc-c-cmake.patch new file mode 100644 index 0000000..6d544fb --- /dev/null +++ b/SOURCES/xmlrpc-c-cmake.patch @@ -0,0 +1,2128 @@ +From 26a4d5168bb69474c3cc304f90592d37bf0be8fe Mon Sep 17 00:00:00 2001 +From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> +Date: Sat, 5 Apr 2008 10:55:02 +0200 +Subject: [PATCH 1/8] make -> cmake transition + +cmake: updated +--- + CMakeLists.txt | 290 +++++++++++++++++++++++++++ + cmake/try-attr.cc | 3 + + cmake/va-list-is-array.c | 9 + + 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 | 34 ++++ + lib/CMakeLists.txt | 12 ++ + lib/abyss/CMakeLists.txt | 3 + + 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 + + lib/expat/gennmtab/CMakeLists.txt | 3 + + lib/expat/xmlparse/CMakeLists.txt | 7 + + lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake | 12 ++ + lib/expat/xmltok/CMakeLists.txt | 23 +++ + lib/expat/xmltok/xmlrpc_xmltok.pc.cmake | 9 + + lib/libutil/CMakeLists.txt | 26 +++ + lib/libutil/xmlrpc_util.pc.cmake | 10 + + lib/libwww_transport/CMakeLists.txt | 7 + + lib/util/CMakeLists.txt | 17 ++ + lib/wininet_transport/CMakeLists.txt | 7 + + src/CMakeLists.txt | 121 +++++++++++ + src/cpp/CMakeLists.txt | 70 +++++++ + src/cpp/test/CMakeLists.txt | 18 ++ + src/cpp/xmlrpc++.pc.cmake | 12 ++ + src/cpp/xmlrpc_client++.pc.cmake | 12 ++ + src/cpp/xmlrpc_cpp.pc.cmake | 12 ++ + src/cpp/xmlrpc_packetsocket.pc.cmake | 12 ++ + src/cpp/xmlrpc_server++.pc.cmake | 12 ++ + 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/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 ++ + 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 ++ + tools/xmlrpc_pstream/CMakeLists.txt | 16 ++ + tools/xmlrpc_transport/CMakeLists.txt | 9 + + tools/xmlrpc_transport/config.h | 1 + + transport_config.h.cmake | 16 ++ + version.h.cmake | 5 + + xmlrpc-c-config | 105 ++++++++++ + 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 + create mode 100644 examples/CMakeLists.txt + create mode 100644 examples/config.h + create mode 100644 examples/cpp/CMakeLists.txt + create mode 100644 include/CMakeLists.txt + create mode 100644 include/xmlrpc-c/CMakeLists.txt + create mode 100644 include/xmlrpc-c/config.h.cmake + create mode 100644 lib/CMakeLists.txt + create mode 100644 lib/abyss/CMakeLists.txt + create mode 100644 lib/abyss/src/CMakeLists.txt + create mode 100644 lib/abyss/src/xmlrpc_abyss.pc.cmake + create mode 100644 lib/curl_transport/CMakeLists.txt + create mode 100644 lib/expat/CMakeLists.txt + create mode 100644 lib/expat/gennmtab/CMakeLists.txt + create mode 100644 lib/expat/xmlparse/CMakeLists.txt + create mode 100644 lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake + create mode 100644 lib/expat/xmltok/CMakeLists.txt + create mode 100644 lib/expat/xmltok/xmlrpc_xmltok.pc.cmake + create mode 100644 lib/libutil/CMakeLists.txt + create mode 100644 lib/libutil/xmlrpc_util.pc.cmake + create mode 100644 lib/libwww_transport/CMakeLists.txt + create mode 100644 lib/util/CMakeLists.txt + create mode 100644 lib/wininet_transport/CMakeLists.txt + create mode 100644 src/CMakeLists.txt + create mode 100644 src/cpp/CMakeLists.txt + create mode 100644 src/cpp/test/CMakeLists.txt + create mode 100644 src/cpp/xmlrpc++.pc.cmake + create mode 100644 src/cpp/xmlrpc_client++.pc.cmake + create mode 100644 src/cpp/xmlrpc_cpp.pc.cmake + create mode 100644 src/cpp/xmlrpc_packetsocket.pc.cmake + create mode 100644 src/cpp/xmlrpc_server++.pc.cmake + 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/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 + create mode 100644 tools/xmlrpc_pstream/CMakeLists.txt + create mode 100644 tools/xmlrpc_transport/CMakeLists.txt + create mode 100644 tools/xmlrpc_transport/config.h + create mode 100644 transport_config.h.cmake + create mode 100644 version.h.cmake + create mode 100755 xmlrpc-c-config + create mode 100644 xmlrpc_config.h.cmake + +diff --git a/CMakeLists.txt b/CMakeLists.txt +new file mode 100644 +index 0000000..2876dea +--- /dev/null ++++ b/CMakeLists.txt +@@ -0,0 +1,290 @@ ++## -*- cmake -*- ++project(xmlrpc-c) ++include(FindPkgConfig) ++include(CheckIncludeFile) ++include(CheckFunctionExists) ++ ++cmake_minimum_required(VERSION 2.4) ++ ++if(COMMAND cmake_policy) ++ cmake_policy(SET CMP0003 NEW) ++endif() ++ ++ ++set(XMLRPC_C_VERSION_MAJOR "1" CACHE STRING "Version (major) 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}" ++ CACHE STRING "Version of xmlrpc-c") ++ ++set(XMLRPC_C_LIBVERSION "3.${XMLRPC_C_VERSION_MINOR}") ++set(XMLRPC_C_SOVERSION "3") ++ ++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}") ++string(REGEX REPLACE "^0+(.)" "\\1" XMLRPC_C_VERSION_POINT_NUM "${XMLRPC_C_VERSION_POINT}") ++ ++ ++macro(ensc_set_bool NAME VALUE DESC) ++ set(${NAME} ${VALUE} CACHE BOOL ${DESC}) ++ if(${NAME}) ++ set(_${NAME} 1) ++ else(${NAME}) ++ set(_${NAME} 0) ++ endif(${NAME}) ++endmacro(ensc_set_bool) ++ ++macro(ensc_pkgconfig COMP) ++ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${COMP}.pc.cmake ++ ${CMAKE_CURRENT_BINARY_DIR}/${COMP}.pc ++ @ONLY) ++ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${COMP}.pc ++ DESTINATION ${pkgconfdir}) ++endmacro(ensc_pkgconfig) ++ ++macro(ensc_pkgconfig_lib TARGET LIBS) ++ get_target_property(libtype ${TARGET} TYPE) ++ if("${libtype}" STREQUAL "STATIC_LIBRARY") ++ list(APPEND ${TARGET}_pkgconfig_libs "${LIBS}") ++ endif("${libtype}" STREQUAL "STATIC_LIBRARY") ++endmacro(ensc_pkgconfig_lib) ++ ++macro(ensc_set_link_exe_flags) ++ ## HACK: libwww has broken inter-lib dependencies and '-Wl,--as-needed' fails with it ++ if(NOT MUST_BUILD_LIBWWW_CLIENT) ++ set_target_properties(${ARGV} ++ PROPERTIES ++ LINK_FLAGS ${XMLRPC_LINKER_FLAGS}) ++ endif(NOT MUST_BUILD_LIBWWW_CLIENT) ++endmacro(ensc_set_link_exe_flags) ++ ++########### ++if(WIN32) ++ find_program(WININET_CONFIG_EXECUTABLE wininet-config) ++ ++ if(DEFINED MUST_BUILD_WININET_CLIENT) ++ set(tmp ${MUST_BUILD_WININET_CLIENT}) ++ else(DEFINED MUST_BUILD_WININET_CLIENT) ++ if(WININET_CONFIG_EXECUTABLE) ++ set(tmp 1) ++ else(WININET_CONFIG_EXECUTABLE) ++ set(tmp 0) ++ endif(WININET_CONFIG_EXECUTABLE) ++ endif(DEFINED MUST_BUILD_WININET_CLIENT) ++ ++ set(MSVCRT yes) ++else(WIN32) ++ set(tmp 0) ++endif(WIN32) ++ ++if(tmp) ++ set(MUST_BUILD_CLIENT 1) ++ exec_program(${WININET_CONFIG_EXECUTABLE} ARGS --version OUTPUT_VARIABLE WININET_VERSION) ++ exec_program(${WININET_CONFIG_EXECUTABLE} ARGS --cflags OUTPUT_VARIABLE WININET_CFLAGS) ++ exec_program(${WININET_CONFIG_EXECUTABLE} ARGS --libs OUTPUT_VARIABLE WININET_LDADD) ++ message(STATUS "Using WinInet ${WININET_VERSION} transport") ++endif(tmp) ++ ++ensc_set_bool(MUST_BUILD_WININET_CLIENT ${tmp} "Set iff WinInet client transport shall be built") ++set(wininet_srcdir ${xmlrpc-c_SOURCE_DIR}/lib/wininet_transport) ++ ++########### ++if(DEFINED MUST_BUILD_CURL_CLIENT) ++ set(tmp REQUIRED) ++else(DEFINED MUST_BUILD_CURL_CLIENT) ++ set(tmp) ++endif(DEFINED MUST_BUILD_CURL_CLIENT) ++ ++pkg_check_modules(CURL ${tmp} libcurl) ++ ++ensc_set_bool(MUST_BUILD_CURL_CLIENT ${CURL_FOUND} "Set iff Curl client transport shall be built") ++set(curl_srcdir ${xmlrpc-c_SOURCE_DIR}/lib/curl_transport) ++ ++if(MUST_BUILD_CURL_CLIENT) ++ set(MUST_BUILD_CLIENT 1) ++endif(MUST_BUILD_CURL_CLIENT) ++ ++########### ++find_program(LIBWWW_CONFIG_EXECUTABLE libwww-config) ++if(DEFINED MUST_BUILD_LIBWWW_CLIENT) ++ set(tmp ${MUST_BUILD_LIBWWW_CLIENT}) ++else(DEFINED MUST_BUILD_LIBWWW_CLIENT) ++ if(LIBWWW_CONFIG_EXECUTABLE) ++ set(tmp 1) ++ else(LIBWWW_CONFIG_EXECUTABLE) ++ set(tmp 0) ++ endif(LIBWWW_CONFIG_EXECUTABLE) ++endif(DEFINED MUST_BUILD_LIBWWW_CLIENT) ++ ++if(tmp) ++ set(MUST_BUILD_CLIENT 1) ++ exec_program(${LIBWWW_CONFIG_EXECUTABLE} ARGS --version OUTPUT_VARIABLE LIBWWW_VERSION) ++ exec_program(${LIBWWW_CONFIG_EXECUTABLE} ARGS --libs OUTPUT_VARIABLE LIBWWW_LIBS) ++ exec_program(${LIBWWW_CONFIG_EXECUTABLE} ARGS --cflags OUTPUT_VARIABLE LIBWWW_CFLAGS) ++ message(STATUS "Using libwww ${LIBWWW_VERSION} transport") ++endif(tmp) ++ensc_set_bool(MUST_BUILD_LIBWWW_CLIENT ${tmp} "Set iff LibWWW client transport shall be built") ++set(libwww_srcdir ${xmlrpc-c_SOURCE_DIR}/lib/libwww_transport) ++ ++############ ++ ++set(ENABLE_CGI_SERVER 1 CACHE BOOL "Set iff CGI server shall be enabled") ++set(ENABLE_CPLUSPLUS 1 CACHE BOOL "Set iff C++ part shall be enabled") ++set(ENABLE_ABYSS_SERVER 1 CACHE BOOL "Set iff Abyss server shall be enabled") ++set(ENABLE_LIBXML2_BACKEND 1 CACHE BOOL "Set iff libxml2 backend shall be used") ++set(ENABLE_ABYSS_SERVER 1 CACHE BOOL "Set iff abyss server shall be enabled") ++set(ENABLE_ABYSS_THREADS 1 CACHE BOOL "Use pthread") ++ ++if(ENABLE_LIBXML2_BACKEND) ++ pkg_check_modules(LIBXML2 libxml-2.0) ++ ++ if(LIBXML2_FOUND) ++ set(libxml_pkgconfig libxml-2.0) # TODO: add more alternative modules ++ endif(LIBXML2_FOUND) ++endif(ENABLE_LIBXML2_BACKEND) ++ ++########### ++ ++pkg_check_modules(NCURSES ncurses) ++find_library(READLINE readline) ++ ++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 ++check_include_file(wchar.h _have_wchar_h) ++if(_have_wchar_h) ++ set(HAVE_WCHAR_H 1) ++else(_have_wchar_h) ++ set(HAVE_WCHAR_H 1) ++endif(_have_wchar_h) ++set(XMLRPC_HAVE_WCHAR ${HAVE_WCHAR_H}) ++set(HAVE_WCHAR_H_DEFINE ${HAVE_WCHAR_H}) ++ ++ ++####### ++set(LINKER_AS_NEEDED 1 CACHE BOOL "Use the --as-needed linker option") ++if(LINKER_AS_NEEDED) ++ set(XMLRPC_LINKER_FLAGS "-Wl,--as-needed") ++endif(LINKER_AS_NEEDED) ++ ++ ++try_compile(HAVE_ATTR_UNUSED ++ ${CMAKE_BINARY_DIR}/ ++ ${xmlrpc-c_SOURCE_DIR}/cmake/try-attr.cc ++ CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=-DCMAKE_TEST_ATTR=__unused__) ++ ++try_compile(VA_LIST_IS_NOT_ARRAY ++ ${CMAKE_BINARY_DIR}/ ++ ${xmlrpc-c_SOURCE_DIR}/cmake/va-list-is-array.c) ++ ++if(VA_LIST_IS_NOT_ARRAY) ++ set(VA_LIST_IS_ARRAY 0) ++ message(STATUS "va_list is not an array") ++else(VA_LIST_IS_NOT_ARRAY) ++ set(VA_LIST_IS_ARRAY 1) ++ message(STATUS "va_list is an array") ++endif(VA_LIST_IS_NOT_ARRAY) ++ ++ ++if(HAVE_ATTR_UNUSED) ++ set(ATTR_UNUSED "__attribute__((__unused__))") ++endif(HAVE_ATTR_UNUSED) ++ ++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) ++check_include_file(sys/ioctl.h HAVE_SYS_IOCTL_H) ++check_include_file(sys/select.h HAVE_SYS_SELECT_H) ++check_function_exists(setenv HAVE_SETENV) ++check_function_exists(strcasecmp HAVE_STRCASECMP) ++check_function_exists(_stricmp HAVE__STRICMP) ++check_function_exists(stricmp HAVE_STRICMP) ++check_function_exists(strtoll HAVE_STRTOLL) ++check_function_exists(__strtoll HAVE___STRTOLL) ++check_function_exists(strtoull HAVE_STRTOULL) ++check_function_exists(__strtoull HAVE___STRTOULL) ++check_function_exists(strtoq HAVE_STRTOQ) ++check_function_exists(strtouq HAVE_STRTOUQ) ++check_function_exists(gettimeofday HAVE_GETTIMEOFDAY) ++check_function_exists(setgroups HAVE_SETGROUPS) ++check_function_exists(asprintf HAVE_ASPRINTF) ++check_function_exists(pselect HAVE_PSELECT) ++check_function_exists(wcsncmp HAVE_WCSNCMP) ++check_function_exists(localtime_r HAVE_LOCALTIME_R) ++check_function_exists(gmtime_r HAVE_GMTIME_R) ++ ++ ++configure_file(${xmlrpc-c_SOURCE_DIR}/xmlrpc_config.h.cmake ++ ${xmlrpc-c_BINARY_DIR}/xmlrpc_config.h ++ ESCAPE_QUOTES @ONLY) ++ ++configure_file(${xmlrpc-c_SOURCE_DIR}/version.h.cmake ++ ${xmlrpc-c_BINARY_DIR}/version.h ++ ESCAPE_QUOTES @ONLY) ++ ++configure_file(${xmlrpc-c_SOURCE_DIR}/transport_config.h.cmake ++ ${xmlrpc-c_BINARY_DIR}/transport_config.h ++ ESCAPE_QUOTES @ONLY) ++ ++configure_file(${xmlrpc-c_SOURCE_DIR}/include/xmlrpc-c/config.h.cmake ++ ${xmlrpc-c_BINARY_DIR}/include/xmlrpc-c/config.h ++ ESCAPE_QUOTES @ONLY) ++ ++ ++include_directories(${xmlrpc-c_SOURCE_DIR}/include) ++include_directories(${xmlrpc-c_BINARY_DIR}/include) ++include_directories(${xmlrpc-c_SOURCE_DIR}/lib/util/include) ++include_directories(${xmlrpc-c_BINARY_DIR}) ++ ++add_custom_target(dist ++ rm -rf _dist && mkdir -p _dist/xmlrpc-c-${XMLRPC_C_VERSION} ++ COMMAND cp -a ${xmlrpc-c_SOURCE_DIR}/* _dist/xmlrpc-c-${XMLRPC_C_VERSION}/ ++ COMMAND cd _dist && tar cjf ../xmlrpc-c-${XMLRPC_C_VERSION}.tar.bz2 xmlrpc-c-${XMLRPC_C_VERSION} --exclude=.git --exclude=CVS --exclude=.svn ++ ) ++ ++set(_lib lib CACHE STRING "Basename of the library-directory; usually 'lib' or 'lib64' (on multilib archs)") ++set(_bin bin CACHE STRING "Basename of the bin-directory; usually 'bin'") ++set(prefix ${CMAKE_INSTALL_PREFIX}) ++set(libdir "${prefix}/${_lib}") ++set(bindir "${prefix}/${_bin}") ++set(mandir "${prefix}/share/man") ++set(pkgconfdir "${libdir}/pkgconfig") ++set(includedir "${prefix}/include") ++ ++############# ++ ++install(PROGRAMS xmlrpc-c-config DESTINATION ${_bin}) ++ ++enable_testing() ++ ++add_subdirectory(test) ++add_subdirectory(lib) ++add_subdirectory(examples) ++add_subdirectory(include) ++add_subdirectory(src) ++ ++if (BUILD_TOOLS) ++ add_subdirectory(tools) ++endif() +diff --git a/cmake/try-attr.cc b/cmake/try-attr.cc +new file mode 100644 +index 0000000..4668c5b +--- /dev/null ++++ b/cmake/try-attr.cc +@@ -0,0 +1,3 @@ ++int x __attribute__((CMAKE_TEST_ATTR)); ++ ++int main() {} +diff --git a/cmake/va-list-is-array.c b/cmake/va-list-is-array.c +new file mode 100644 +index 0000000..1ad0bab +--- /dev/null ++++ b/cmake/va-list-is-array.c +@@ -0,0 +1,9 @@ ++#include <stdarg.h> ++ ++void foo() ++{ ++ va_list list1, list2; ++ list1 = list2; ++} ++ ++int main() {} +diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt +new file mode 100644 +index 0000000..1535adf +--- /dev/null ++++ b/examples/CMakeLists.txt +@@ -0,0 +1,68 @@ ++# -*- cmake -*- ++ ++include_directories(${CMAKE_CURRENT_BINARY_DIR}) ++ ++macro(ensc_add_example name ext class) ++ # HACK: avoid name collision of c and c++ program ++ if("${ext}" STREQUAL "cpp") ++ set(_target ${name}++) ++ else("${ext}" STREQUAL "cpp") ++ set(_target ${name}) ++ endif("${ext}" STREQUAL "cpp") ++ ++ add_executable(${_target} ${name}.${ext}) ++ target_link_libraries(${_target} ${${class}_LIBS}) ++ list(APPEND ${class}_TARGETS ${_target}) ++ list(APPEND example_TARGETS ${_target}) ++endmacro(ensc_add_example) ++ ++if(ENABLE_CPLUSPLUS) ++ add_subdirectory(cpp) ++endif(ENABLE_CPLUSPLUS) ++ ++ ++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) ++ ++ ensc_add_example(auth_client c client) ++ ensc_add_example(compound_value_client c client) ++ ensc_add_example(synch_client c client) ++ ensc_add_example(xmlrpc_sample_add_client c client) ++ ensc_add_example(xmlrpc_asynch_client c client) ++endif(MUST_BUILD_CLIENT) ++ ++if(MUST_BUILD_CURL_CLIENT) ++ set(client_LIBS xmlrpc_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) ++ set(cgi_server_LIBS xmlrpc_server_cgi) ++ ++ ensc_add_example(xmlrpc_sample_add_server_cgi c cgi_server) ++endif(ENABLE_CGI_SERVER) ++ ++if(ENABLE_ABYSS_SERVER) ++ set(abyss_server_LIBS xmlrpc_server_abyss) ++ ++ ensc_add_example(compound_value_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}) +diff --git a/examples/config.h b/examples/config.h +new file mode 100644 +index 0000000..31d5f9b +--- /dev/null ++++ b/examples/config.h +@@ -0,0 +1 @@ ++#include "../xmlrpc_config.h" +diff --git a/examples/cpp/CMakeLists.txt b/examples/cpp/CMakeLists.txt +new file mode 100644 +index 0000000..093a75d +--- /dev/null ++++ b/examples/cpp/CMakeLists.txt +@@ -0,0 +1,34 @@ ++# -*- cmake -*- ++ ++if(ENABLE_ABYSS_SERVER) ++ set(abyss_serverxx_LIBS xmlrpc_server_abyss++) ++ ++ ensc_add_example(xmlrpc_inetd_server cpp abyss_serverxx) ++ ensc_add_example(xmlrpc_loop_server cpp abyss_serverxx) ++ ensc_add_example(xmlrpc_sample_add_server cpp abyss_serverxx) ++ ensc_add_example(callinfo_abyss_server cpp abyss_serverxx) ++endif(ENABLE_ABYSS_SERVER) ++ ++if (ENABLE_CGI_SERVER) ++ set(cgi_serverxx_LIBS xmlrpc_server_cgi++) ++ ++ ensc_add_example(xmlrpc_sample_add_server_cgi cpp cgi_serverxx) ++endif(ENABLE_CGI_SERVER) ++ ++if(MUST_BUILD_CLIENT) ++ set(abyss_clientxx_LIBS xmlrpc_client++) ++ ++ ensc_add_example(xmlrpc_sample_add_client cpp abyss_clientxx) ++ ensc_add_example(sample_add_client_complex cpp abyss_clientxx) ++ ensc_add_example(asynch_client cpp abyss_clientxx) ++ ++ ensc_add_example(pstream_client cpp abyss_clientxx) ++endif(MUST_BUILD_CLIENT) ++ ++set(pstream_serverxx_LIBS xmlrpc_server_pstream++) ++ensc_add_example(pstream_inetd_server cpp pstream_serverxx) ++ensc_add_example(pstream_serial_server cpp pstream_serverxx) ++ ++ ++ ++ensc_set_link_exe_flags(${example_TARGETS}) +diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt +new file mode 100644 +index 0000000..ebfdba5 +--- /dev/null ++++ b/include/CMakeLists.txt +@@ -0,0 +1,3 @@ ++# -*- cmake -*- ++ ++add_subdirectory(xmlrpc-c) +diff --git a/include/xmlrpc-c/CMakeLists.txt b/include/xmlrpc-c/CMakeLists.txt +new file mode 100644 +index 0000000..b9386b8 +--- /dev/null ++++ b/include/xmlrpc-c/CMakeLists.txt +@@ -0,0 +1,74 @@ ++# -*- cmake -*- ++ ++macro(ensc_install_symlink src dst) ++ install(CODE "EXECUTE_PROCESS(COMMAND ln -s xmlrpc-c/${src} \$ENV{DESTDIR}${includedir}/${dst})") ++endmacro(ensc_install_symlink) ++ ++list(APPEND headers ++ ${CMAKE_CURRENT_BINARY_DIR}/config.h ++ inttypes.h ++ c_util.h ++ util.h ++ base.h ++ json.h ++ abyss.h ++ abyss_unixsock.h ++ abyss_winsock.h ++ server.h ++ server_abyss.h ++ server_w32httpsys.h ++ oldxmlrpc.h) ++ ++list(APPEND compat_links "oldxmlrpc.h xmlrpc.h") ++list(APPEND compat_links "server.h xmlrpc_server.h") ++list(APPEND compat_links "server_abyss.h xmlrpc_abyss.h") ++list(APPEND compat_links "server_w32httpsys.h xmlrpc_server_w32httpsys.h") ++ ++ ++if(ENABLE_CPLUSPLUS) ++ list(APPEND headers ++ oldcppwrapper.hpp ++ girerr.hpp ++ girmem.hpp ++ base.hpp ++ timeout.hpp ++ xml.hpp ++ registry.hpp ++ server_abyss.hpp ++ packetsocket.hpp ++ server_pstream.hpp) ++ ++ list(APPEND compat_links "oldcppwrapper.hpp XmlRpcCpp.h") ++endif(ENABLE_CPLUSPLUS) ++ ++if(MUST_BUILD_CLIENT) ++ list(APPEND headers ++ client.h ++ transport.h ++ client_global.h) ++ ++ list(APPEND compat_links "client.h xmlrpc_client.h") ++ ++ if(ENABLE_CPLUSPLUS) ++ list(APPEND headers ++ client.hpp ++ client_transport.hpp ++ client_simple.hpp) ++ endif(ENABLE_CPLUSPLUS) ++endif(MUST_BUILD_CLIENT) ++ ++if(ENABLE_CGI_SERVER) ++ list(APPEND headers ++ server_cgi.h) ++ ++ list(APPEND compat_links "server_cgi.h xmlrpc_cgi.h") ++endif(ENABLE_CGI_SERVER) ++ ++install(FILES ++ ${headers} ++ DESTINATION ${includedir}/xmlrpc-c) ++ ++foreach (ln ${compat_links}) ++ separate_arguments(ln) ++ ensc_install_symlink(${ln}) ++endforeach(ln) +diff --git a/include/xmlrpc-c/config.h.cmake b/include/xmlrpc-c/config.h.cmake +new file mode 100644 +index 0000000..48f64be +--- /dev/null ++++ b/include/xmlrpc-c/config.h.cmake +@@ -0,0 +1,34 @@ ++/* --*- c -*-- */ ++#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@ ++#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 ++ #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 +diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt +new file mode 100644 +index 0000000..7f8f912 +--- /dev/null ++++ b/lib/CMakeLists.txt +@@ -0,0 +1,12 @@ ++## -*- cmake -*- ++ ++add_subdirectory(abyss) ++add_subdirectory(libutil) ++add_subdirectory(util) ++add_subdirectory(curl_transport) ++add_subdirectory(libwww_transport) ++add_subdirectory(wininet_transport) ++ ++if(NOT ENABLE_LIBXML2_BACKEND) ++ add_subdirectory(expat) ++endif(NOT ENABLE_LIBXML2_BACKEND) +diff --git a/lib/abyss/CMakeLists.txt b/lib/abyss/CMakeLists.txt +new file mode 100644 +index 0000000..2358061 +--- /dev/null ++++ b/lib/abyss/CMakeLists.txt +@@ -0,0 +1,3 @@ ++## -*- cmake -*- ++ ++SUBDIRS(src) +diff --git a/lib/abyss/src/CMakeLists.txt b/lib/abyss/src/CMakeLists.txt +new file mode 100644 +index 0000000..b1813bb +--- /dev/null ++++ b/lib/abyss/src/CMakeLists.txt +@@ -0,0 +1,70 @@ ++## -*- cmake -*- ++ ++set(xmlrpc_abyss_SOURCES ++ abyss_info.h ++ channel.c ++ channel.h ++ chanswitch.c ++ chanswitch.h ++ conf.c ++ conn.c ++ conn.h ++ data.c ++ data.h ++ date.c ++ date.h ++ file.c ++ file.h ++ handler.c ++ handler.h ++ http.c ++ http.h ++ init.c ++ response.c ++ server.c ++ server.h ++ session.c ++ session.h ++ socket.c ++ socket.h ++ thread.h ++ token.c ++ token.h ++ trace.c ++ trace.h) ++ ++add_definitions(-D_UNIX) ++ ++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 ${THREAD_LIBS}) ++ ensc_pkgconfig_lib(xmlrpc_abyss "${THREAD_LIBS_PKGCONFIG}") ++endif(ENABLE_ABYSS_THREADS) ++ ++install(TARGETS xmlrpc_abyss ++ RUNTIME DESTINATION ${_bin} ++ LIBRARY DESTINATION ${_lib} ++ ARCHIVE DESTINATION ${_lib}) ++ ++set_target_properties(xmlrpc_abyss ++ PROPERTIES ++ LINK_FLAGS ${XMLRPC_LINKER_FLAGS} ++ VERSION ${XMLRPC_C_LIBVERSION} ++ SOVERSION ${XMLRPC_C_SOVERSION}) ++ ++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..b0dbcc9 +--- /dev/null ++++ b/lib/abyss/src/xmlrpc_abyss.pc.cmake +@@ -0,0 +1,12 @@ ++bindir=@bindir@ ++prefix=@prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++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@ ++Cflags: +diff --git a/lib/curl_transport/CMakeLists.txt b/lib/curl_transport/CMakeLists.txt +new file mode 100644 +index 0000000..4224a13 +--- /dev/null ++++ b/lib/curl_transport/CMakeLists.txt +@@ -0,0 +1,20 @@ ++# -*- cmake -*- ++ ++if(MUST_BUILD_CURL_CLIENT) ++ list(APPEND transport_SOURCES ++ ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_curl_transport.c ++ ++ ${CMAKE_CURRENT_SOURCE_DIR}/curltransaction.c ++ ${CMAKE_CURRENT_SOURCE_DIR}/curltransaction.h ++ ++ ${CMAKE_CURRENT_SOURCE_DIR}/curlmulti.c ++ ${CMAKE_CURRENT_SOURCE_DIR}/curlmulti.h ++ ++ ${CMAKE_CURRENT_SOURCE_DIR}/lock.h ++ ++ ${CMAKE_CURRENT_SOURCE_DIR}/lock_pthread.c ++ ${CMAKE_CURRENT_SOURCE_DIR}/lock_pthread.h ++ ++ ${CMAKE_CURRENT_SOURCE_DIR}/curlversion.h ++ ) ++endif(MUST_BUILD_CURL_CLIENT) +diff --git a/lib/expat/CMakeLists.txt b/lib/expat/CMakeLists.txt +new file mode 100644 +index 0000000..7397f52 +--- /dev/null ++++ b/lib/expat/CMakeLists.txt +@@ -0,0 +1,9 @@ ++# -*- cmake -*- ++ ++ ++INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/xmltok) ++ ++add_subdirectory(gennmtab) ++add_subdirectory(xmlparse) ++add_subdirectory(xmltok) ++add_subdirectory(xmlwf) +diff --git a/lib/expat/gennmtab/CMakeLists.txt b/lib/expat/gennmtab/CMakeLists.txt +new file mode 100644 +index 0000000..48a44da +--- /dev/null ++++ b/lib/expat/gennmtab/CMakeLists.txt +@@ -0,0 +1,3 @@ ++# -*- cmake -*- ++ ++ADD_EXECUTABLE(gennmtab gennmtab.c) +diff --git a/lib/expat/xmlparse/CMakeLists.txt b/lib/expat/xmlparse/CMakeLists.txt +new file mode 100644 +index 0000000..f87008a +--- /dev/null ++++ b/lib/expat/xmlparse/CMakeLists.txt +@@ -0,0 +1,7 @@ ++# -*- cmake -*- ++ ++add_library(xmlrpc_xmlparse STATIC ++ xmlparse.c) ++target_link_libraries(xmlrpc_xmlparse xmlrpc_xmltok) ++ ++ensc_pkgconfig(xmlrpc_xmlparse) +diff --git a/lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake b/lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake +new file mode 100644 +index 0000000..5b2a7e4 +--- /dev/null ++++ b/lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake +@@ -0,0 +1,12 @@ ++bindir=@bindir@ ++prefix=@prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++Name: xmlrpc_xmlparse ++Description: XMLRPC xmlparse library ++Version: @XMLRPC_C_VERSION@ ++ ++Requires.private: xmlrpc_xmltok ++Libs: -L${libdir} -lxmlrpc_xmlparse ++Cflags: +diff --git a/lib/expat/xmltok/CMakeLists.txt b/lib/expat/xmltok/CMakeLists.txt +new file mode 100644 +index 0000000..42406fb +--- /dev/null ++++ b/lib/expat/xmltok/CMakeLists.txt +@@ -0,0 +1,23 @@ ++# -*- cmake -*- ++ ++include_directories(${CMAKE_CURRENT_BINARY_DIR}) ++ ++add_definitions(-DXML_BYTE_ORDER=0) ++ ++add_library(xmlrpc_xmltok STATIC ++ xmltok.c xmlrole.c xmltok_impl.c ++ ${CMAKE_CURRENT_BINARY_DIR}/nametab.h) ++ ++set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/nametab.h ++ PROPERTIES ++ OBJECT_DEPENDS gennmtab ++ GENERATED true) ++ ++ ++get_target_property(GENNMTAB_EXECUTABLE gennmtab LOCATION) ++add_custom_command( ++ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/nametab.h ++ COMMAND ${GENNMTAB_EXECUTABLE} >nametab.h || { rm -f nametab.h\; false\; } ++ DEPENDS gennmtab) ++ ++ensc_pkgconfig(xmlrpc_xmltok) +diff --git a/lib/expat/xmltok/xmlrpc_xmltok.pc.cmake b/lib/expat/xmltok/xmlrpc_xmltok.pc.cmake +new file mode 100644 +index 0000000..88e7ad8 +--- /dev/null ++++ b/lib/expat/xmltok/xmlrpc_xmltok.pc.cmake +@@ -0,0 +1,9 @@ ++prefix=@prefix@ ++libdir=@libdir@ ++ ++Name: xmlrpc_xmltok ++Description: XMLRPC xmltok library ++Version: @XMLRPC_C_VERSION@ ++ ++Libs: -L${libdir} ++Cflags: +diff --git a/lib/libutil/CMakeLists.txt b/lib/libutil/CMakeLists.txt +new file mode 100644 +index 0000000..25ba487 +--- /dev/null ++++ b/lib/libutil/CMakeLists.txt +@@ -0,0 +1,26 @@ ++# -*- cmake -*- ++ ++add_library(xmlrpc_util SHARED ++ asprintf.c ++ base64.c ++ error.c ++ make_printable.c ++ memblock.c ++ select.c ++ sleep.c ++ string_number.c ++ time.c ++ utf8.c) ++ ++set_target_properties(xmlrpc_util ++ PROPERTIES ++ LINK_FLAGS ${XMLRPC_LINKER_FLAGS} ++ VERSION ${XMLRPC_C_LIBVERSION} ++ SOVERSION ${XMLRPC_C_SOVERSION}) ++ ++install(TARGETS xmlrpc_util ++ RUNTIME DESTINATION ${_bin} ++ LIBRARY DESTINATION ${_lib} ++ ARCHIVE DESTINATION ${_lib}) ++ ++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..d4e01bf +--- /dev/null ++++ b/lib/libutil/xmlrpc_util.pc.cmake +@@ -0,0 +1,10 @@ ++prefix=@prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++Name: xmlrpc_util ++Description: XMLRPC utility library ++Version: @XMLRPC_C_VERSION@ ++ ++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,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.h) ++endif(MUST_BUILD_LIBWWW_CLIENT) +diff --git a/lib/util/CMakeLists.txt b/lib/util/CMakeLists.txt +new file mode 100644 +index 0000000..80696d9 +--- /dev/null ++++ b/lib/util/CMakeLists.txt +@@ -0,0 +1,17 @@ ++## -*- cmake -*- ++ ++set(util_SOURCES ++ casprintf.c ++ cmdline_parser.c ++ cmdline_parser_cpp.cpp ++ getoptx.c ++ getoptx.h ++ stripcaseeq.c ++ string_parser.c ++) ++ ++if(WIN32) ++ list(APPEND util_SOURCES pthreadx_win32.c) ++endif(WIN32) ++ ++add_library(util STATIC ${util_SOURCES}) +diff --git a/lib/wininet_transport/CMakeLists.txt b/lib/wininet_transport/CMakeLists.txt +new file mode 100644 +index 0000000..17535ab +--- /dev/null ++++ b/lib/wininet_transport/CMakeLists.txt +@@ -0,0 +1,7 @@ ++# -*- cmake -*- ++ ++if(MUST_BUILD_WININET_CLIENT) ++ list(APPEND transport_SOURCES ++ ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_wininet_transport.c ++ ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_wininet_transport.h) ++endif(MUST_BUILD_WININET_CLIENT) +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +new file mode 100644 +index 0000000..f51e15b +--- /dev/null ++++ b/src/CMakeLists.txt +@@ -0,0 +1,121 @@ ++# -*- cmake -*- ++ ++if(ENABLE_LIBXML2_BACKEND) ++ set(xmlrpc_xml_parser xmlrpc_libxml2.c) ++ set(libxml_INCLUDES ${LIBXML2_CFLAGS}) ++ set(libxml_LIBS ${LIBXML2_LDFLAGS}) ++ set(xmlrpc_pkgconfig_req ${libxml_pkgconfig}) ++else(ENABLE_LIBXML2_BACKEND) ++ set(xmlrpc_xml_parser xmlrpc_expat.c) ++ set(libxml_INCLUDES -I${xmlrpc-c_SOURCE_DIR}/lib/expat/xmlparse) ++ set(libxml_LIBS xmlrpc_xmlparse) ++ set(xmlrpc_pkgconfig_req xmlrpc_xmlparse) ++endif(ENABLE_LIBXML2_BACKEND) ++ ++if(MUST_BUILD_WININET_CLIENT) ++ set(client_wininet_CFLAGS "") ++ set(client_wininet_LIBS "${WININET_LDADD}" pthread) ++ list(APPEND transport_SOURCES ++ ${wininet_srcdir}/xmlrpc_wininet_transport.c ${wininet_srcdir}/xmlrpc_wininet_transport.h) ++endif(MUST_BUILD_WININET_CLIENT) ++ ++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) ++endif(MUST_BUILD_LIBWWW_CLIENT) ++ ++if(MUST_BUILD_CURL_CLIENT) ++ set(client_curl_CFLAGS ${CURL_CFLAGS}) ++ set(client_curl_LIBS ${CURL_LDFLAGS} pthread) ++ set(xmlrpc_client_pkgconfig_req libcurl) ++ list(APPEND transport_SOURCES ++ ${curl_srcdir}/xmlrpc_curl_transport.c ++ ${curl_srcdir}/curltransaction.c ++ ${curl_srcdir}/curltransaction.h ++ ${curl_srcdir}/curlmulti.c ++ ${curl_srcdir}/curlmulti.h ++ ${curl_srcdir}/lock.h ++ ${curl_srcdir}/lock_pthread.c ++ ${curl_srcdir}/lock_pthread.h ++ ${curl_srcdir}/curlversion.h ++ ) ++endif(MUST_BUILD_CURL_CLIENT) ++ ++set(client_CFLAGS "-I${wininet_srcdir} -I${libwww_srcdir} -I${curl_srcdir} ${client_wininet_CFLAGS} ${client_libwww_CFLAGS} ${client_curl_CFLAGS}") ++set(client_LIBS ${client_wininet_LIBS} ${client_libwww_LIBS} ${client_curl_LIBS}) ++ ++ ++add_subdirectory(cpp) ++ ++ ++ ++### libxmlrpc.so ++add_library(xmlrpc SHARED ++ double.c parse_datetime.c parse_value.c resource.c trace.c version.c ++ json.c ++ ${xmlrpc_xml_parser} ++ 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_authcookie.c) ++ ++set_target_properties(xmlrpc ++ PROPERTIES ++ COMPILE_FLAGS ${libxml_INCLUDES}) ++ ++ensc_pkgconfig(xmlrpc) ++target_link_libraries(xmlrpc ${libxml_LIBS} xmlrpc_util) ++list(APPEND lib_TARGETS xmlrpc) ++ ++### libxmlrpc_client.so ++add_library(xmlrpc_client SHARED ++ xmlrpc_client.c xmlrpc_client_global.c xmlrpc_server_info.c ${transport_SOURCES}) ++ ++target_link_libraries(xmlrpc_client xmlrpc ${client_LIBS}) ++set_target_properties(xmlrpc_client ++ PROPERTIES ++ COMPILE_FLAGS "${client_CFLAGS}") ++list(APPEND lib_TARGETS xmlrpc_client) ++ensc_pkgconfig(xmlrpc_client) ++ ++### libxmlrpc_server.so ++add_library(xmlrpc_server SHARED ++ registry.c method.c system_method.c) ++target_link_libraries(xmlrpc_server xmlrpc) ++list(APPEND lib_TARGETS xmlrpc_server) ++ensc_pkgconfig(xmlrpc_server) ++ ++ ++### libxmlrpc_server_abyss.so ++if(ENABLE_ABYSS_SERVER) ++ add_library(xmlrpc_server_abyss SHARED ++ 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) ++endif(ENABLE_ABYSS_SERVER) ++ ++ ++ ++### libxmlrpc_server_cgi.so ++if(ENABLE_CGI_SERVER) ++ add_library(xmlrpc_server_cgi SHARED ++ xmlrpc_server_cgi) ++ target_link_libraries(xmlrpc_server_cgi xmlrpc_server) ++ list(APPEND lib_TARGETS xmlrpc_server_cgi) ++ ensc_pkgconfig(xmlrpc_server_cgi) ++endif(ENABLE_CGI_SERVER) ++ ++install(TARGETS ${lib_TARGETS} ++ RUNTIME DESTINATION ${_bin} ++ LIBRARY DESTINATION ${_lib}) ++ ++set_target_properties(${lib_TARGETS} ++ PROPERTIES ++ LINK_FLAGS ${XMLRPC_LINKER_FLAGS} ++ VERSION ${XMLRPC_C_LIBVERSION} ++ SOVERSION ${XMLRPC_C_SOVERSION}) ++ ++ ++enable_testing() +diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt +new file mode 100644 +index 0000000..3171156 +--- /dev/null ++++ b/src/cpp/CMakeLists.txt +@@ -0,0 +1,70 @@ ++# -*- cmake -*- ++ ++####### libxmlrpc++.so ++add_library(xmlrpc++ SHARED ++ base64.cpp env_wrap.cpp fault.cpp girerr.cpp girmem.cpp ++ outcome.cpp param_list.cpp value.cpp xml.cpp) ++target_link_libraries(xmlrpc++ xmlrpc pthread) ++list(APPEND lib_TARGETS xmlrpc++) ++ensc_pkgconfig(xmlrpc++) ++ ++####### libxmlrpc_cpp.so ++add_library(xmlrpc_cpp SHARED XmlRpcCpp) ++target_link_libraries(xmlrpc_cpp xmlrpc xmlrpc_server xmlrpc_client) ++list(APPEND lib_TARGETS xmlrpc_cpp) ++ensc_pkgconfig(xmlrpc_cpp) ++ ++####### libxmlrpc_server++.so ++add_library(xmlrpc_server++ SHARED registry.cpp) ++target_link_libraries(xmlrpc_server++ xmlrpc++ xmlrpc_server) ++list(APPEND lib_TARGETS xmlrpc_server++) ++ensc_pkgconfig(xmlrpc_server++) ++ ++####### libxmlrpc_server_abyss++.so ++if(ENABLE_ABYSS_SERVER) ++ add_library(xmlrpc_server_abyss++ SHARED server_abyss.cpp) ++ target_link_libraries(xmlrpc_server_abyss++ xmlrpc_server++ xmlrpc_server_abyss) ++ list(APPEND lib_TARGETS xmlrpc_server_abyss++) ++ ensc_pkgconfig(xmlrpc_server_abyss++) ++endif(ENABLE_ABYSS_SERVER) ++ ++####### libxmlrpc_server_cgi++.so ++if(ENABLE_CGI_SERVER) ++ add_library(xmlrpc_server_cgi++ SHARED server_cgi.cpp) ++ target_link_libraries(xmlrpc_server_cgi++ xmlrpc_server++) ++ list(APPEND lib_TARGETS xmlrpc_server_cgi++) ++ ensc_pkgconfig(xmlrpc_server_cgi++) ++endif(ENABLE_CGI_SERVER) ++ ++####### libxmlrpc_server_pstream++.so ++add_library(xmlrpc_server_pstream++ SHARED server_pstream.cpp server_pstream_conn) ++target_link_libraries(xmlrpc_server_pstream++ xmlrpc_server++ xmlrpc_packetsocket) ++list(APPEND lib_TARGETS xmlrpc_server_pstream++) ++ensc_pkgconfig(xmlrpc_server_pstream++) ++ ++####### libxmlrpc_packetsocket.so ++add_library(xmlrpc_packetsocket SHARED packetsocket.cpp) ++target_link_libraries(xmlrpc_packetsocket xmlrpc++) ++list(APPEND lib_TARGETS xmlrpc_packetsocket) ++ensc_pkgconfig(xmlrpc_packetsocket) ++ ++####### libxmlrpc_client++.so ++add_library(xmlrpc_client++ SHARED ++ client.cpp client_simple.cpp curl.cpp libwww.cpp wininet.cpp pstream.cpp) ++set_target_properties(xmlrpc_client++ ++ PROPERTIES ++ COMPILE_FLAGS "-I${wininet_srcdir} -I${libwww_srcdir} -I${curl_srcdir}") ++target_link_libraries(xmlrpc_client++ xmlrpc++ xmlrpc_client xmlrpc_packetsocket) ++list(APPEND lib_TARGETS xmlrpc_client++) ++ensc_pkgconfig(xmlrpc_client++) ++ ++ ++install(TARGETS ${lib_TARGETS} ++ RUNTIME DESTINATION ${_bin} ++ LIBRARY DESTINATION ${_lib}) ++ ++set_target_properties(${lib_TARGETS} ++ PROPERTIES ++ LINK_FLAGS ${XMLRPC_LINKER_FLAGS} ++ VERSION ${XMLRPC_CXX_LIBVERSION} ++ SOVERSION ${XMLRPC_CXX_SOVERSION}) +diff --git a/src/cpp/test/CMakeLists.txt b/src/cpp/test/CMakeLists.txt +new file mode 100644 +index 0000000..dffd36c +--- /dev/null ++++ b/src/cpp/test/CMakeLists.txt +@@ -0,0 +1,18 @@ ++# -*- cmake -*- ++ ++set(test_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 test_SOURCES testclient.cpp) ++ list(APPEND test_LIBS xmlrpc_client++) ++else(MUST_BUILD_CLIENT) ++ list(APPEND test_SOURCES testclient_dummy.c) ++endif(MUST_BUILD_CLIENT) ++ ++add_executable(src-test ${test_SOURCES}) ++target_link_libraries(src-test xmlrpc_server_abyss++ util ${test_LIBS}) ++ ++enable_testing() ++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..e99d81e +--- /dev/null ++++ b/src/cpp/xmlrpc++.pc.cmake +@@ -0,0 +1,12 @@ ++bindir=@bindir@ ++prefix=@prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++Name: xmlrpc++ ++Description: XMLRPC C++ Base library ++Version: @XMLRPC_C_VERSION@ ++ ++Requires.private: xmlrpc xmlrpc_util ++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..fe1f835 +--- /dev/null ++++ b/src/cpp/xmlrpc_client++.pc.cmake +@@ -0,0 +1,12 @@ ++bindir=@bindir@ ++prefix=@prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++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++ ++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..9f94252 +--- /dev/null ++++ b/src/cpp/xmlrpc_cpp.pc.cmake +@@ -0,0 +1,12 @@ ++bindir=@bindir@ ++prefix=@prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++Name: xmlrpc_cpp ++Description: XMLRPC CPP library ++Version: @XMLRPC_C_VERSION@ ++ ++Requires.private: xmlrpc xmlrpc_server xmlrpc_util ++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..e168da3 +--- /dev/null ++++ b/src/cpp/xmlrpc_packetsocket.pc.cmake +@@ -0,0 +1,12 @@ ++bindir=@bindir@ ++prefix=@prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++Name: xmlrpc_packetsocket ++Description: XMLRPC C++ packsetsocket library ++Version: @XMLRPC_C_VERSION@ ++ ++Requires.private: xmlrpc++ ++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..5080b63 +--- /dev/null ++++ b/src/cpp/xmlrpc_server++.pc.cmake +@@ -0,0 +1,12 @@ ++bindir=@bindir@ ++prefix=@prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++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++ ++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..f1d2198 +--- /dev/null ++++ b/src/cpp/xmlrpc_server_abyss++.pc.cmake +@@ -0,0 +1,12 @@ ++bindir=@bindir@ ++prefix=@prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++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++ ++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..9021564 +--- /dev/null ++++ b/src/cpp/xmlrpc_server_cgi++.pc.cmake +@@ -0,0 +1,12 @@ ++bindir=@bindir@ ++prefix=@prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++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++ ++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..9b4819f +--- /dev/null ++++ b/src/cpp/xmlrpc_server_pstream++.pc.cmake +@@ -0,0 +1,12 @@ ++bindir=@bindir@ ++prefix=@prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++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++ ++Cflags: -I${includedir} +diff --git a/src/xmlrpc.pc.cmake b/src/xmlrpc.pc.cmake +new file mode 100644 +index 0000000..7c098b8 +--- /dev/null ++++ b/src/xmlrpc.pc.cmake +@@ -0,0 +1,12 @@ ++bindir=@bindir@ ++prefix=@prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++Name: xmlrpc ++Description: XMLRPC base library ++Version: @XMLRPC_C_VERSION@ ++ ++Requires.private: @xmlrpc_pkgconfig_req@ xmlrpc_util ++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..61543d4 +--- /dev/null ++++ b/src/xmlrpc_client.pc.cmake +@@ -0,0 +1,12 @@ ++bindir=@bindir@ ++prefix=@prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++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@ ++Cflags: -I${includedir} +diff --git a/src/xmlrpc_server.pc.cmake b/src/xmlrpc_server.pc.cmake +new file mode 100644 +index 0000000..cade53d +--- /dev/null ++++ b/src/xmlrpc_server.pc.cmake +@@ -0,0 +1,12 @@ ++bindir=@bindir@ ++prefix=@prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++Name: xmlrpc_server ++Description: XMLRPC Server library ++Version: @XMLRPC_C_VERSION@ ++ ++Requires.private: xmlrpc xmlrpc_util ++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..198c780 +--- /dev/null ++++ b/src/xmlrpc_server_abyss.pc.cmake +@@ -0,0 +1,12 @@ ++bindir=@bindir@ ++prefix=@prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++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 ++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..748b550 +--- /dev/null ++++ b/src/xmlrpc_server_cgi.pc.cmake +@@ -0,0 +1,12 @@ ++bindir=@bindir@ ++prefix=@prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++ ++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 ++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..cd2a6d7 +--- /dev/null ++++ b/tools/CMakeLists.txt +@@ -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) ++ add_subdirectory(xmlrpc_transport) ++ ++ ++ if (ENABLE_CPLUSPLUS) ++ add_subdirectory(xml-rpc-api2cpp) ++ add_subdirectory(xml-rpc-api2txt) ++ add_subdirectory(xmlrpc_cpp_proxy) ++ ++ if (BUILD_XMLRPC_PSTREAM AND ENABLE_CGI_SERVER) ++ add_subdirectory(xmlrpc_pstream) ++ endif() ++ endif() ++endif() +diff --git a/tools/binmode-rpc-kit/CMakeLists.txt b/tools/binmode-rpc-kit/CMakeLists.txt +new file mode 100644 +index 0000000..342423d +--- /dev/null ++++ b/tools/binmode-rpc-kit/CMakeLists.txt +@@ -0,0 +1 @@ ++# -*- cmake -*- +diff --git a/tools/lib/CMakeLists.txt b/tools/lib/CMakeLists.txt +new file mode 100644 +index 0000000..342423d +--- /dev/null ++++ b/tools/lib/CMakeLists.txt +@@ -0,0 +1 @@ ++# -*- cmake -*- +diff --git a/tools/turbocharger/CMakeLists.txt b/tools/turbocharger/CMakeLists.txt +new file mode 100644 +index 0000000..342423d +--- /dev/null ++++ b/tools/turbocharger/CMakeLists.txt +@@ -0,0 +1 @@ ++# -*- cmake -*- +diff --git a/tools/xml-rpc-api2cpp/CMakeLists.txt b/tools/xml-rpc-api2cpp/CMakeLists.txt +new file mode 100644 +index 0000000..1e9134a +--- /dev/null ++++ b/tools/xml-rpc-api2cpp/CMakeLists.txt +@@ -0,0 +1,15 @@ ++# -*- cmake -*- ++ ++add_executable(xml-rpc-api2cpp ++ xml-rpc-api2cpp.cpp ++ DataType.cpp ++ XmlRpcFunction.cpp ++ XmlRpcClass.cpp ++ SystemProxy.cpp) ++target_link_libraries(xml-rpc-api2cpp xmlrpc_cpp xmlrpc_client) ++ ++install(TARGETS xml-rpc-api2cpp ++ RUNTIME DESTINATION bin) ++ ++install(FILES xml-rpc-api2cpp.1 ++ DESTINATION ${mandir}/man1) +diff --git a/tools/xml-rpc-api2txt/CMakeLists.txt b/tools/xml-rpc-api2txt/CMakeLists.txt +new file mode 100644 +index 0000000..5b01824 +--- /dev/null ++++ b/tools/xml-rpc-api2txt/CMakeLists.txt +@@ -0,0 +1,7 @@ ++# -*- cmake -*- ++ ++install(PROGRAMS xml-rpc-api2txt ++ DESTINATION ${bindir}) ++ ++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 +--- /dev/null ++++ b/tools/xmlrpc/CMakeLists.txt +@@ -0,0 +1,17 @@ ++# -*- cmake -*- ++ ++#set_directory_properties(PROPERTIES INCLUDE_DIRECTORIES ../lib/include) ++ ++include_directories(../lib/include) ++add_executable(tool-xmlrpc ++ xmlrpc.c ++ ../lib/dumpvalue.c) ++target_link_libraries(tool-xmlrpc xmlrpc_client util) ++ ++set_target_properties(tool-xmlrpc ++ PROPERTIES OUTPUT_NAME xmlrpc) ++ ++install(TARGETS tool-xmlrpc ++ DESTINATION ${_bin}) ++ ++ensc_set_link_exe_flags(tool-xmlrpc) +diff --git a/tools/xmlrpc/config.h b/tools/xmlrpc/config.h +new file mode 100644 +index 0000000..7409aed +--- /dev/null ++++ b/tools/xmlrpc/config.h +@@ -0,0 +1 @@ ++#include <xmlrpc_config.h> +diff --git a/tools/xmlrpc_cpp_proxy/CMakeLists.txt b/tools/xmlrpc_cpp_proxy/CMakeLists.txt +new file mode 100644 +index 0000000..4166023 +--- /dev/null ++++ b/tools/xmlrpc_cpp_proxy/CMakeLists.txt +@@ -0,0 +1,17 @@ ++# -*- cmake -*- ++ ++add_executable(xmlrpc_cpp_proxy ++ proxyClass.cpp ++ proxyClass.hpp ++ systemProxy.cpp ++ systemProxy.hpp ++ xmlrpcMethod.cpp ++ xmlrpcMethod.hpp ++ xmlrpcType.cpp ++ xmlrpcType.hpp ++ xmlrpc_cpp_proxy.cpp ++) ++target_link_libraries(xmlrpc_cpp_proxy xmlrpc_client++) ++ ++install(TARGETS xmlrpc_cpp_proxy ++ RUNTIME DESTINATION bin) +diff --git a/tools/xmlrpc_pstream/CMakeLists.txt b/tools/xmlrpc_pstream/CMakeLists.txt +new file mode 100644 +index 0000000..b277bc8 +--- /dev/null ++++ b/tools/xmlrpc_pstream/CMakeLists.txt +@@ -0,0 +1,16 @@ ++# -*- cmake -*- ++ ++add_executable(xmlrpc_pstream ++ xmlrpc_pstream.cpp ++ ../lib/dumpvalue.c) ++ ++target_link_libraries(xmlrpc_pstream ++ ${READLINE} ++ ${NCURSES_LIBRARIES} ++ xmlrpc_client++ ++ util) ++ ++include_directories(../lib/include) ++ ++install(TARGETS xmlrpc_pstream ++ RUNTIME DESTINATION bin) +diff --git a/tools/xmlrpc_transport/CMakeLists.txt b/tools/xmlrpc_transport/CMakeLists.txt +new file mode 100644 +index 0000000..b73d7c0 +--- /dev/null ++++ b/tools/xmlrpc_transport/CMakeLists.txt +@@ -0,0 +1,9 @@ ++# -*- cmake -*- ++ ++add_executable(xmlrpc_transport xmlrpc_transport.c) ++target_link_libraries(xmlrpc_transport xmlrpc_client util) ++ ++install(TARGETS xmlrpc_transport ++ DESTINATION ${_bin}) ++ ++ensc_set_link_exe_flags(xmlrpc_transport) +diff --git a/tools/xmlrpc_transport/config.h b/tools/xmlrpc_transport/config.h +new file mode 100644 +index 0000000..7409aed +--- /dev/null ++++ b/tools/xmlrpc_transport/config.h +@@ -0,0 +1 @@ ++#include <xmlrpc_config.h> +diff --git a/transport_config.h.cmake b/transport_config.h.cmake +new file mode 100644 +index 0000000..1ec3cf6 +--- /dev/null ++++ b/transport_config.h.cmake +@@ -0,0 +1,16 @@ ++/* -*- c -*- */ ++#define MUST_BUILD_WININET_CLIENT @_MUST_BUILD_WININET_CLIENT@ ++#define MUST_BUILD_LIBWWW_CLIENT @_MUST_BUILD_LIBWWW_CLIENT@ ++#define MUST_BUILD_CURL_CLIENT @_MUST_BUILD_CURL_CLIENT@ ++ ++static char const * const XMLRPC_DEFAULT_TRANSPORT = ++#if MUST_BUILD_LIBWWW_CLIENT ++ "libwww" ++#elif MUST_BUILD_CURL_CLIENT ++ "curl" ++#elif MUST_BUILD_WININET_CLIENT ++ "wininet" ++#else ++# error "no client XML transport configured" ++#endif ++ ; +diff --git a/version.h.cmake b/version.h.cmake +new file mode 100644 +index 0000000..0c964a3 +--- /dev/null ++++ b/version.h.cmake +@@ -0,0 +1,5 @@ ++/* This file was generated by a make rule */ ++#define XMLRPC_C_VERSION "@XMLRPC_C_VERSION@" ++#define XMLRPC_VERSION_MAJOR @XMLRPC_C_VERSION_MAJOR_NUM@ ++#define XMLRPC_VERSION_MINOR @XMLRPC_C_VERSION_MINOR_NUM@ ++#define XMLRPC_VERSION_POINT @XMLRPC_C_VERSION_POINT_NUM@ +diff --git a/xmlrpc-c-config b/xmlrpc-c-config +new file mode 100755 +index 0000000..50577fd +--- /dev/null ++++ b/xmlrpc-c-config +@@ -0,0 +1,105 @@ ++#! /bin/sh ++ ++comp= ++ ++need_cxx= ++need_client= ++need_server= ++need_abyss= ++need_pstream= ++need_packetsocket= ++need_cgi= ++ ++show_help() { ++ cat <<EOF ++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 ++ pstream-server pstream-based server functions ++ server-util basic server functions (implied by *-server) ++ ++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 ++EOF ++ exit $1 ++} ++ ++test $# -ne 0 || show_help 1 >&2 ++ ++while test $# -gt 0; do ++ case $1 in ++ (c++) comp="$comp xmlrpc_cpp";; ++ (server-util) need_server=1;; ++ (cgi-server) need_cgi=1;; ++ (c++2) need_cxx=1;; ++ (abyss-server) need_abyss=1;; ++ (pstream-server) need_pstream=1;; ++ (packetsocket) need_packetsocket=1;; ++ (client|libwww-client) need_client=1;; ++ (--help) show_help 0;; ++ (--) shift; break;; ++ (--*) break;; ++ (*) ++ echo "Unrecognized token '$1'" ++ exit 1 ++ ;; ++ esac ++ shift ++done ++ ++if test -z "$need_cxx"; then ++ test -z "$need_client" || comp="$comp xmlrpc_client" ++ test -z "$need_abyss" || comp="$comp xmlrpc_server_abyss" ++ test -z "$need_server" || comp="$comp xmlrpc_server" ++ test -z "$need_cgi" || comp="$comp xmlrpc_server_cgi" ++else ++ test -z "$need_client" || comp="$comp xmlrpc_client++" ++ test -z "$need_abyss" || comp="$comp xmlrpc_server_abyss++" ++ test -z "$need_server" || comp="$comp xmlrpc_server++" ++ test -z "$need_cgi" || comp="$comp xmlrpc_server_cgi++" ++fi ++ ++test -z "$need_pstream" || comp="$comp xmlrpc_server_pstream++" ++test -z "$need_packetsocket" || comp="$comp xmlrpc_packetsocket" ++test -n "$comp" || comp="xmlrpc xmlrpc_util" ++ ++case $1 in ++ (--features|--modules) ++ echo "c++ abyss-server curl-client" ++ exit 0 ++ ;; ++ (--version) ++ comp=xmlrpc ++ set -- --modversion ++ ;; ++ (--exec-prefix) ++ comp=xmlrpc ++ set -- --variable=prefix ++ ;; ++ (--*dir|--prefix) ++ comp=xmlrpc ++ set -- --variable=${1##--} ++ ;; ++ (--ldflags) ++ set -- --libs-only-L ++ ;; ++ (--ldadd) ++ set -- --libs-only-l ++ ;; ++ (--cflags) ++ set -- "$1" ++ ;; ++esac ++ ++exec pkg-config "$@" $comp +diff --git a/xmlrpc_config.h.cmake b/xmlrpc_config.h.cmake +new file mode 100644 +index 0000000..9eff724 +--- /dev/null ++++ b/xmlrpc_config.h.cmake +@@ -0,0 +1,183 @@ ++/* -*- c -*- */ ++ ++#ifndef H_XMLRPC_C_CONFIG_H ++ ++#define HAVE_SYS_IOCTL_H 0@HAVE_SYS_IOCTL_H@ ++#define HAVE_SYS_SELECT_H_DEFINE 0@HAVE_SYS_IOCTL_H@ ++ ++#define VA_LIST_IS_ARRAY @VA_LIST_IS_ARRAY@ ++#define XMLRPC_HAVE_WCHAR @XMLRPC_HAVE_WCHAR@ ++#define ATTR_UNUSED @ATTR_UNUSED@ ++#define DIRECTORY_SEPARATOR "@DIRECTORY_SEPARATOR@" ++ ++#cmakedefine HAVE_SYS_SELECT_H 1 ++#cmakedefine HAVE_WCHAR_H 1 ++#cmakedefine HAVE_SETENV 1 ++#cmakedefine HAVE_STRCASECMP 1 ++#cmakedefine HAVE__STRICMP 1 ++#cmakedefine HAVE_STRICMP 1 ++#cmakedefine HAVE_GETTIMEOFDAY 1 ++#cmakedefine HAVE_SETGROUPS 1 ++#cmakedefine HAVE_ASPRINTF 1 ++#cmakedefine HAVE_PSELECT 1 ++#cmakedefine HAVE_WCSNCMP 1 ++#cmakedefine HAVE_LOCALTIME_R 1 ++#cmakedefine HAVE_GMTIME_R 1 ++#cmakedefine HAVE_STRTOLL 1 ++#cmakedefine HAVE___STRTOLL 1 ++#cmakedefine HAVE_STRTOULL 1 ++#cmakedefine HAVE___STRTOULL 1 ++#cmakedefine HAVE_STRTOQ 1 ++#cmakedefine HAVE_STRTOUQ 1 ++ ++#define HAVE_UNICODE_WCHAR HAVE_WCHAR_H ++ ++/* Xmlrpc-c code uses __inline__ to declare functions that should ++ be compiled as inline code. GNU C recognizes the __inline__ keyword. ++ Others recognize 'inline' or '__inline' or nothing at all to say ++ a function should be inlined. ++ ++ We could make 'configure' simply do a trial compile to figure out ++ which one, but for now, this approximation is easier: ++*/ ++#if (!defined(__GNUC__)) ++ #if (!defined(__inline__)) ++ #if (defined(__sgi) || defined(_AIX) || defined(_MSC_VER)) ++ #define __inline__ __inline ++ #else ++ #define __inline__ ++ #endif ++ #endif ++#endif ++ ++/* MSVCRT means we're using the Microsoft Visual C++ runtime library */ ++ ++#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 ++ ++#if MSVCRT ++ /* The MSVC runtime library _does_ have a 'struct timeval', but it is ++ part of the Winsock interface (along with select(), which is probably ++ its intended use), so isn't intended for use for general timekeeping. ++ */ ++ #define HAVE_TIMEVAL 0 ++ #define HAVE_TIMESPEC 0 ++#else ++ #define HAVE_TIMEVAL 1 ++ /* timespec is Posix.1b. If we need to work on a non-Posix.1b non-Windows ++ system, we'll have to figure out how to make Configure determine this. ++ */ ++ #define HAVE_TIMESPEC 1 ++#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 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 ++ the standards violation. That warning is 4996, along with other warnings ++ that tell you you're using a function that Microsoft thinks you ++ shouldn't. ++ ++ Well, POSIX is more important than that element of ISO C, so we disable ++ that warning. ++ ++ FYI, msvcrt also defines _strdup(), etc, which doesn't violate the ++ naming standard. But since other environments don't define _strdup(), ++ we can't use it in portable code. ++*/ ++#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 ++ ++#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.10.4 + diff --git a/SOURCES/xmlrpc-c-include-string_int.h.patch b/SOURCES/xmlrpc-c-include-string_int.h.patch new file mode 100644 index 0000000..3a4ef8e --- /dev/null +++ b/SOURCES/xmlrpc-c-include-string_int.h.patch @@ -0,0 +1,32 @@ +From df68067713ab58bf14ac1e75eace9fac45dba7d9 Mon Sep 17 00:00:00 2001 +From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> +Date: Thu, 30 Dec 2010 20:44:06 +0100 +Subject: [PATCH 8/8] include missing <xmlrpc-c/string_int.h> + +gives + +| /tmp/xmlrpc-c/src/xmlrpc_libxml2.c: In function 'end_element': +| /tmp/xmlrpc-c/src/xmlrpc_libxml2.c:303:2: warning: implicit declaration of function 'xmlrpc_streq' +| ... +| ../src/libxmlrpc.so.3.25: undefined reference to `xmlrpc_streq' + +else. +--- + src/xmlrpc_libxml2.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/src/xmlrpc_libxml2.c b/src/xmlrpc_libxml2.c +index 57ae06b..ef073d4 100644 +--- a/src/xmlrpc_libxml2.c ++++ b/src/xmlrpc_libxml2.c +@@ -38,6 +38,7 @@ + + #include "xmlrpc-c/base.h" + #include "xmlrpc-c/base_int.h" ++#include "xmlrpc-c/string_int.h" + #include "xmlrpc-c/xmlparser.h" + + /* Define the contents of our internal structure. */ +-- +1.7.3.4 + diff --git a/SOURCES/xmlrpc-c-longlong.patch b/SOURCES/xmlrpc-c-longlong.patch new file mode 100644 index 0000000..8f2f06e --- /dev/null +++ b/SOURCES/xmlrpc-c-longlong.patch @@ -0,0 +1,98 @@ +From 4d3bbc5d59418666a5fc91c8fe3e301ee9c89b32 Mon Sep 17 00:00:00 2001 +From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> +Date: Sat, 5 Apr 2008 11:41:34 +0200 +Subject: [PATCH 3/8] Use proper datatypes for 'long long' + +xmlrpc-c uses 'long long' at some places (e.g. in printf +statements with PRId64) under the assumption that it has a +width of exactly 64 bits. + +On 64 bit machines 'long long' has a width of 128 bit and +will cause overhead both in memory and cpu usage there. As +'long long' is used only to handle <i8> datatypes, the patch +uses a plain 64 integer type there. + +It is arguable whether 'int_least64_t' (and 'int_least32_t') +would be a better choice for 'int64_t' (and 'int32_t'), but +for now, the patch uses datatypes with exact widths. +--- + include/xmlrpc-c/base.h | 7 ++++--- + lib/libutil/string_number.c | 1 + + src/cpp/param_list.cpp | 8 ++++---- + 3 files changed, 9 insertions(+), 7 deletions(-) + +diff --git a/include/xmlrpc-c/base.h b/include/xmlrpc-c/base.h +index cdc9161..cbdf3d0 100644 +--- a/include/xmlrpc-c/base.h ++++ b/include/xmlrpc-c/base.h +@@ -5,6 +5,7 @@ + + #include <stddef.h> + #include <stdarg.h> ++#include <stdint.h> + #include <time.h> + #include <xmlrpc-c/c_util.h> + #include <xmlrpc-c/util.h> +@@ -50,9 +51,9 @@ xmlrpc_version(unsigned int * const majorP, + + typedef signed int xmlrpc_int; + /* An integer of the type defined by XML-RPC <int>; i.e. 32 bit */ +-typedef XMLRPC_INT32 xmlrpc_int32; ++typedef int32_t xmlrpc_int32; + /* An integer of the type defined by XML-RPC <i4>; i.e. 32 bit */ +-typedef XMLRPC_INT64 xmlrpc_int64; ++typedef int64_t xmlrpc_int64; + /* An integer of the type defined by "XML-RPC" <i8>; i.e. 64 bit */ + typedef int xmlrpc_bool; + /* A boolean (of the type defined by XML-RPC <boolean>, but there's +@@ -89,7 +90,7 @@ typedef int xmlrpc_socket; + #define XMLRPC_INT32_MAX 0x7fffffff + #define XMLRPC_INT32_MIN (-XMLRPC_INT32_MAX - 1) + +-#define XMLRPC_INT64_MAX 0x7fffffffffffffffll ++#define XMLRPC_INT64_MAX ((xmlrpc_int64)0x7fffffffffffffffll) + #define XMLRPC_INT64_MIN (-XMLRPC_INT64_MAX - 1) + + +diff --git a/lib/libutil/string_number.c b/lib/libutil/string_number.c +index 1c284af..a7e78ad 100644 +--- a/lib/libutil/string_number.c ++++ b/lib/libutil/string_number.c +@@ -6,6 +6,7 @@ + ============================================================================*/ + #include <stdlib.h> + #include <string.h> ++#include <inttypes.h> + #include <errno.h> + + #include <xmlrpc-c/base.h> +diff --git a/src/cpp/param_list.cpp b/src/cpp/param_list.cpp +index 67c636b..60f7df9 100644 +--- a/src/cpp/param_list.cpp ++++ b/src/cpp/param_list.cpp +@@ -265,10 +265,10 @@ paramList::getNil(unsigned int const paramNumber) const { + + + +-long long ++xmlrpc_int64 + paramList::getI8(unsigned int const paramNumber, +- long long const minimum, +- long long const maximum) const { ++ xmlrpc_int64 const minimum, ++ xmlrpc_int64 const maximum) const { + + if (paramNumber >= this->paramVector.size()) + throw(fault("Not enough parameters", fault::CODE_TYPE)); +@@ -277,7 +277,7 @@ paramList::getI8(unsigned int const paramNumber, + throw(fault("Parameter that is supposed to be 64-bit integer is not", + fault::CODE_TYPE)); + +- long long const longlongvalue(static_cast<long long>( ++ xmlrpc_int64 const longlongvalue(static_cast<xmlrpc_int64>( + value_i8(this->paramVector[paramNumber]))); + + if (longlongvalue < minimum) +-- +1.7.4 + diff --git a/SOURCES/xmlrpc-c-printf-size_t.patch b/SOURCES/xmlrpc-c-printf-size_t.patch new file mode 100644 index 0000000..420b213 --- /dev/null +++ b/SOURCES/xmlrpc-c-printf-size_t.patch @@ -0,0 +1,48 @@ +From 25a777bb0ee2e2ee17d87006f76b3cea5d15a9f7 Mon Sep 17 00:00:00 2001 +From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> +Date: Mon, 25 Feb 2008 17:48:25 +0100 +Subject: [PATCH 2/9] fixed broken format string modifiers + +--- + 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 +index 89fe82b..91ea50d 100644 +--- a/examples/json.c ++++ b/examples/json.c +@@ -41,7 +41,7 @@ printAsXml(xmlrpc_value * const valP) { + printf("XML-RPC XML:\n"); + + printf("%.*s\n", +- XMLRPC_MEMBLOCK_SIZE(char, &out), ++ (int)XMLRPC_MEMBLOCK_SIZE(char, &out), + XMLRPC_MEMBLOCK_CONTENTS(char, &out)); + + XMLRPC_MEMBLOCK_CLEAN(char, &out); +@@ -70,7 +70,7 @@ printAsJson(xmlrpc_value * const valP) { + printf("JSON:\n"); + + printf("%.*s\n", +- XMLRPC_MEMBLOCK_SIZE(char, &out), ++ (int)XMLRPC_MEMBLOCK_SIZE(char, &out), + XMLRPC_MEMBLOCK_CONTENTS(char, &out)); + + XMLRPC_MEMBLOCK_CLEAN(char, &out); +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)); + +- 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.6 + diff --git a/SOURCES/xmlrpc-c-uninit-curl.patch b/SOURCES/xmlrpc-c-uninit-curl.patch new file mode 100644 index 0000000..177f70b --- /dev/null +++ b/SOURCES/xmlrpc-c-uninit-curl.patch @@ -0,0 +1,28 @@ +From 6affc342b968ec042d9efe84ca0ea40c8d88e8bf Mon Sep 17 00:00:00 2001 +From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> +Date: Sat, 21 Nov 2009 14:12:41 +0100 +Subject: [PATCH 4/5] fixed unitialized variable + +Reported by Nikola Pajkovsky <npajkovs AT redhat.com>: + + Problem shows up only when you compiled xmlrpc with nss and try to + connect to server with wrong certificate. +--- + lib/curl_transport/curltransaction.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/lib/curl_transport/curltransaction.c b/lib/curl_transport/curltransaction.c +index 59cb6ab..3c75010 100644 +--- a/lib/curl_transport/curltransaction.c ++++ b/lib/curl_transport/curltransaction.c +@@ -641,6 +641,7 @@ curlTransaction_create(xmlrpc_env * const envP, + curlTransactionP->curlSessionP = curlSessionP; + curlTransactionP->userContextP = userContextP; + curlTransactionP->progress = progress; ++ curlTransactionP->curlError[0] = '\0'; + + curlTransactionP->serverUrl = strdup(serverP->serverUrl); + if (curlTransactionP->serverUrl == NULL) +-- +1.7.1.1 + diff --git a/SPECS/xmlrpc-c.spec b/SPECS/xmlrpc-c.spec new file mode 100644 index 0000000..03d3f81 --- /dev/null +++ b/SPECS/xmlrpc-c.spec @@ -0,0 +1,485 @@ +%global advanced_branch 1 +%global svnrev 2451 + +%{!?release_func:%global release_func() %%{?prerelease:0.}%1%%{?prerelease:.%%prerelease}%%{?dist}} + +Summary: A lightweight RPC library based on XML and HTTP +Name: xmlrpc-c +Version: 1.32.5 +Release: %release_func 1903.svn%svnrev +# See COPYING for details. +# The Python 1.5.2 license used by a few files is just BSD. +# GPL+: lib/util/getoptx.{c,h} +# Public Domain: grep -Ri "public domain" * +License: BSD and MIT and GPL+ and Public Domain +Group: System Environment/Libraries +URL: http://xmlrpc-c.sourceforge.net/ +%{!?advanced_branch:Source0: http://dl.sourceforge.net/sourceforge/xmlrpc-c/xmlrpc-%version.tgz} +# generated by 'make svn-sources [SVN_VER=%version SVN_REV=%svnrev]'. Unfortunately, +# upstream does not tag versions so we must fetch from the branch and +# check which version was used for it +%{?advanced_branch:Source0: xmlrpc-c-%version.tar.xz} + +Source100: dfs.cc +Source101: dso-fixup + +Patch100: xmlrpc-c-cmake.patch +Patch102: xmlrpc-c-printf-size_t.patch +Patch105: xmlrpc-c-longlong.patch +Patch107: xmlrpc-c-uninit-curl.patch +Patch108: xmlrpc-c-30x-redirect.patch +Patch109: xmlrpc-c-check-vasprintf-return-value.patch +Patch110: xmlrpc-c-include-string_int.h.patch + + +BuildRoot: %_tmppath/%name-%version-%release-root +BuildRequires: cmake +BuildRequires: curl-devel libxml2-devel readline-devel ncurses-devel + +%package c++ +Summary: C++ libraries for xmlrpc-c +Group: System Environment/Libraries +Requires: %name%{?_isa} = %version-%release + +%package client +Summary: C client libraries for xmlrpc-c +Group: System Environment/Libraries +Requires: %name%{?_isa} = %version-%release + +%package client++ +Summary: C++ client libraries for xmlrpc-c +Group: System Environment/Libraries +Requires: %name%{?_isa} = %version-%release +Requires: %name-c++%{?_isa} = %version-%release +Requires: %name-client%{?_isa} = %version-%release + +%package devel +Summary: Development files for xmlrpc-c based programs +Group: Development/Libraries +Requires: %name%{?_isa} = %version-%release +Requires: %name-c++%{?_isa} = %version-%release +Requires: %name-client%{?_isa} = %version-%release +Requires: %name-client++%{?_isa} = %version-%release + +%package apps +Summary: Sample XML-RPC applications +Group: Applications/Internet +Requires: %name%{?_isa} = %version-%release +Requires: %name-c++%{?_isa} = %version-%release +Requires: %name-client%{?_isa} = %version-%release +Requires: %name-client++%{?_isa} = %version-%release + + +%description +XML-RPC is a quick-and-easy way to make procedure calls over the +Internet. It converts the procedure call into XML document, sends it +to a remote server using HTTP, and gets back the response as XML. + +This library provides a modular implementation of XML-RPC for C. + + +%description c++ +XML-RPC is a quick-and-easy way to make procedure calls over the +Internet. It converts the procedure call into XML document, sends it +to a remote server using HTTP, and gets back the response as XML. + +This library provides a modular implementation of XML-RPC for C++. + + +%description client +XML-RPC is a quick-and-easy way to make procedure calls over the +Internet. It converts the procedure call into XML document, sends it +to a remote server using HTTP, and gets back the response as XML. + +This library provides a modular implementation of XML-RPC for C +clients. + +%description client++ +XML-RPC is a quick-and-easy way to make procedure calls over the +Internet. It converts the procedure call into XML document, sends it +to a remote server using HTTP, and gets back the response as XML. + +This library provides a modular implementation of XML-RPC for C++ +clients. + + +%description devel +Static libraries and header files for writing XML-RPC applications in +C and C++. + + +%description apps +XML-RPC is a quick-and-easy way to make procedure calls over the +Internet. It converts the procedure call into XML document, sends it +to a remote server using HTTP, and gets back the response as XML. + +This package contains some handy XML-RPC demo applications. + + +%prep +%setup -q +%patch100 -p1 +%patch102 -p1 +%patch105 -p1 +%patch107 -p1 +%patch108 -p1 +%patch109 -p1 +%patch110 -p1 + +## not needed... +rm doc/{INSTALL,configure_doc} + + +%build +mkdir -p build +cd build +export CFLAGS="$RPM_OPT_FLAGS -Wno-uninitialized -Wno-unknown-pragmas" +export CXXFLAGS="$RPM_OPT_FLAGS" +export LDFLAGS="-Wl,-as-needed" +cmake .. \ + -D_lib:STRING=%_lib \ + -DMUST_BUILD_CURL_CLIENT:BOOL=ON \ + -DMUST_BUILD_LIBWWW_CLIENT:BOOL=OFF \ + -DCMAKE_INSTALL_PREFIX:PATH=%_prefix \ + -DBUILD_SHARED_LIBS:BOOL=ON \ + -DENABLE_TOOLS:BOOL=ON +make VERBOSE=1 %{?_smp_mflags} + +%__cxx $RPM_OPT_FLAGS %SOURCE100 -o depsort + + +%install +rm -rf $RPM_BUILD_ROOT +cd build +make install DESTDIR=$RPM_BUILD_ROOT + +chmod +x $RPM_BUILD_ROOT%_libdir/*.so + +%SOURCE101 "$RPM_BUILD_ROOT" "%_libdir" 'libxmlrpc' $RPM_BUILD_ROOT%_libdir/libxmlrpc*.so.[0-9] + + +%check +unset PKG_CONFIG_PATH +export PKG_CONFIG_LIBDIR=$RPM_BUILD_ROOT%_libdir/pkgconfig:%_libdir/pkgconfig:%_datadir/pkgconfig +PATH=$RPM_BUILD_ROOT%_bindir:$PATH + +_e() { + echo "\$ $@" + "$@" +} + +set +x +_e xmlrpc-c-config --help +for comp in c++ cgi-server server-util abyss-server client libwww-client; do + for opt in '--version' '--libs' 'c++2 --libs' 'c++ --libs --static'; do + _e xmlrpc-c-config "$comp" $opt + done +done +set -x + + +%clean +rm -rf $RPM_BUILD_ROOT + + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%post client -p /sbin/ldconfig +%postun client -p /sbin/ldconfig + +%post c++ -p /sbin/ldconfig +%postun c++ -p /sbin/ldconfig + +%post client++ -p /sbin/ldconfig +%postun client++ -p /sbin/ldconfig + + + +%files +%defattr(-,root,root,-) +%doc doc/* +%_libdir/*.so.3* +%exclude %_libdir/libxmlrpc_client.so* + + +%files client +%defattr(-,root,root,-) +%_libdir/libxmlrpc_client.so.* + + +%files c++ +%defattr(-,root,root,-) +%_libdir/*.so.8* +%exclude %_libdir/libxmlrpc_client++.so* + + +%files client++ +%defattr(-,root,root,-) +%_libdir/libxmlrpc_client++.so.* + + +%files devel +%defattr(-,root,root,-) +%_bindir/xmlrpc-c-config +%_includedir/xmlrpc-c +%_includedir/*.h +%_libdir/pkgconfig/*.pc +%_libdir/*.so + + +%files apps +%defattr(-,root,root,-) +%doc tools/xmlrpc/xmlrpc.html +%doc tools/xmlrpc_transport/xmlrpc_transport.html +%_mandir/man1/* +%_bindir/xmlrpc +%_bindir/xmlrpc_transport +%_bindir/xml-rpc-api2cpp +%_bindir/xmlrpc_cpp_proxy +%_bindir/xmlrpc_pstream +%_bindir/xmlrpc_parsecall + +%exclude %_bindir/xml-rpc-api2txt + + +%changelog +* Wed Jul 31 2013 Michal Srb <msrb@redhat.com> - 1.32.5-1903.svn2451 +- Fix license tag + +* Thu Apr 25 2013 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.32.5-1902.svn2451 +- Add missing inter-package dependencies +- Rename fedora directory to build + +* Fri Feb 15 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.32.5-1901.svn2451 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Sun Dec 9 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.32.5-1900.svn2451 +- updated to 1.32.5 + +* Sun Oct 21 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.32.2-1900.svn2434 +- updated to 1.32.2 + +* Sat Oct 6 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.32.1-1900.svn2413 +- updated to 1.32.1 + +* Sun Aug 26 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.31.4-1900.svn2386 +- updated to 1.31.4 + +* Sun Jul 22 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.31.0-1801.svn2365 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Sun Jul 1 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.31.0-1800.svn2365 +- updated to 1.31.0 + +* Wed Jun 6 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.30.6-1800.svn2328 +- updated to 1.30.6 + +* Sat May 26 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.30.5-1800.svn2324 +- updated to 1.30.5 (IPv6 server fixes) + +* Sat May 12 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.30.4-1800.svn2318 +- updated to 1.30.4 + +* Thu Apr 5 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.30.1-1800.svn2298 +- updated to 1.30.1 + +* Tue Feb 28 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.29.0-1701.svn2233 +- Rebuilt for c++ ABI breakage + +* Wed Jan 4 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.29.0-1700.svn2233 +- updated to 1.29.0 + +* Mon Oct 3 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.28.1-1700.svn2203 +- updated to 1.28.1 + +* Mon Oct 3 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.27.5-1701.svn2185 +- fixed error handling when transfering too large files (#741980) + +* Sat Aug 27 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.27.5-1700.svn2185 +- updated to 1.27.5 + +* Sun Aug 7 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.27.4-1700.svn2171 +- updated to 1.27.4 + +* Sun Aug 7 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.27.3-1700.svn2145 +- updated to 1.27.3 + +* Mon Jun 27 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.27.0-1600.svn2145 +- updated to 1.27.0 +- made it build with recent curl + +* Mon Jun 13 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.26.3-1600.svn2134 +- updated to 1.26.3 +- removed default-constructor patch; issue is solved upstream + +* Sat Apr 2 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.26.0-1600.svn2188 +- updated to 1.26.0 + +* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.25.1-1501.svn2077 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Jan 6 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.25.1-1500.svn2077 +- updated to 1.25.1 + +* Thu Dec 30 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.25.0-1500.svn2074 +- updated to 1.25.0 + +* Sun Nov 7 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.24.4-1500.svn2042 +- updated to 1.24.4 + +* Sat Oct 9 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.24.1-1500.svn1987 +- updated to 1.24.1 +- set -Wno-uninitialized CFLAGS; code contains lot of constructs + triggering this warning and the 'int a=a' defeaters have been + removed in this version + +* Fri Aug 27 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.23.02-1500.svn1968 +- updated to 1.23.02 (note: this breaks C++ ABI) +- added vasprintf patch + +* Thu Jul 29 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.23.01-1400.svn1958 +- updated to 1.23.01 +- added patch to make curl follow HTTP POST 301 redirects (#618504) + +* Sun Apr 18 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.22.01-1400.svn1907 +- updated to 1.22.01 (svn 1907) + +* Tue Feb 23 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.21.00-1401.1851 +- require the various subpackages explicitly for -devel; the ld linker + scripts broke rpm's autodetection (#567400) +- removed -devel Requires: which are covered by pkgconfig autodeps +- added %%{?_isa} annotations + +* Sun Feb 21 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.21.00-1400.1851 +- made linker scripts more 'ldconfig' friendly + +* Mon Feb 15 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.21.00-1301.1851 +- replaced .so symlinks by linker scripts which add all implicit + dependencies in AS_NEEDED() commands (#564607, #565577) + +* Thu Jan 14 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.21.00-1300.1851 +- updated to 1.21.00 (rev 1851) +- removed curl-trace patch as applied upstream +- rediffed patches + +* Sat Nov 21 2009 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.20.3-1.1841 +- updated to rev1841 +- rediffed patches +- added patch to fix handling of wrong certificates (Nikola Pajkovsky) +- added support for $XMLRPC_TRACE_CURL env (John Dennis) + +* Mon Jul 27 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.16.6-3.1582 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.16.6-2.1582 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Thu Dec 11 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.16.6-1.1582 +- updated to 1.16.6; rediffed patches +- fixed client headers (bug #475887) + +* Sat Nov 15 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.16.4.1567-2 +- updated to 1.16.4 +- rediffed/updated patches +- splitted some subpackages (c++, client) out of main package as they + introduce additional dependencies (c++, curl) + +* Sat Sep 6 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 1.14.8-2 +- fix license tag + +* Sat Jun 21 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.14.8-1 +- updated to 1.14.8 + +* Sun May 25 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.14.6-1 +- updated to 1.14.6 + +* Sat Apr 12 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.14.2-1 +- updated to 1.14.2 +- rediffed patches +- added patch to fix broken usage of 'long long' datatype + +* Mon Mar 17 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.13.8-2 +- fixed cmake quoting so that pkgconfig files get correct version number +- fixed handling of 'server-util' and '--cflags' within xmlrpc-c-config + +* Sun Mar 16 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.13.8-1 +- updated to 1.13.8 +- removed some patches which were applied upstream + +* Tue Feb 26 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.13.07-2 +- moved to advanced branched; rediffed/updated existing cmake patch + and fixed other compilation issues (#369841) + +* Mon Feb 18 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 1.06.23-2 +- Autorebuild for GCC 4.3 + +* Wed Jan 2 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.23-1 +- use correct pkg-config script for 'xmlrpc-config abyss-server' + output (#355411) +- updated to 1.06.23 (#355411) + +* Tue Sep 4 2007 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.18-1 +- updated to 1.06.18 + +* Thu Aug 16 2007 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.17-1 +- updated to 1.06.17 + +* Sun Jul 22 2007 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.16-1 +- updated to 1.06.16 + +* Thu Jun 14 2007 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.14-1 +- updated to 1.06.14 + +* Sun Apr 1 2007 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.11-2 +- rediffed cmake patch against current version +- made the xmlrpc-c-config compatible to the upstream version +- added compatibility symlinks for some header files (thx to Robert de + Vries for reporting these two issues) + +* Sat Mar 17 2007 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.11-1 +- updated to 1.06.11 + +* Sat Feb 3 2007 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.09-1 +- updated to 1.06.09 +- removed -typo patch since applied upstream + +* Mon Nov 6 2006 Jindrich Novy <jnovy@redhat.com> - 1.06.05-3 +- rebuild against the new curl + +* Mon Oct 2 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.05-2 +- updated cmake patch +- strip installed libraries + +* Wed Sep 20 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.05-1 +- updated to 1.06.05 +- merged + updated patches + +* Sat Sep 16 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.04-1 +- updated to 1.06.04 +- patched the broken buildsystem +- disabled libwww backend explicitely + +* Sun Jun 4 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.05-1 +- updated to 1.05 +- updated patches + +* Sat Feb 18 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.04-2 +- rebuilt for FC5 + +* Sun Dec 18 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.04-1 +- added libxml2-devel and openssl-devel Requires: for the -devel + subpackage +- ship doc/* instead of doc +- initial Fedora Extras package (review 175840) + +* Thu Dec 15 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.04-0.1 +- disabled w3c-libwww because it does not exist anymore in FC5 and + seems to be unmaintained upstream +- added missing libxml2-devel +- cleaned up list of %%doc files +- fixed gcc4.1 build issues +- removed static libraries when there exists a corresponding dynamic one + +* Tue Aug 2 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.03.02-1 +- Initial build.