[ros-ros-comm] 10/16: Updated debian patches

Leopold Palomo-Avellaneda leo at alaxarxa.net
Fri May 20 21:20:30 UTC 2016


This is an automated email from the git hooks/post-receive script.

lepalom-guest pushed a commit to branch master
in repository ros-ros-comm.

commit 478ee5b62e42cd24ee5113f1abddb4043f789b25
Author: Leopold Palomo-Avellaneda <leopold.palomo at upc.edu>
Date:   Fri May 20 08:48:42 2016 +0200

    Updated debian patches
---
 debian/patches/0001-Add-CMakeLists.txt.patch       |    4 +-
 .../patches/0002-Add-Debian-specific-SONAMEs.patch |   51 +-
 .../patches/0003-Add-default-ROS_MASTER_URI.patch  |    4 +-
 .../0004-Fix-executable-not-elf-or-script.patch    |    4 +-
 debian/patches/0005-Add-defaults-to-roswtf.patch   |    4 +-
 ...06-Fix-confusing-copyright-messages-dates.patch |    8 +-
 ...=> 0007-Move-headers-to-include-xmlrpcpp.patch} | 1580 +-------------------
 debian/patches/series                              |    2 +-
 8 files changed, 47 insertions(+), 1610 deletions(-)

diff --git a/debian/patches/0001-Add-CMakeLists.txt.patch b/debian/patches/0001-Add-CMakeLists.txt.patch
index f8e7270..5ba804e 100644
--- a/debian/patches/0001-Add-CMakeLists.txt.patch
+++ b/debian/patches/0001-Add-CMakeLists.txt.patch
@@ -1,5 +1,5 @@
-From: Jochen Sprickerhof <git at jochen.sprickerhof.de>
-Date: Mon, 8 Dec 2014 20:02:55 +0100
+From: Leopold Palomo-Avellaneda <leopold.palomo at upc.edu>
+Date: Fri, 20 May 2016 08:16:43 +0200
 Subject: Add CMakeLists.txt
 
 ---
diff --git a/debian/patches/0002-Add-Debian-specific-SONAMEs.patch b/debian/patches/0002-Add-Debian-specific-SONAMEs.patch
index 90903e3..736ceb8 100644
--- a/debian/patches/0002-Add-Debian-specific-SONAMEs.patch
+++ b/debian/patches/0002-Add-Debian-specific-SONAMEs.patch
@@ -1,13 +1,20 @@
 From: Leopold Palomo-Avellaneda <leopold.palomo at upc.edu>
-Date: Thu, 7 Apr 2016 11:08:36 +0200
+Date: Fri, 20 May 2016 08:25:10 +0200
 Subject: Add Debian specific SONAMEs
 
 ---
- clients/roscpp/CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ clients/roscpp/CMakeLists.txt            | 2 +-
+ tools/rosbag/CMakeLists.txt              | 1 +
+ tools/rosbag_storage/CMakeLists.txt      | 1 +
+ tools/rosconsole/CMakeLists.txt          | 3 +++
+ tools/topic_tools/CMakeLists.txt         | 1 +
+ utilities/message_filters/CMakeLists.txt | 1 +
+ utilities/roslz4/CMakeLists.txt          | 1 +
+ utilities/xmlrpcpp/CMakeLists.txt        | 1 +
+ 8 files changed, 10 insertions(+), 1 deletion(-)
 
 diff --git a/clients/roscpp/CMakeLists.txt b/clients/roscpp/CMakeLists.txt
-index c194a56..f4fcbeb 100644
+index 6331029..e6b8ff8 100644
 --- a/clients/roscpp/CMakeLists.txt
 +++ b/clients/roscpp/CMakeLists.txt
 @@ -119,7 +119,7 @@ add_library(roscpp
@@ -20,10 +27,10 @@ index c194a56..f4fcbeb 100644
  
  target_link_libraries(roscpp
 diff --git a/tools/rosbag/CMakeLists.txt b/tools/rosbag/CMakeLists.txt
-index 4d063ea..2cfdcff 100644
+index 8656ac3..19a6ef6 100644
 --- a/tools/rosbag/CMakeLists.txt
 +++ b/tools/rosbag/CMakeLists.txt
-@@ -20,6 +20,7 @@ add_library(rosbag
+@@ -25,6 +25,7 @@ add_library(rosbag
    src/player.cpp
    src/recorder.cpp
    src/time_translator.cpp)
@@ -32,10 +39,10 @@ index 4d063ea..2cfdcff 100644
  target_link_libraries(rosbag ${catkin_LIBRARIES} ${Boost_LIBRARIES})
  
 diff --git a/tools/rosbag_storage/CMakeLists.txt b/tools/rosbag_storage/CMakeLists.txt
-index 4ceee01..053bb35 100644
+index a951ddb..60b3bc7 100644
 --- a/tools/rosbag_storage/CMakeLists.txt
 +++ b/tools/rosbag_storage/CMakeLists.txt
-@@ -33,6 +33,7 @@ add_library(rosbag_storage
+@@ -37,6 +37,7 @@ add_library(rosbag_storage
    src/view.cpp
    src/uncompressed_stream.cpp
  )
@@ -44,10 +51,10 @@ index 4ceee01..053bb35 100644
  target_link_libraries(rosbag_storage ${catkin_LIBRARIES} ${Boost_LIBRARIES} ${BZIP2_LIBRARIES} ${console_bridge_LIBRARIES})
  
 diff --git a/tools/rosconsole/CMakeLists.txt b/tools/rosconsole/CMakeLists.txt
-index f7a4c00..9be7e66 100644
+index d2b34d2..cdd6ccc 100644
 --- a/tools/rosconsole/CMakeLists.txt
 +++ b/tools/rosconsole/CMakeLists.txt
-@@ -63,13 +63,16 @@ ENDIF(${CMAKE_SYSTEM} MATCHES "Darwin-11.*")
+@@ -67,13 +67,16 @@ ENDIF(${CMAKE_SYSTEM} MATCHES "Darwin-11.*")
  include_directories(include ${catkin_INCLUDE_DIRS} ${rosconsole_backend_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS})
  
  add_library(rosconsole_backend_interface src/rosconsole/rosconsole_backend.cpp)
@@ -65,10 +72,10 @@ index f7a4c00..9be7e66 100644
    if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/speed_test.cpp")
      add_executable(rosconsole_speed_test test/speed_test.cpp)
 diff --git a/tools/topic_tools/CMakeLists.txt b/tools/topic_tools/CMakeLists.txt
-index c9d5605..7745299 100644
+index bea81dd..8f0a581 100644
 --- a/tools/topic_tools/CMakeLists.txt
 +++ b/tools/topic_tools/CMakeLists.txt
-@@ -27,6 +27,7 @@ catkin_package(
+@@ -32,6 +32,7 @@ catkin_package(
  catkin_add_env_hooks(20.transform SHELLS bash DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/env-hooks)
  
  add_library(topic_tools src/shape_shifter.cpp src/parse.cpp)
@@ -77,10 +84,10 @@ index c9d5605..7745299 100644
  
  add_executable(switch_mux src/switch_mux.cpp)
 diff --git a/utilities/message_filters/CMakeLists.txt b/utilities/message_filters/CMakeLists.txt
-index c095f0c..a9a54a8 100644
+index 03e906a..b9403b0 100644
 --- a/utilities/message_filters/CMakeLists.txt
 +++ b/utilities/message_filters/CMakeLists.txt
-@@ -14,6 +14,7 @@ include_directories(include ${catkin_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS})
+@@ -19,6 +19,7 @@ include_directories(include ${catkin_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS})
  link_directories(${catkin_LIBRARY_DIRS})
  
  add_library(${PROJECT_NAME} src/connection.cpp)
@@ -89,22 +96,22 @@ index c095f0c..a9a54a8 100644
  
  install(TARGETS ${PROJECT_NAME}
 diff --git a/utilities/roslz4/CMakeLists.txt b/utilities/roslz4/CMakeLists.txt
-index 6e539bf..a3d601f 100644
+index ab1e99f..b0a2f84 100644
 --- a/utilities/roslz4/CMakeLists.txt
 +++ b/utilities/roslz4/CMakeLists.txt
-@@ -23,6 +23,7 @@ catkin_package(
- 
- include_directories(include ${lz4_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS})
- add_library(roslz4 src/lz4s.c src/xxhash.c)
-+set_target_properties(roslz4 PROPERTIES VERSION ${roslz4_VERSION} SOVERSION "1d")
+@@ -30,6 +30,7 @@ add_library(roslz4 src/lz4s.c src/xxhash.c)
+ set_source_files_properties(
+   src/lz4s.c
+ PROPERTIES COMPILE_FLAGS "-Wno-sign-compare")
+++set_target_properties(roslz4 PROPERTIES VERSION ${roslz4_VERSION} SOVERSION "1d")
  target_link_libraries(roslz4 ${lz4_LIBRARIES} ${catkin_LIBRARIES})
  
  if(NOT ANDROID)
 diff --git a/utilities/xmlrpcpp/CMakeLists.txt b/utilities/xmlrpcpp/CMakeLists.txt
-index 89061fd..67b1a4c 100644
+index dfcd0a5..673a924 100644
 --- a/utilities/xmlrpcpp/CMakeLists.txt
 +++ b/utilities/xmlrpcpp/CMakeLists.txt
-@@ -25,6 +25,7 @@ add_library(xmlrpcpp
+@@ -30,6 +30,7 @@ add_library(xmlrpcpp
    src/XmlRpcUtil.cpp
    src/XmlRpcValue.cpp
    )
diff --git a/debian/patches/0003-Add-default-ROS_MASTER_URI.patch b/debian/patches/0003-Add-default-ROS_MASTER_URI.patch
index 1870c70..cb98a9b 100644
--- a/debian/patches/0003-Add-default-ROS_MASTER_URI.patch
+++ b/debian/patches/0003-Add-default-ROS_MASTER_URI.patch
@@ -1,5 +1,5 @@
-From: Jochen Sprickerhof <git at jochen.sprickerhof.de>
-Date: Fri, 12 Dec 2014 09:52:19 +0100
+From: Leopold Palomo-Avellaneda <leopold.palomo at upc.edu>
+Date: Fri, 20 May 2016 08:25:47 +0200
 Subject: Add default ROS_MASTER_URI
 
 ---
diff --git a/debian/patches/0004-Fix-executable-not-elf-or-script.patch b/debian/patches/0004-Fix-executable-not-elf-or-script.patch
index 657a297..5b8982b 100644
--- a/debian/patches/0004-Fix-executable-not-elf-or-script.patch
+++ b/debian/patches/0004-Fix-executable-not-elf-or-script.patch
@@ -1,5 +1,5 @@
-From: Leopold Palomo-Avellaneda <leo at alaxarxa.net>
-Date: Wed, 4 Feb 2015 09:30:17 +0100
+From: Leopold Palomo-Avellaneda <leopold.palomo at upc.edu>
+Date: Fri, 20 May 2016 08:26:15 +0200
 Subject: Fix executable not elf or script
 
 ---
diff --git a/debian/patches/0005-Add-defaults-to-roswtf.patch b/debian/patches/0005-Add-defaults-to-roswtf.patch
index d194bd6..497f61c 100644
--- a/debian/patches/0005-Add-defaults-to-roswtf.patch
+++ b/debian/patches/0005-Add-defaults-to-roswtf.patch
@@ -1,5 +1,5 @@
-From: Jochen Sprickerhof <git at jochen.sprickerhof.de>
-Date: Sun, 15 Nov 2015 21:18:11 +0100
+From: Leopold Palomo-Avellaneda <leopold.palomo at upc.edu>
+Date: Fri, 20 May 2016 08:26:42 +0200
 Subject: Add defaults to roswtf
 
 ---
diff --git a/debian/patches/0006-Fix-confusing-copyright-messages-dates.patch b/debian/patches/0006-Fix-confusing-copyright-messages-dates.patch
index 84a2119..9f8c250 100644
--- a/debian/patches/0006-Fix-confusing-copyright-messages-dates.patch
+++ b/debian/patches/0006-Fix-confusing-copyright-messages-dates.patch
@@ -1,9 +1,7 @@
-From: Debian Science Maintainers
- <debian-science-maintainers at lists.alioth.debian.org>
-Date: Thu, 7 Apr 2016 11:09:19 +0200
-Subject: Fix confusing copyright messages/dates
+From: Leopold Palomo-Avellaneda <leopold.palomo at upc.edu>
+Date: Fri, 20 May 2016 08:27:13 +0200
+Subject: Fix confusing copyright messages dates
 
-Should be upstreamed.
 ---
  test/test_roscpp/test/src/latching_publisher.cpp | 2 +-
  test/test_roscpp/test/src/timer_callbacks.cpp    | 2 +-
diff --git a/debian/patches/0007-move-heaers-to-include-xmlrpcpp.patch b/debian/patches/0007-Move-headers-to-include-xmlrpcpp.patch
similarity index 57%
rename from debian/patches/0007-move-heaers-to-include-xmlrpcpp.patch
rename to debian/patches/0007-Move-headers-to-include-xmlrpcpp.patch
index 510234d..869d097 100644
--- a/debian/patches/0007-move-heaers-to-include-xmlrpcpp.patch
+++ b/debian/patches/0007-Move-headers-to-include-xmlrpcpp.patch
@@ -1,6 +1,6 @@
-From: Jochen Sprickerhof <git at jochen.sprickerhof.de>
-Date: Sat, 16 Jan 2016 11:56:42 +0100
-Subject: move heaers to include/xmlrpcpp
+From: Leopold Palomo-Avellaneda <leopold.palomo at upc.edu>
+Date: Fri, 20 May 2016 08:38:48 +0200
+Subject: Move headers to include xmlrpcpp
 
 ---
  clients/roscpp/include/ros/master.h                |   2 +-
@@ -32,19 +32,6 @@ Subject: move heaers to include/xmlrpcpp
  utilities/xmlrpcpp/include/XmlRpcUtil.h            |  63 ----
  utilities/xmlrpcpp/include/XmlRpcValue.h           | 195 -----------
  utilities/xmlrpcpp/include/base64.h                | 380 ---------------------
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h       | 102 ++++++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcClient.h | 133 ++++++++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDecl.h   |  55 +++
- .../xmlrpcpp/include/xmlrpcpp/XmlRpcDispatch.h     |  89 +++++
- .../xmlrpcpp/include/xmlrpcpp/XmlRpcException.h    |  44 +++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServer.h | 114 +++++++
- .../include/xmlrpcpp/XmlRpcServerConnection.h      | 103 ++++++
- .../xmlrpcpp/include/xmlrpcpp/XmlRpcServerMethod.h |  49 +++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSocket.h |  80 +++++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSource.h |  57 ++++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcUtil.h   |  63 ++++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcValue.h  | 195 +++++++++++
- utilities/xmlrpcpp/include/xmlrpcpp/base64.h       | 380 +++++++++++++++++++++
  utilities/xmlrpcpp/src/XmlRpcClient.cpp            |   6 +-
  utilities/xmlrpcpp/src/XmlRpcDispatch.cpp          |   6 +-
  utilities/xmlrpcpp/src/XmlRpcServer.cpp            |  12 +-
@@ -65,7 +52,7 @@ Subject: move heaers to include/xmlrpcpp
  utilities/xmlrpcpp/test/Validator.cpp              |   2 +-
  utilities/xmlrpcpp/test/bool_test.cpp              |   2 +-
  utilities/xmlrpcpp/test/port_zero_server.cpp       |   2 +-
- 62 files changed, 1519 insertions(+), 1520 deletions(-)
+ 49 files changed, 55 insertions(+), 1520 deletions(-)
  delete mode 100644 utilities/xmlrpcpp/include/XmlRpc.h
  delete mode 100644 utilities/xmlrpcpp/include/XmlRpcClient.h
  delete mode 100644 utilities/xmlrpcpp/include/XmlRpcDecl.h
@@ -79,19 +66,6 @@ Subject: move heaers to include/xmlrpcpp
  delete mode 100644 utilities/xmlrpcpp/include/XmlRpcUtil.h
  delete mode 100644 utilities/xmlrpcpp/include/XmlRpcValue.h
  delete mode 100644 utilities/xmlrpcpp/include/base64.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcClient.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDecl.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDispatch.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcException.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServer.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerConnection.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerMethod.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSocket.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSource.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcUtil.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcValue.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/base64.h
 
 diff --git a/clients/roscpp/include/ros/master.h b/clients/roscpp/include/ros/master.h
 index 9eefdf3..6cabd01 100644
@@ -289,10 +263,10 @@ index a6b7e26..01188a3 100644
  #define foreach BOOST_FOREACH
  
 diff --git a/utilities/xmlrpcpp/CMakeLists.txt b/utilities/xmlrpcpp/CMakeLists.txt
-index a4f6bec..286bcf9 100644
+index 673a924..79b4516 100644
 --- a/utilities/xmlrpcpp/CMakeLists.txt
 +++ b/utilities/xmlrpcpp/CMakeLists.txt
-@@ -35,8 +35,7 @@ if(WIN32)
+@@ -36,8 +36,7 @@ if(WIN32)
    target_link_libraries(xmlrpcpp ws2_32)
  endif()
  
@@ -1844,1548 +1818,6 @@ index c239403..0000000
 -
 -
 -#endif
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h
-new file mode 100644
-index 0000000..9fd626a
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h
-@@ -0,0 +1,102 @@
-+// this file modified by Morgan Quigley on 22 April 2008 to add 
-+// a std::exception-derived class
-+#ifndef _XMLRPC_H_
-+#define _XMLRPC_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+// This library is free software; you can redistribute it and/or
-+// modify it under the terms of the GNU Lesser General Public
-+// License as published by the Free Software Foundation; either
-+// version 2.1 of the License, or (at your option) any later version.
-+// 
-+// This library 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
-+// Lesser General Public License for more details.
-+// 
-+// You should have received a copy of the GNU Lesser General Public
-+// License along with this library; if not, write to the Free Software
-+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
-+// 
-+
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
-+#include "xmlrpcpp/XmlRpcClient.h"
-+#include "xmlrpcpp/XmlRpcException.h"
-+#include "xmlrpcpp/XmlRpcServer.h"
-+#include "xmlrpcpp/XmlRpcServerMethod.h"
-+#include "xmlrpcpp/XmlRpcValue.h"
-+#include "xmlrpcpp/XmlRpcUtil.h"
-+
-+#include <stdexcept>
-+
-+namespace XmlRpc {
-+
-+
-+  //! An interface allowing custom handling of error message reporting.
-+  class XmlRpcErrorHandler {
-+  public:
-+    virtual ~XmlRpcErrorHandler() { }
-+
-+    //! Returns a pointer to the currently installed error handling object.
-+    static XmlRpcErrorHandler* getErrorHandler() 
-+    { return _errorHandler; }
-+
-+    //! Specifies the error handler.
-+    static void setErrorHandler(XmlRpcErrorHandler* eh)
-+    { _errorHandler = eh; }
-+
-+    //! Report an error. Custom error handlers should define this method.
-+    virtual void error(const char* msg) = 0;
-+
-+  protected:
-+    static XmlRpcErrorHandler* _errorHandler;
-+  };
-+
-+  //! An interface allowing custom handling of informational message reporting.
-+  class XmlRpcLogHandler {
-+  public:
-+    virtual ~XmlRpcLogHandler() { }
-+
-+    //! Returns a pointer to the currently installed message reporting object.
-+    static XmlRpcLogHandler* getLogHandler() 
-+    { return _logHandler; }
-+
-+    //! Specifies the message handler.
-+    static void setLogHandler(XmlRpcLogHandler* lh)
-+    { _logHandler = lh; }
-+
-+    //! Returns the level of verbosity of informational messages. 0 is no output, 5 is very verbose.
-+    static int getVerbosity() 
-+    { return _verbosity; }
-+
-+    //! Specify the level of verbosity of informational messages. 0 is no output, 5 is very verbose.
-+    static void setVerbosity(int v) 
-+    { _verbosity = v; }
-+
-+    //! Output a message. Custom error handlers should define this method.
-+    virtual void log(int level, const char* msg) = 0;
-+
-+  protected:
-+    static XmlRpcLogHandler* _logHandler;
-+    static int _verbosity;
-+  };
-+
-+  //! Returns log message verbosity. This is short for XmlRpcLogHandler::getVerbosity()
-+  int getVerbosity();
-+  //! Sets log message verbosity. This is short for XmlRpcLogHandler::setVerbosity(level)
-+  void setVerbosity(int level);
-+
-+
-+  //! Version identifier
-+  extern const char XMLRPC_VERSION[];
-+
-+} // namespace XmlRpc
-+
-+#endif // _XMLRPC_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcClient.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcClient.h
-new file mode 100644
-index 0000000..2154b39
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcClient.h
-@@ -0,0 +1,133 @@
-+
-+#ifndef _XMLRPCCLIENT_H_
-+#define _XMLRPCCLIENT_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
-+#include "xmlrpcpp/XmlRpcDispatch.h"
-+#include "xmlrpcpp/XmlRpcSource.h"
-+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+namespace XmlRpc {
-+
-+  // Arguments and results are represented by XmlRpcValues
-+  class XmlRpcValue;
-+
-+  //! A class to send XML RPC requests to a server and return the results.
-+  class XMLRPCPP_DECL XmlRpcClient : public XmlRpcSource {
-+  public:
-+    // Static data
-+    static const char REQUEST_BEGIN[];
-+    static const char REQUEST_END_METHODNAME[];
-+    static const char PARAMS_TAG[];
-+    static const char PARAMS_ETAG[];
-+    static const char PARAM_TAG[];
-+    static const char PARAM_ETAG[];
-+    static const char REQUEST_END[];
-+    // Result tags
-+    static const char METHODRESPONSE_TAG[];
-+    static const char FAULT_TAG[];
-+
-+    //! Construct a client to connect to the server at the specified host:port address
-+    //!  @param host The name of the remote machine hosting the server
-+    //!  @param port The port on the remote machine where the server is listening
-+    //!  @param uri  An optional string to be sent as the URI in the HTTP GET header
-+    XmlRpcClient(const char* host, int port, const char* uri=0);
-+
-+    //! Destructor
-+    virtual ~XmlRpcClient();
-+
-+    //! Execute the named procedure on the remote server.
-+    //!  @param method The name of the remote procedure to execute
-+    //!  @param params An array of the arguments for the method
-+    //!  @param result The result value to be returned to the client
-+    //!  @return true if the request was sent and a result received 
-+    //!   (although the result might be a fault).
-+    //!
-+    //! Currently this is a synchronous (blocking) implementation (execute
-+    //! does not return until it receives a response or an error). Use isFault()
-+    //! to determine whether the result is a fault response.
-+    bool execute(const char* method, XmlRpcValue const& params, XmlRpcValue& result);
-+
-+    bool executeNonBlock(const char* method, XmlRpcValue const& params);
-+    bool executeCheckDone(XmlRpcValue& result);
-+
-+    //! Returns true if the result of the last execute() was a fault response.
-+    bool isFault() const { return _isFault; }
-+
-+
-+    // XmlRpcSource interface implementation
-+    //! Close the connection
-+    virtual void close();
-+
-+    //! Handle server responses. Called by the event dispatcher during execute.
-+    //!  @param eventType The type of event that occurred. 
-+    //!  @see XmlRpcDispatch::EventType
-+    virtual unsigned handleEvent(unsigned eventType);
-+
-+  protected:
-+    // Execution processing helpers
-+    virtual bool doConnect();
-+    virtual bool setupConnection();
-+
-+    virtual bool generateRequest(const char* method, XmlRpcValue const& params);
-+    virtual std::string generateHeader(std::string const& body);
-+    virtual bool writeRequest();
-+    virtual bool readHeader();
-+    virtual bool readResponse();
-+    virtual bool parseResponse(XmlRpcValue& result);
-+
-+    // Possible IO states for the connection
-+    enum ClientConnectionState { NO_CONNECTION, CONNECTING, WRITE_REQUEST, READ_HEADER, READ_RESPONSE, IDLE };
-+    ClientConnectionState _connectionState;
-+
-+    // Server location
-+    std::string _host;
-+    std::string _uri;
-+    int _port;
-+  public:
-+    const std::string &getHost() { return _host; }
-+    const std::string &getUri()  { return _uri; }
-+    int getPort() const { return _port; }
-+    
-+    // The xml-encoded request, http header of response, and response xml
-+    std::string _request;
-+    std::string _header;
-+    std::string _response;
-+
-+    // Number of times the client has attempted to send the request
-+    int _sendAttempts;
-+
-+    // Number of bytes of the request that have been written to the socket so far
-+    int _bytesWritten;
-+
-+    // True if we are currently executing a request. If you want to multithread,
-+    // each thread should have its own client.
-+    bool _executing;
-+
-+    // True if the server closed the connection
-+    bool _eof;
-+
-+    // True if a fault response was returned by the server
-+    bool _isFault;
-+
-+    // Number of bytes expected in the response body (parsed from response header)
-+    int _contentLength;
-+
-+    // Event dispatcher
-+    XmlRpcDispatch _disp;
-+
-+  };	// class XmlRpcClient
-+
-+}	// namespace XmlRpc
-+
-+#endif	// _XMLRPCCLIENT_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDecl.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDecl.h
-new file mode 100644
-index 0000000..8af174a
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDecl.h
-@@ -0,0 +1,55 @@
-+/*********************************************************************
-+*
-+* Software License Agreement (BSD License)
-+*
-+*  Copyright (c) 2009, Willow Garage, Inc.
-+*  All rights reserved.
-+*
-+*  Redistribution and use in source and binary forms, with or without
-+*  modification, are permitted provided that the following conditions
-+*  are met:
-+*
-+*   * Redistributions of source code must retain the above copyright
-+*     notice, this list of conditions and the following disclaimer.
-+*   * Redistributions in binary form must reproduce the above
-+*     copyright notice, this list of conditions and the following
-+*     disclaimer in the documentation and/or other materials provided
-+*     with the distribution.
-+*   * Neither the name of the Willow Garage nor the names of its
-+*     contributors may be used to endorse or promote products derived
-+*     from this software without specific prior written permission.
-+*
-+*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+*  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+*  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-+*  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-+*  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-+*  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-+*  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-+*  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-+*  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+*  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-+*  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-+*  POSSIBILITY OF SUCH DAMAGE.
-+*
-+*********************************************************************/
-+/*
-+ * Cross platform macros.
-+ *
-+ */
-+#ifndef XMLRPCPP_DECL_H_INCLUDED
-+#define XMLRPCPP_DECL_H_INCLUDED
-+
-+#include <ros/macros.h>
-+
-+#ifdef ROS_BUILD_SHARED_LIBS // ros is being built around shared libraries
-+  #ifdef xmlrpcpp_EXPORTS // we are building a shared lib/dll
-+    #define XMLRPCPP_DECL ROS_HELPER_EXPORT
-+  #else // we are using shared lib/dll
-+    #define XMLRPCPP_DECL ROS_HELPER_IMPORT
-+  #endif
-+#else // ros is being built around static libraries
-+  #define XMLRPCPP_DECL
-+#endif
-+
-+#endif /* XMLRPCPP_DECL_H_INCLUDED */
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDispatch.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDispatch.h
-new file mode 100644
-index 0000000..5e90822
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDispatch.h
-@@ -0,0 +1,89 @@
-+
-+#ifndef _XMLRPCDISPATCH_H_
-+#define _XMLRPCDISPATCH_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+#ifndef MAKEDEPEND
-+# include <list>
-+#endif
-+
-+namespace XmlRpc {
-+
-+  // An RPC source represents a file descriptor to monitor
-+  class XmlRpcSource;
-+
-+  //! An object which monitors file descriptors for events and performs
-+  //! callbacks when interesting events happen.
-+  class XMLRPCPP_DECL XmlRpcDispatch {
-+  public:
-+    //! Constructor
-+    XmlRpcDispatch();
-+    ~XmlRpcDispatch();
-+
-+    //! Values indicating the type of events a source is interested in
-+    enum EventType {
-+      ReadableEvent = 1,    //!< data available to read
-+      WritableEvent = 2,    //!< connected/data can be written without blocking
-+      Exception     = 4     //!< uh oh
-+    };
-+    
-+    //! Monitor this source for the event types specified by the event mask
-+    //! and call its event handler when any of the events occur.
-+    //!  @param source The source to monitor
-+    //!  @param eventMask Which event types to watch for. \see EventType
-+    void addSource(XmlRpcSource* source, unsigned eventMask);
-+
-+    //! Stop monitoring this source.
-+    //!  @param source The source to stop monitoring
-+    void removeSource(XmlRpcSource* source);
-+
-+    //! Modify the types of events to watch for on this source
-+    void setSourceEvents(XmlRpcSource* source, unsigned eventMask);
-+
-+
-+    //! Watch current set of sources and process events for the specified
-+    //! duration (in ms, -1 implies wait forever, or until exit is called)
-+    void work(double msTime);
-+
-+    //! Exit from work routine
-+    void exit();
-+
-+    //! Clear all sources from the monitored sources list. Sources are closed.
-+    void clear();
-+
-+    // helper
-+    double getTime();
-+
-+    // A source to monitor and what to monitor it for
-+    struct MonitoredSource {
-+      MonitoredSource(XmlRpcSource* src, unsigned mask) : _src(src), _mask(mask) {}
-+      XmlRpcSource* getSource() const { return _src; }
-+      unsigned& getMask() { return _mask; }
-+      XmlRpcSource* _src;
-+      unsigned _mask;
-+    };
-+
-+    // A list of sources to monitor
-+    typedef std::list< MonitoredSource > SourceList; 
-+
-+    // Sources being monitored
-+    SourceList _sources;
-+  protected:
-+
-+    // When work should stop (-1 implies wait forever, or until exit is called)
-+    double _endTime;
-+
-+    bool _doClear;
-+    bool _inWork;
-+
-+  };
-+} // namespace XmlRpc
-+
-+#endif  // _XMLRPCDISPATCH_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcException.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcException.h
-new file mode 100644
-index 0000000..4e8a2a6
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcException.h
-@@ -0,0 +1,44 @@
-+
-+#ifndef _XMLRPCEXCEPTION_H_
-+#define _XMLRPCEXCEPTION_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
-+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+
-+namespace XmlRpc {
-+
-+  //! A class representing an error.
-+  //! If server methods throw this exception, a fault response is returned
-+  //! to the client.
-+  class XMLRPCPP_DECL XmlRpcException {
-+  public:
-+    //! Constructor
-+    //!   @param message  A descriptive error message
-+    //!   @param code     An integer error code
-+    XmlRpcException(const std::string& message, int code=-1) :
-+        _message(message), _code(code) {}
-+
-+    //! Return the error message.
-+    const std::string& getMessage() const { return _message; }
-+
-+    //! Return the error code.
-+    int getCode() const { return _code; }
-+
-+  private:
-+    std::string _message;
-+    int _code;
-+  };
-+
-+}
-+
-+#endif	// _XMLRPCEXCEPTION_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServer.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServer.h
-new file mode 100644
-index 0000000..ac16dae
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServer.h
-@@ -0,0 +1,114 @@
-+// this file modified by Morgan Quigley on 22 Apr 2008.
-+// added features: server can be opened on port 0 and you can read back
-+// what port the OS gave you
-+
-+#ifndef _XMLRPCSERVER_H_
-+#define _XMLRPCSERVER_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <map>
-+# include <string>
-+#endif
-+
-+#include "xmlrpcpp/XmlRpcDispatch.h"
-+#include "xmlrpcpp/XmlRpcSource.h"
-+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+namespace XmlRpc {
-+
-+
-+  // An abstract class supporting XML RPC methods
-+  class XmlRpcServerMethod;
-+
-+  // Class representing connections to specific clients
-+  class XmlRpcServerConnection;
-+
-+  // Class representing argument and result values
-+  class XmlRpcValue;
-+
-+
-+  //! A class to handle XML RPC requests
-+  class XMLRPCPP_DECL XmlRpcServer : public XmlRpcSource {
-+  public:
-+    //! Create a server object.
-+    XmlRpcServer();
-+    //! Destructor.
-+    virtual ~XmlRpcServer();
-+
-+    //! Specify whether introspection is enabled or not. Default is not enabled.
-+    void enableIntrospection(bool enabled=true);
-+
-+    //! Add a command to the RPC server
-+    void addMethod(XmlRpcServerMethod* method);
-+
-+    //! Remove a command from the RPC server
-+    void removeMethod(XmlRpcServerMethod* method);
-+
-+    //! Remove a command from the RPC server by name
-+    void removeMethod(const std::string& methodName);
-+
-+    //! Look up a method by name
-+    XmlRpcServerMethod* findMethod(const std::string& name) const;
-+
-+    //! Create a socket, bind to the specified port, and
-+    //! set it in listen mode to make it available for clients.
-+    bool bindAndListen(int port, int backlog = 5);
-+
-+    //! Process client requests for the specified time
-+    void work(double msTime);
-+
-+    //! Temporarily stop processing client requests and exit the work() method.
-+    void exit();
-+
-+    //! Close all connections with clients and the socket file descriptor
-+    void shutdown();
-+
-+    //! Introspection support
-+    void listMethods(XmlRpcValue& result);
-+
-+    // XmlRpcSource interface implementation
-+
-+    //! Handle client connection requests
-+    virtual unsigned handleEvent(unsigned eventType);
-+
-+    //! Remove a connection from the dispatcher
-+    virtual void removeConnection(XmlRpcServerConnection*);
-+
-+    inline int get_port() { return _port; }
-+
-+    XmlRpcDispatch *get_dispatch() { return &_disp; }
-+
-+  protected:
-+
-+    //! Accept a client connection request
-+    virtual void acceptConnection();
-+
-+    //! Create a new connection object for processing requests from a specific client.
-+    virtual XmlRpcServerConnection* createConnection(int socket);
-+
-+    // Whether the introspection API is supported by this server
-+    bool _introspectionEnabled;
-+
-+    // Event dispatcher
-+    XmlRpcDispatch _disp;
-+
-+    // Collection of methods. This could be a set keyed on method name if we wanted...
-+    typedef std::map< std::string, XmlRpcServerMethod* > MethodMap;
-+    MethodMap _methods;
-+
-+    // system methods
-+    XmlRpcServerMethod* _listMethods;
-+    XmlRpcServerMethod* _methodHelp;
-+
-+    int _port;
-+
-+  };
-+} // namespace XmlRpc
-+
-+#endif //_XMLRPCSERVER_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerConnection.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerConnection.h
-new file mode 100644
-index 0000000..ed4d092
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerConnection.h
-@@ -0,0 +1,103 @@
-+#ifndef _XMLRPCSERVERCONNECTION_H_
-+#define _XMLRPCSERVERCONNECTION_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
-+#include "xmlrpcpp/XmlRpcValue.h"
-+#include "xmlrpcpp/XmlRpcSource.h"
-+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+namespace XmlRpc {
-+
-+
-+  // The server waits for client connections and provides methods
-+  class XmlRpcServer;
-+  class XmlRpcServerMethod;
-+
-+  //! A class to handle XML RPC requests from a particular client
-+  class XMLRPCPP_DECL XmlRpcServerConnection : public XmlRpcSource {
-+  public:
-+    // Static data
-+    static const char METHODNAME_TAG[];
-+    static const char PARAMS_TAG[];
-+    static const char PARAMS_ETAG[];
-+    static const char PARAM_TAG[];
-+    static const char PARAM_ETAG[];
-+
-+    static const std::string SYSTEM_MULTICALL;
-+    static const std::string METHODNAME;
-+    static const std::string PARAMS;
-+
-+    static const std::string FAULTCODE;
-+    static const std::string FAULTSTRING;
-+
-+    //! Constructor
-+    XmlRpcServerConnection(int fd, XmlRpcServer* server, bool deleteOnClose = false);
-+    //! Destructor
-+    virtual ~XmlRpcServerConnection();
-+
-+    // XmlRpcSource interface implementation
-+    //! Handle IO on the client connection socket.
-+    //!   @param eventType Type of IO event that occurred. @see XmlRpcDispatch::EventType.
-+    virtual unsigned handleEvent(unsigned eventType);
-+
-+  protected:
-+
-+    bool readHeader();
-+    bool readRequest();
-+    bool writeResponse();
-+
-+    // Parses the request, runs the method, generates the response xml.
-+    virtual void executeRequest();
-+
-+    // Parse the methodName and parameters from the request.
-+    std::string parseRequest(XmlRpcValue& params);
-+
-+    // Execute a named method with the specified params.
-+    bool executeMethod(const std::string& methodName, XmlRpcValue& params, XmlRpcValue& result);
-+
-+    // Execute multiple calls and return the results in an array.
-+    bool executeMulticall(const std::string& methodName, XmlRpcValue& params, XmlRpcValue& result);
-+
-+    // Construct a response from the result XML.
-+    void generateResponse(std::string const& resultXml);
-+    void generateFaultResponse(std::string const& msg, int errorCode = -1);
-+    std::string generateHeader(std::string const& body);
-+
-+
-+    // The XmlRpc server that accepted this connection
-+    XmlRpcServer* _server;
-+
-+    // Possible IO states for the connection
-+    enum ServerConnectionState { READ_HEADER, READ_REQUEST, WRITE_RESPONSE };
-+    ServerConnectionState _connectionState;
-+
-+    // Request headers
-+    std::string _header;
-+
-+    // Number of bytes expected in the request body (parsed from header)
-+    int _contentLength;
-+
-+    // Request body
-+    std::string _request;
-+
-+    // Response
-+    std::string _response;
-+
-+    // Number of bytes of the response written so far
-+    int _bytesWritten;
-+
-+    // Whether to keep the current client connection open for further requests
-+    bool _keepAlive;
-+  };
-+} // namespace XmlRpc
-+
-+#endif // _XMLRPCSERVERCONNECTION_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerMethod.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerMethod.h
-new file mode 100644
-index 0000000..90dddcd
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerMethod.h
-@@ -0,0 +1,49 @@
-+
-+#ifndef _XMLRPCSERVERMETHOD_H_
-+#define _XMLRPCSERVERMETHOD_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
-+namespace XmlRpc {
-+
-+  // Representation of a parameter or result value
-+  class XmlRpcValue;
-+
-+  // The XmlRpcServer processes client requests to call RPCs
-+  class XmlRpcServer;
-+
-+  //! Abstract class representing a single RPC method
-+  class XMLRPCPP_DECL XmlRpcServerMethod {
-+  public:
-+    //! Constructor
-+    XmlRpcServerMethod(std::string const& name, XmlRpcServer* server = 0);
-+    //! Destructor
-+    virtual ~XmlRpcServerMethod();
-+
-+    //! Returns the name of the method
-+    std::string& name() { return _name; }
-+
-+    //! Execute the method. Subclasses must provide a definition for this method.
-+    virtual void execute(XmlRpcValue& params, XmlRpcValue& result) = 0;
-+
-+    //! Returns a help string for the method.
-+    //! Subclasses should define this method if introspection is being used.
-+    virtual std::string help() { return std::string(); }
-+
-+  protected:
-+    std::string _name;
-+    XmlRpcServer* _server;
-+  };
-+} // namespace XmlRpc
-+
-+#endif // _XMLRPCSERVERMETHOD_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSocket.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSocket.h
-new file mode 100644
-index 0000000..bc9a530
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSocket.h
-@@ -0,0 +1,80 @@
-+// this file modified by Morgan Quigley on 22 Apr 2008.
-+// added features: server can be opened on port 0 and you can read back
-+// what port the OS gave you
-+
-+#ifndef _XMLRPCSOCKET_H_
-+#define _XMLRPCSOCKET_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
-+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+namespace XmlRpc {
-+
-+  //! A platform-independent socket API.
-+  class XMLRPCPP_DECL XmlRpcSocket {
-+  public:
-+
-+    static bool s_use_ipv6_;
-+
-+    //! Creates a stream (TCP) socket. Returns -1 on failure.
-+    static int socket();
-+
-+    //! Closes a socket.
-+    static void close(int socket);
-+
-+
-+    //! Sets a stream (TCP) socket to perform non-blocking IO. Returns false on failure.
-+    static bool setNonBlocking(int socket);
-+
-+    //! Read text from the specified socket. Returns false on error.
-+    static bool nbRead(int socket, std::string& s, bool *eof);
-+
-+    //! Write text to the specified socket. Returns false on error.
-+    static bool nbWrite(int socket, std::string& s, int *bytesSoFar);
-+
-+
-+    // The next four methods are appropriate for servers.
-+
-+    //! Allow the port the specified socket is bound to to be re-bound immediately so 
-+    //! server re-starts are not delayed. Returns false on failure.
-+    static bool setReuseAddr(int socket);
-+
-+    //! Bind to a specified port
-+    static bool bind(int socket, int port);
-+    
-+    static int get_port(int socket);
-+
-+    //! Set socket in listen mode
-+    static bool listen(int socket, int backlog);
-+
-+    //! Accept a client connection request
-+    static int accept(int socket);
-+
-+
-+
-+    //! Connect a socket to a server (from a client)
-+    static bool connect(int socket, std::string& host, int port);
-+
-+
-+    //! Returns last errno
-+    static int getError();
-+
-+    //! Returns message corresponding to last error
-+    static std::string getErrorMsg();
-+
-+    //! Returns message corresponding to error
-+    static std::string getErrorMsg(int error);
-+  };
-+
-+} // namespace XmlRpc
-+
-+#endif
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSource.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSource.h
-new file mode 100644
-index 0000000..217f416
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSource.h
-@@ -0,0 +1,57 @@
-+
-+#ifndef _XMLRPCSOURCE_H_
-+#define _XMLRPCSOURCE_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+namespace XmlRpc {
-+
-+  //! An RPC source represents a file descriptor to monitor
-+  class XMLRPCPP_DECL XmlRpcSource {
-+  public:
-+    //! Constructor
-+    //!  @param fd The socket file descriptor to monitor.
-+    //!  @param deleteOnClose If true, the object deletes itself when close is called.
-+    XmlRpcSource(int fd = -1, bool deleteOnClose = false);
-+
-+    //! Destructor
-+    virtual ~XmlRpcSource();
-+
-+    //! Return the file descriptor being monitored.
-+    int getfd() const { return _fd; }
-+    //! Specify the file descriptor to monitor.
-+    void setfd(int fd) { _fd = fd; }
-+
-+    //! Return whether the file descriptor should be kept open if it is no longer monitored.
-+    bool getKeepOpen() const { return _keepOpen; }
-+    //! Specify whether the file descriptor should be kept open if it is no longer monitored.
-+    void setKeepOpen(bool b=true) { _keepOpen = b; }
-+
-+    //! Close the owned fd. If deleteOnClose was specified at construction, the object is deleted.
-+    virtual void close();
-+
-+    //! Return true to continue monitoring this source
-+    virtual unsigned handleEvent(unsigned eventType) = 0;
-+
-+  private:
-+
-+    // Socket. This should really be a SOCKET (an alias for unsigned int*) on windows...
-+    int _fd;
-+
-+    // In the server, a new source (XmlRpcServerConnection) is created
-+    // for each connected client. When each connection is closed, the
-+    // corresponding source object is deleted.
-+    bool _deleteOnClose;
-+
-+    // In the client, keep connections open if you intend to make multiple calls.
-+    bool _keepOpen;
-+  };
-+} // namespace XmlRpc
-+
-+#endif //_XMLRPCSOURCE_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcUtil.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcUtil.h
-new file mode 100644
-index 0000000..acde160
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcUtil.h
-@@ -0,0 +1,63 @@
-+#ifndef _XMLRPCUTIL_H_
-+#define _XMLRPCUTIL_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
-+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+#if defined(_MSC_VER)
-+# define snprintf	    _snprintf_s
-+# define vsnprintf    _vsnprintf_s
-+# define strcasecmp	  _stricmp
-+# define strncasecmp	_strnicmp
-+#elif defined(__BORLANDC__)
-+# define strcasecmp stricmp
-+# define strncasecmp strnicmp
-+#endif
-+
-+namespace XmlRpc {
-+
-+  //! Utilities for XML parsing, encoding, and decoding and message handlers.
-+  class XMLRPCPP_DECL XmlRpcUtil {
-+  public:
-+    // hokey xml parsing
-+    //! Returns contents between <tag> and </tag>, updates offset to char after </tag>
-+    static std::string parseTag(const char* tag, std::string const& xml, int* offset);
-+
-+    //! Returns true if the tag is found and updates offset to the char after the tag
-+    static bool findTag(const char* tag, std::string const& xml, int* offset);
-+
-+    //! Returns the next tag and updates offset to the char after the tag, or empty string
-+    //! if the next non-whitespace character is not '<'
-+    static std::string getNextTag(std::string const& xml, int* offset);
-+
-+    //! Returns true if the tag is found at the specified offset (modulo any whitespace)
-+    //! and updates offset to the char after the tag
-+    static bool nextTagIs(const char* tag, std::string const& xml, int* offset);
-+
-+
-+    //! Convert raw text to encoded xml.
-+    static std::string xmlEncode(const std::string& raw);
-+
-+    //! Convert encoded xml to raw text
-+    static std::string xmlDecode(const std::string& encoded);
-+
-+
-+    //! Dump messages somewhere
-+    static void log(int level, const char* fmt, ...);
-+
-+    //! Dump error messages somewhere
-+    static void error(const char* fmt, ...);
-+
-+  };
-+} // namespace XmlRpc
-+
-+#endif // _XMLRPCUTIL_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcValue.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcValue.h
-new file mode 100644
-index 0000000..0d72c59
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcValue.h
-@@ -0,0 +1,195 @@
-+
-+#ifndef _XMLRPCVALUE_H_
-+#define _XMLRPCVALUE_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#include "xmlrpcpp/XmlRpcDecl.h"
-+
-+#ifndef MAKEDEPEND
-+# include <map>
-+# include <string>
-+# include <vector>
-+# include <time.h>
-+#endif
-+
-+namespace XmlRpc {
-+
-+  //! RPC method arguments and results are represented by Values
-+  //   should probably refcount them...
-+  class XMLRPCPP_DECL XmlRpcValue {
-+  public:
-+
-+
-+    enum Type {
-+      TypeInvalid,
-+      TypeBoolean,
-+      TypeInt,
-+      TypeDouble,
-+      TypeString,
-+      TypeDateTime,
-+      TypeBase64,
-+      TypeArray,
-+      TypeStruct
-+    };
-+
-+    // Non-primitive types
-+    typedef std::vector<char> BinaryData;
-+    typedef std::vector<XmlRpcValue> ValueArray;
-+    typedef std::map<std::string, XmlRpcValue> ValueStruct;
-+    typedef ValueStruct::iterator iterator;
-+
-+
-+    //! Constructors
-+    XmlRpcValue() : _type(TypeInvalid) { _value.asBinary = 0; }
-+    XmlRpcValue(bool value) : _type(TypeBoolean) { _value.asBool = value; }
-+    XmlRpcValue(int value)  : _type(TypeInt) { _value.asInt = value; }
-+    XmlRpcValue(double value)  : _type(TypeDouble) { _value.asDouble = value; }
-+
-+    XmlRpcValue(std::string const& value) : _type(TypeString) 
-+    { _value.asString = new std::string(value); }
-+
-+    XmlRpcValue(const char* value)  : _type(TypeString)
-+    { _value.asString = new std::string(value); }
-+
-+    XmlRpcValue(struct tm* value)  : _type(TypeDateTime) 
-+    { _value.asTime = new struct tm(*value); }
-+
-+
-+    XmlRpcValue(void* value, int nBytes)  : _type(TypeBase64)
-+    {
-+      _value.asBinary = new BinaryData((char*)value, ((char*)value)+nBytes);
-+    }
-+
-+    //! Construct from xml, beginning at *offset chars into the string, updates offset
-+    XmlRpcValue(std::string const& xml, int* offset) : _type(TypeInvalid)
-+    { if ( ! fromXml(xml,offset)) _type = TypeInvalid; }
-+
-+    //! Copy
-+    XmlRpcValue(XmlRpcValue const& rhs) : _type(TypeInvalid) { *this = rhs; }
-+
-+    //! Destructor (make virtual if you want to subclass)
-+    /*virtual*/ ~XmlRpcValue() { invalidate(); }
-+
-+    //! Erase the current value
-+    void clear() { invalidate(); }
-+
-+    // Operators
-+    XmlRpcValue& operator=(XmlRpcValue const& rhs);
-+    XmlRpcValue& operator=(int const& rhs) { return operator=(XmlRpcValue(rhs)); }
-+    XmlRpcValue& operator=(double const& rhs) { return operator=(XmlRpcValue(rhs)); }
-+    XmlRpcValue& operator=(const char* rhs) { return operator=(XmlRpcValue(std::string(rhs))); }
-+
-+    bool operator==(XmlRpcValue const& other) const;
-+    bool operator!=(XmlRpcValue const& other) const;
-+
-+    operator bool&()          { assertTypeOrInvalid(TypeBoolean); return _value.asBool; }
-+    operator int&()           { assertTypeOrInvalid(TypeInt); return _value.asInt; }
-+    operator double&()        { assertTypeOrInvalid(TypeDouble); return _value.asDouble; }
-+    operator std::string&()   { assertTypeOrInvalid(TypeString); return *_value.asString; }
-+    operator BinaryData&()    { assertTypeOrInvalid(TypeBase64); return *_value.asBinary; }
-+    operator struct tm&()     { assertTypeOrInvalid(TypeDateTime); return *_value.asTime; }
-+
-+    XmlRpcValue const& operator[](int i) const { assertArray(i+1); return _value.asArray->at(i); }
-+    XmlRpcValue& operator[](int i)             { assertArray(i+1); return _value.asArray->at(i); }
-+
-+    XmlRpcValue& operator[](std::string const& k) { assertStruct(); return (*_value.asStruct)[k]; }
-+    XmlRpcValue& operator[](const char* k) { assertStruct(); std::string s(k); return (*_value.asStruct)[s]; }
-+
-+    iterator begin() {assertStruct(); return (*_value.asStruct).begin(); }
-+    iterator end() {assertStruct(); return (*_value.asStruct).end(); }
-+
-+    // Accessors
-+    //! Return true if the value has been set to something.
-+    bool valid() const { return _type != TypeInvalid; }
-+
-+    //! Return the type of the value stored. \see Type.
-+    Type const &getType() const { return _type; }
-+
-+    //! Return the size for string, base64, array, and struct values.
-+    int size() const;
-+
-+    //! Specify the size for array values. Array values will grow beyond this size if needed.
-+    void setSize(int size)    { assertArray(size); }
-+
-+    //! Check for the existence of a struct member by name.
-+    bool hasMember(const std::string& name) const;
-+
-+    //! Decode xml. Destroys any existing value.
-+    bool fromXml(std::string const& valueXml, int* offset);
-+
-+    //! Encode the Value in xml
-+    std::string toXml() const;
-+
-+    //! Write the value (no xml encoding)
-+    std::ostream& write(std::ostream& os) const;
-+
-+    // Formatting
-+    //! Return the format used to write double values.
-+    static std::string const& getDoubleFormat() { return _doubleFormat; }
-+
-+    //! Specify the format used to write double values.
-+    static void setDoubleFormat(const char* f) { _doubleFormat = f; }
-+
-+
-+  protected:
-+    // Clean up
-+    void invalidate();
-+
-+    // Type checking
-+    void assertTypeOrInvalid(Type t);
-+    void assertArray(int size) const;
-+    void assertArray(int size);
-+    void assertStruct();
-+
-+    // XML decoding
-+    bool boolFromXml(std::string const& valueXml, int* offset);
-+    bool intFromXml(std::string const& valueXml, int* offset);
-+    bool doubleFromXml(std::string const& valueXml, int* offset);
-+    bool stringFromXml(std::string const& valueXml, int* offset);
-+    bool timeFromXml(std::string const& valueXml, int* offset);
-+    bool binaryFromXml(std::string const& valueXml, int* offset);
-+    bool arrayFromXml(std::string const& valueXml, int* offset);
-+    bool structFromXml(std::string const& valueXml, int* offset);
-+
-+    // XML encoding
-+    std::string boolToXml() const;
-+    std::string intToXml() const;
-+    std::string doubleToXml() const;
-+    std::string stringToXml() const;
-+    std::string timeToXml() const;
-+    std::string binaryToXml() const;
-+    std::string arrayToXml() const;
-+    std::string structToXml() const;
-+
-+    // Format strings
-+    static std::string _doubleFormat;
-+
-+    // Type tag and values
-+    Type _type;
-+
-+    // At some point I will split off Arrays and Structs into
-+    // separate ref-counted objects for more efficient copying.
-+    union {
-+      bool          asBool;
-+      int           asInt;
-+      double        asDouble;
-+      struct tm*    asTime;
-+      std::string*  asString;
-+      BinaryData*   asBinary;
-+      ValueArray*   asArray;
-+      ValueStruct*  asStruct;
-+    } _value;
-+    
-+  };
-+} // namespace XmlRpc
-+
-+
-+std::ostream& operator<<(std::ostream& os, XmlRpc::XmlRpcValue& v);
-+
-+
-+#endif // _XMLRPCVALUE_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/base64.h b/utilities/xmlrpcpp/include/xmlrpcpp/base64.h
-new file mode 100644
-index 0000000..c239403
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/base64.h
-@@ -0,0 +1,380 @@
-+
-+
-+//  base64.hpp 
-+//  Autor Konstantin Pilipchuk
-+//  mailto:lostd at ukr.net
-+//
-+//
-+
-+#if !defined(__BASE64_H_INCLUDED__)
-+#define __BASE64_H_INCLUDED__ 1
-+
-+#ifndef MAKEDEPEND
-+# include <iterator>
-+#endif
-+
-+#include <ios>
-+
-+static
-+int _base64Chars[]= {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
-+				     'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
-+			         '0','1','2','3','4','5','6','7','8','9',
-+			         '+','/' };
-+
-+
-+#define _0000_0011 0x03
-+#define _1111_1100 0xFC
-+#define _1111_0000 0xF0
-+#define _0011_0000 0x30
-+#define _0011_1100 0x3C
-+#define _0000_1111 0x0F
-+#define _1100_0000 0xC0
-+#define _0011_1111 0x3F
-+
-+#define _EQUAL_CHAR   (-1)
-+#define _UNKNOWN_CHAR (-2)
-+
-+#define _IOS_FAILBIT   std::ios_base::failbit
-+#define _IOS_EOFBIT    std::ios_base::eofbit
-+#define _IOS_BADBIT    std::ios_base::badbit
-+#define _IOS_GOODBIT   std::ios_base::goodbit
-+
-+// TEMPLATE CLASS base64_put
-+template<class _E = char, class _Tr = std::char_traits<_E> >
-+class base64
-+{
-+public:
-+
-+	typedef unsigned char byte_t;
-+	typedef _E            char_type;
-+	typedef _Tr           traits_type; 
-+
-+	// base64 requires max line length <= 72 characters
-+	// you can fill end of line
-+	// it may be crlf, crlfsp, noline or other class like it
-+
-+
-+	struct crlf
-+	{
-+		template<class _OI>
-+			_OI operator()(_OI _To) const{
-+			*_To = _Tr::to_char_type('\r'); ++_To;
-+			*_To = _Tr::to_char_type('\n'); ++_To;
-+
-+			return (_To);
-+		}
-+	};
-+
-+
-+	struct crlfsp
-+	{
-+		template<class _OI>
-+			_OI operator()(_OI _To) const{
-+			*_To = _Tr::to_char_type('\r'); ++_To;
-+			*_To = _Tr::to_char_type('\n'); ++_To;
-+			*_To = _Tr::to_char_type(' '); ++_To;
-+
-+			return (_To);
-+		}
-+	};
-+
-+	struct noline
-+	{
-+		template<class _OI>
-+			_OI operator()(_OI _To) const{
-+			return (_To);
-+		}
-+	};
-+
-+	struct three2four
-+	{
-+		void zero()
-+		{
-+			_data[0] = 0;
-+			_data[1] = 0;
-+			_data[2] = 0;
-+		}
-+
-+		byte_t get_0()	const
-+		{
-+			return _data[0];
-+		}
-+		byte_t get_1()	const
-+		{
-+			return _data[1];
-+		}
-+		byte_t get_2()	const
-+		{
-+			return _data[2];
-+		}
-+
-+		void set_0(byte_t _ch)
-+		{
-+			_data[0] = _ch;
-+		}
-+
-+		void set_1(byte_t _ch)
-+		{
-+			_data[1] = _ch;
-+		}
-+
-+		void set_2(byte_t _ch)
-+		{
-+			_data[2] = _ch;
-+		}
-+
-+		// 0000 0000  1111 1111  2222 2222
-+		// xxxx xxxx  xxxx xxxx  xxxx xxxx
-+		// 0000 0011  1111 2222  2233 3333
-+
-+		int b64_0()	const	{return (_data[0] & _1111_1100) >> 2;}
-+		int b64_1()	const	{return ((_data[0] & _0000_0011) << 4) + ((_data[1] & _1111_0000)>>4);}
-+		int b64_2()	const	{return ((_data[1] & _0000_1111) << 2) + ((_data[2] & _1100_0000)>>6);}
-+		int b64_3()	const	{return (_data[2] & _0011_1111);}
-+
-+		void b64_0(int _ch)	{_data[0] = ((_ch & _0011_1111) << 2) | (_0000_0011 & _data[0]);}
-+
-+		void b64_1(int _ch)	{
-+			_data[0] = ((_ch & _0011_0000) >> 4) | (_1111_1100 & _data[0]);
-+			_data[1] = ((_ch & _0000_1111) << 4) | (_0000_1111 & _data[1]);	}
-+
-+		void b64_2(int _ch)	{
-+			_data[1] = ((_ch & _0011_1100) >> 2) | (_1111_0000 & _data[1]);
-+			_data[2] = ((_ch & _0000_0011) << 6) | (_0011_1111 & _data[2]);	}
-+
-+		void b64_3(int _ch){
-+			_data[2] = (_ch & _0011_1111) | (_1100_0000 & _data[2]);}
-+
-+	private:
-+		byte_t _data[3];
-+
-+	};
-+
-+
-+
-+
-+	template<class _II, class _OI, class _State, class _Endline>
-+        _II put(_II _First, _II _Last, _OI _To, _State&, _Endline)  const
-+	{
-+		three2four _3to4;
-+		int line_octets = 0;
-+
-+		while(_First != _Last)
-+		{
-+			_3to4.zero();
-+
-+			_3to4.set_0(*_First);
-+			_First++;
-+
-+			if(_First == _Last)
-+			{
-+				*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_0()]); ++_To;
-+				*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_1()]); ++_To;
-+				*_To = _Tr::to_char_type('='); ++_To;
-+				*_To = _Tr::to_char_type('='); ++_To;
-+				goto __end;
-+			}
-+
-+			_3to4.set_1(*_First);
-+			_First++;
-+
-+			if(_First == _Last)
-+			{
-+				*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_0()]); ++_To;
-+				*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_1()]); ++_To;
-+				*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_2()]); ++_To;
-+				*_To = _Tr::to_char_type('='); ++_To;
-+				goto __end;
-+			}
-+
-+			_3to4.set_2(*_First);
-+			_First++;
-+
-+			*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_0()]); ++_To;
-+			*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_1()]); ++_To;
-+			*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_2()]); ++_To;
-+			*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_3()]); ++_To;
-+
-+			if(line_octets == 17)
-+			{
-+                                //_To = _Endl(_To);
-+                                *_To = '\n'; ++_To;
-+                                line_octets = 0;
-+			}
-+			else
-+				++line_octets;
-+		}
-+
-+		__end: ;
-+
-+		return (_First);
-+
-+	}
-+
-+
-+	template<class _II, class _OI, class _State>
-+		_II get(_II _First, _II _Last, _OI _To, _State& _St) const
-+	{
-+		three2four _3to4;
-+		int _Char;
-+
-+		while(_First != _Last)
-+		{
-+
-+			// Take octet
-+			_3to4.zero();
-+
-+			// -- 0 --
-+			// Search next valid char... 
-+			while((_Char =  _getCharType(*_First)) < 0 && _Char == _UNKNOWN_CHAR)
-+			{
-+				if(++_First == _Last)
-+				{
-+					_St |= _IOS_FAILBIT|_IOS_EOFBIT; return _First; // unexpected EOF
-+				}
-+			}
-+
-+			if(_Char == _EQUAL_CHAR){
-+				// Error! First character in octet can't be '='
-+				_St |= _IOS_FAILBIT; 
-+				return _First; 
-+			}
-+			else
-+				_3to4.b64_0(_Char);
-+
-+
-+			// -- 1 --
-+			// Search next valid char... 
-+			while(++_First != _Last)
-+				if((_Char = _getCharType(*_First)) != _UNKNOWN_CHAR)
-+					break;
-+
-+			if(_First == _Last)	{
-+				_St |= _IOS_FAILBIT|_IOS_EOFBIT; // unexpected EOF 
-+				return _First;
-+			}
-+
-+			if(_Char == _EQUAL_CHAR){
-+				// Error! Second character in octet can't be '='
-+				_St |= _IOS_FAILBIT; 
-+				return _First; 
-+			}
-+			else
-+				_3to4.b64_1(_Char);
-+
-+
-+			// -- 2 --
-+			// Search next valid char... 
-+			while(++_First != _Last)
-+				if((_Char = _getCharType(*_First)) != _UNKNOWN_CHAR)
-+					break;
-+
-+			if(_First == _Last)	{
-+				// Error! Unexpected EOF. Must be '=' or base64 character
-+				_St |= _IOS_FAILBIT|_IOS_EOFBIT; 
-+				return _First; 
-+			}
-+
-+			if(_Char == _EQUAL_CHAR){
-+				// OK!
-+				_3to4.b64_2(0); 
-+				_3to4.b64_3(0); 
-+
-+				// chek for EOF
-+				if(++_First == _Last)
-+				{
-+					// Error! Unexpected EOF. Must be '='. Ignore it.
-+					//_St |= _IOS_BADBIT|_IOS_EOFBIT;
-+					_St |= _IOS_EOFBIT;
-+				}
-+				else 
-+					if(_getCharType(*_First) != _EQUAL_CHAR)
-+					{
-+						// Error! Must be '='. Ignore it.
-+						//_St |= _IOS_BADBIT;
-+					}
-+				else
-+					++_First; // Skip '='
-+
-+				// write 1 byte to output
-+				*_To = (byte_t) _3to4.get_0();
-+				return _First;
-+			}
-+			else
-+				_3to4.b64_2(_Char);
-+
-+
-+			// -- 3 --
-+			// Search next valid char... 
-+			while(++_First != _Last)
-+				if((_Char = _getCharType(*_First)) != _UNKNOWN_CHAR)
-+					break;
-+
-+			if(_First == _Last)	{
-+				// Unexpected EOF. It's error. But ignore it.
-+				//_St |= _IOS_FAILBIT|_IOS_EOFBIT; 
-+					_St |= _IOS_EOFBIT; 
-+				
-+				return _First; 
-+			}
-+
-+			if(_Char == _EQUAL_CHAR)
-+			{
-+				// OK!
-+				_3to4.b64_3(0); 
-+
-+				// write to output 2 bytes
-+				*_To = (byte_t) _3to4.get_0();
-+				*_To = (byte_t) _3to4.get_1();
-+
-+				++_First; // set position to next character
-+
-+				return _First;
-+			}
-+			else
-+				_3to4.b64_3(_Char);
-+
-+
-+			// write to output 3 bytes
-+			*_To = (byte_t) _3to4.get_0();
-+			*_To = (byte_t) _3to4.get_1();
-+			*_To = (byte_t) _3to4.get_2();
-+
-+			++_First;
-+			
-+
-+		} // while(_First != _Last)
-+
-+		return (_First);
-+	}
-+
-+protected:
-+	
-+	int _getCharType(int _Ch) const
-+	{
-+		if(_base64Chars[62] == _Ch)
-+			return 62;
-+
-+		if(_base64Chars[63] == _Ch)
-+			return 63;
-+
-+		if((_base64Chars[0] <= _Ch) && (_base64Chars[25] >= _Ch))
-+			return _Ch - _base64Chars[0];
-+
-+		if((_base64Chars[26] <= _Ch) && (_base64Chars[51] >= _Ch))
-+			return _Ch - _base64Chars[26] + 26;
-+
-+		if((_base64Chars[52] <= _Ch) && (_base64Chars[61] >= _Ch))
-+			return _Ch - _base64Chars[52] + 52;
-+
-+		if(_Ch == _Tr::to_int_type('='))
-+			return _EQUAL_CHAR;
-+
-+		return _UNKNOWN_CHAR;
-+	}
-+
-+
-+};
-+
-+
-+#endif
 diff --git a/utilities/xmlrpcpp/src/XmlRpcClient.cpp b/utilities/xmlrpcpp/src/XmlRpcClient.cpp
 index 31cda22..b533059 100644
 --- a/utilities/xmlrpcpp/src/XmlRpcClient.cpp
diff --git a/debian/patches/series b/debian/patches/series
index 6a73536..b4a3e11 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -4,4 +4,4 @@
 0004-Fix-executable-not-elf-or-script.patch
 0005-Add-defaults-to-roswtf.patch
 0006-Fix-confusing-copyright-messages-dates.patch
-0007-move-heaers-to-include-xmlrpcpp.patch
+0007-Move-headers-to-include-xmlrpcpp.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/ros/ros-ros-comm.git



More information about the debian-science-commits mailing list