SOURCES: xmlrpc-c-libxml2-support.patch, xmlrpc-c-public-dispatch....

baggins baggins at pld-linux.org
Wed Jan 11 17:19:30 CET 2006


Author: baggins                      Date: Wed Jan 11 16:19:30 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- updated to 1.03.10

---- Files affected:
SOURCES:
   xmlrpc-c-libxml2-support.patch (1.1 -> 1.2) , xmlrpc-c-public-dispatch.patch (1.1 -> 1.2) , xmlrpc-c-soname.patch (1.1 -> 1.2) 

---- Diffs:

================================================================
Index: SOURCES/xmlrpc-c-libxml2-support.patch
diff -u SOURCES/xmlrpc-c-libxml2-support.patch:1.1 SOURCES/xmlrpc-c-libxml2-support.patch:1.2
--- SOURCES/xmlrpc-c-libxml2-support.patch:1.1	Mon Sep 15 05:50:31 2003
+++ SOURCES/xmlrpc-c-libxml2-support.patch	Wed Jan 11 17:19:24 2006
@@ -1,620 +1,11 @@
---- xmlrpc-c-0.9.10-old/configure.in	Sat Jun 30 21:43:48 2001
-+++ xmlrpc-c-0.9.10/configure.in	Thu May 23 17:33:36 2002
-@@ -70,6 +70,39 @@
- AC_SUBST(AUTH_CLIENT)
- AC_SUBST(QUERY_MEERKAT)
+--- xmlrpc-c-1.03.10/lib/Makefile~	2004-12-14 04:28:16.000000000 +0100
++++ xmlrpc-c-1.03.10/lib/Makefile	2006-01-11 17:08:49.324799750 +0100
+@@ -18,7 +18,7 @@
+ ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
+   SUBDIRS += libwww_transport
+ endif
+-ifneq ($(ENABLE_LIBXML2),yes)
++ifneq ($(ENABLE_LIBXML2_BACKEND),yes)
+   SUBDIRS += expat
+ endif
  
-+AM_CONDITIONAL(ENABLE_LIBXML2, false)
-+
-+dnl Check to see if we should build the libxml2 backend.
-+AC_MSG_CHECKING(whether to build the libxml2 backend)
-+AC_ARG_ENABLE(libxml2-backend, [\
-+  --enable-libxml2-backend  Use libxml2 instead of built-in expat], ,
-+enable_libxml2_backend=no)
-+AC_MSG_RESULT($enable_libxml2_backend)
-+
-+dnl If we're using the libxml2 backend, look for pkg-config
-+if test x"$enable_libxml2_backend" != xno; then
-+    AC_MSG_CHECKING(for pkg-config)
-+    AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-+    if test x$PKG_CONFIG = xno; then
-+        AC_MSG_ERROR([*** pkg-config not found.  See http://www.freedesktop.org/software/pkgconfig/])
-+    fi
-+
-+dnl Set up the appropriate Makefile substitutions
-+    LIBXML2_CFLAGS=`pkg-config --cflags libxml-2.0`
-+    AC_SUBST(LIBXML2_CFLAGS)
-+    CFLAGS="$CFLAGS $LIBXML2_CFLAGS"
-+
-+    LIBXML2_LIBS=`pkg-config --libs libxml-2.0`
-+    AC_SUBST(LIBXML2_LIBS)
-+
-+    AM_CONDITIONAL(ENABLE_LIBXML2, true)
-+    EXTRA_XML_LIBS="$LIBXML2_LIBS"
-+else
-+    EXTRA_XML_LIBS="-lxmlrpc_xmlparse -lxmlrpc_xmltok"
-+fi
-+
-+AC_SUBST(EXTRA_XML_LIBS)
-+
- dnl Check to see if we should build our Abyss server module.
- AC_MSG_CHECKING(whether to build Abyss server module)
- AC_ARG_ENABLE(abyss-server, [\
-
-diff -urpP xmlrpc-c-0.9.10-old/examples/Makefile.am xmlrpc-c-0.9.10/examples/Makefile.am
---- xmlrpc-c-0.9.10-old/examples/Makefile.am	Tue Apr 24 19:43:46 2001
-+++ xmlrpc-c-0.9.10/examples/Makefile.am	Thu May  2 17:23:09 2002
-@@ -13,10 +13,15 @@ EXTRA_PROGRAMS  = synch_client asynch_cl
- 
- INCLUDES = -I$(srcdir)/.. -I$(srcdir)/../src
- 
--LIBEXPAT  = ../lib/expat/xmlparse/libxmlrpc_xmlparse.la \
--            ../lib/expat/xmltok/libxmlrpc_xmltok.la
-+if ENABLE_LIBXML2
-+LIBXML = $(LIBXML2_LIBS)
-+else
-+LIBXML = ../lib/expat/xmlparse/libxmlrpc_xmlparse.la \
-+         ../lib/expat/xmltok/libxmlrpc_xmltok.la
-+endif
-+
- LIBABYSS  = ../lib/abyss/src/libxmlrpc_abyss.la
--LIBXMLRPC = ../src/libxmlrpc.la $(LIBEXPAT)
-+LIBXMLRPC = ../src/libxmlrpc.la $(LIBXML)
- LIBCLIENT = ../src/libxmlrpc_client.la @LIBWWW_LDADD@ $(LIBXMLRPC)
- LIBSERVER = ../src/libxmlrpc_abyss_server.la $(LIBABYSS) $(LIBXMLRPC)
- LIBCGI    = ../src/libxmlrpc_cgi.la $(LIBXMLRPC)
-
-diff -urpP xmlrpc-c-0.9.10-old/examples/interop-client/Makefile.am xmlrpc-c-0.9.10/examples/interop-client/Makefile.am
---- xmlrpc-c-0.9.10-old/examples/interop-client/Makefile.am	Tue Apr 24 11:29:37 2001
-+++ xmlrpc-c-0.9.10/examples/interop-client/Makefile.am	Thu May  2 17:31:42 2002
-@@ -6,9 +6,14 @@ noinst_PROGRAMS = interop-client
- 
- INCLUDES = -I$(srcdir)/../../src
- 
--LIBEXPAT  = ../../lib/expat/xmlparse/libxmlrpc_xmlparse.la \
--            ../../lib/expat/xmltok/libxmlrpc_xmltok.la
--LIBXMLRPC = ../../src/libxmlrpc.la $(LIBEXPAT)
-+if ENABLE_LIBXML2
-+LIBXML = $(LIBXML2_LIBS)
-+else
-+LIBXML  = ../../lib/expat/xmlparse/libxmlrpc_xmlparse.la \
-+          ../../lib/expat/xmltok/libxmlrpc_xmltok.la
-+endif
-+
-+LIBXMLRPC = ../../src/libxmlrpc.la $(LIBXML)
- LIBCLIENT = ../../src/libxmlrpc_client.la @LIBWWW_LDADD@ $(LIBXMLRPC)
- 
- interop_client_SOURCES = interop-client.cc \
-
-diff -urpP xmlrpc-c-0.9.10-old/lib/Makefile.am xmlrpc-c-0.9.10/lib/Makefile.am
---- xmlrpc-c-0.9.10-old/lib/Makefile.am	Sat Mar 17 15:34:43 2001
-+++ xmlrpc-c-0.9.10/lib/Makefile.am	Thu May  2 17:23:09 2002
-@@ -1 +1,7 @@
--SUBDIRS = expat @ABYSS_SUBDIR@
-+ABYSS_SUBDIR = @ABYSS_SUBDIR@
-+
-+if ENABLE_LIBXML2
-+SUBDIRS = $(ABYSS_SUBDIR)
-+else
-+SUBDIRS = expat $(ABYSS_SUBDIR)
-+endif
-
-diff -urpP xmlrpc-c-0.9.10-old/src/Makefile.am xmlrpc-c-0.9.10/src/Makefile.am
---- xmlrpc-c-0.9.10-old/src/Makefile.am	Sat Jun 30 22:17:37 2001
-+++ xmlrpc-c-0.9.10/src/Makefile.am	Thu May  2 17:23:09 2002
-@@ -34,15 +34,24 @@ noinst_SCRIPTS = efrpctest_wrapper
- # Our test programs.
- TESTS = rpctest @EFRPCTEST_WRAPPER@ @CPPTEST@
- 
--INCLUDES = -I.. -I$(srcdir)/../lib/expat/xmlparse -I$(srcdir)/../lib/abyss/src
-+if ENABLE_LIBXML2
-+LIBXML_INCLUDES = $(LIBXML2_CFLAGS)
-+LIBXML = $(LIBXML2_LIBS)
-+LIBXML_FILES = xmlrpc_libxml2.c
-+else
-+LIBXML_INCLUDES = -I$(srcdir)/../lib/expat/xmlparse
-+LIBXML = ../lib/expat/xmlparse/libxmlrpc_xmlparse.la \
-+         ../lib/expat/xmltok/libxmlrpc_xmltok.la
-+LIBXML_FILES = xmlrpc_expat.c
-+endif
-+
-+INCLUDES = -I.. -I$(srcdir)/../lib/abyss/src $(LIBXML_INCLUDES)
- 
--LIBEXPAT = ../lib/expat/xmlparse/libxmlrpc_xmlparse.la \
--           ../lib/expat/xmltok/libxmlrpc_xmltok.la
- LIBABYSS = ../lib/abyss/src/libxmlrpc_abyss.la
- 
- # A library containing just the XML-RPC core.
- libxmlrpc_la_SOURCES = xmlrpc_support.c xmlrpc_data.c xmlrpc_struct.c \
--		       xmlrpc_xmlparser.h xmlrpc_expat.c xmlrpc_parse.c \
-+		       xmlrpc_xmlparser.h $(LIBXML_FILES) xmlrpc_parse.c \
-                        xmlrpc_serialize.c xmlrpc_registry.c xmlrpc_base64.c \
- 		       xmlrpc_utf8.c
- libxmlrpc_la_LDFLAGS = @VERSION_INFO@
-@@ -64,31 +73,31 @@ libxmlrpc_cpp_a_SOURCES = XmlRpcCpp.cc
- 
- # The test suites for the XML-RPC core.
- rpctest_SOURCES = rpctest.c 
--rpctest_LDADD   = libxmlrpc.la $(LIBEXPAT)
-+rpctest_LDADD   = libxmlrpc.la $(LIBXML)
- 
- # The test suites for the XML-RPC core w/Electric Fence.
- efrpctest_SOURCES = rpctest.c 
--efrpctest_LDADD   = libxmlrpc.la $(LIBEXPAT) -lefence
-+efrpctest_LDADD   = libxmlrpc.la $(LIBXML) -lefence
- 
- # The test suites for our C++ core.
- cpptest_SOURCES = cpptest.cc XmlRpcCpp.cc XmlRpcCpp.h
--cpptest_LDADD   = libxmlrpc_cpp.a libxmlrpc.la $(LIBEXPAT)
-+cpptest_LDADD   = libxmlrpc_cpp.a libxmlrpc.la $(LIBXML)
- 
- # A test program for the client library.
- clienttest_SOURCES = clienttest.c 
- clienttest_LDADD   = libxmlrpc_client.la @LIBWWW_LDADD@ \
--                     libxmlrpc.la $(LIBEXPAT)
-+                     libxmlrpc.la $(LIBXML)
- clienttest_LDFLAGS = @LIBWWW_RPATH@
- 
- # A test program for the server library.
- servertest_SOURCES = servertest.c 
- servertest_LDADD   = libxmlrpc_abyss_server.la $(LIBABYSS) \
--                     libxmlrpc.la $(LIBEXPAT)
-+                     libxmlrpc.la $(LIBXML)
- 
- # A server which attempts to pass the UserLand validator1 suite.
- validatee_SOURCES  = validatee.c
- validatee_LDADD    = libxmlrpc_abyss_server.la $(LIBABYSS) \
--                     libxmlrpc.la $(LIBEXPAT)
-+                     libxmlrpc.la $(LIBXML)
- 
- # Handle our wrapper script.
- efrpctest_wrapper: $(srcdir)/efrpctest_wrapper.sh
-
-diff -urpP xmlrpc-c-0.9.10-old/src/xmlrpc_libxml2.c xmlrpc-c-0.9.10/src/xmlrpc_libxml2.c
---- xmlrpc-c-0.9.10-old/src/xmlrpc_libxml2.c	Wed Dec 31 19:00:00 1969
-+++ xmlrpc-c-0.9.10/src/xmlrpc_libxml2.c	Thu May  2 17:23:09 2002
-@@ -0,0 +1,411 @@
-+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/* Copyright (C) 2001 by First Peer, Inc. All rights reserved.
-+** Copyright (C) 2002 Ximian, Inc.
-+**
-+** Redistribution and use in source and binary forms, with or without
-+** modification, are permitted provided that the following conditions
-+** are met:
-+** 1. Redistributions of source code must retain the above copyright
-+**    notice, this list of conditions and the following disclaimer.
-+** 2. Redistributions in binary form must reproduce the above copyright
-+**    notice, this list of conditions and the following disclaimer in the
-+**    documentation and/or other materials provided with the distribution.
-+** 3. The name of the author may not be used to endorse or promote products
-+**    derived from this software without specific prior written permission. 
-+**  
-+** THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-+** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+** ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-+** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+** OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+** OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+** SUCH DAMAGE. */
-+
-+#ifndef HAVE_WIN32_CONFIG_H
-+#include "xmlrpc_config.h"
-+#else
-+#include "xmlrpc_win32_config.h"
-+#endif
-+
-+#include <stddef.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <libxml/parser.h>
-+
-+#define  XMLRPC_WANT_INTERNAL_DECLARATIONS
-+#include "xmlrpc.h"
-+#include "xmlrpc_xmlparser.h"
-+
-+/* Define the contents of our internal structure. */
-+struct _xml_element {
-+    struct _xml_element *_parent;
-+    char *_name;
-+    xmlrpc_mem_block _cdata;    /* char */
-+    xmlrpc_mem_block _children; /* xml_element* */
-+};
-+
-+#define XMLRPC_ASSERT_ELEM_OK(elem) \
-+    XMLRPC_ASSERT((elem) != NULL && (elem)->_name != XMLRPC_BAD_POINTER)
-+
-+
-+/*=========================================================================
-+**  xml_element_new
-+**=========================================================================
-+**  Create a new xml_element. This routine isn't exported, because the
-+**  arguments are implementation-dependent.
-+*/
-+
-+static xml_element *xml_element_new (xmlrpc_env *env, char *name)
-+{
-+    xml_element *retval;
-+    int name_valid, cdata_valid, children_valid;
-+
-+    XMLRPC_ASSERT_ENV_OK(env);
-+    XMLRPC_ASSERT(name != NULL);
-+
-+    /* Set up our error-handling preconditions. */
-+    retval = NULL;
-+    name_valid = cdata_valid = children_valid = 0;
-+
-+    /* Allocate our xml_element structure. */
-+    retval = (xml_element*) malloc(sizeof(xml_element));
-+    XMLRPC_FAIL_IF_NULL(retval, env, XMLRPC_INTERNAL_ERROR,
-+			"Couldn't allocate memory for XML element");
-+
-+    /* Set our parent field to NULL. */
-+    retval->_parent = NULL;
-+    
-+    /* Copy over the element name. */
-+    retval->_name = (char*) malloc(strlen(name) + 1);
-+    XMLRPC_FAIL_IF_NULL(retval->_name, env, XMLRPC_INTERNAL_ERROR,
-+			"Couldn't allocate memory for XML element");
-+    name_valid = 1;
-+    strcpy(retval->_name, name);
-+
-+    /* Initialize a block to hold our CDATA. */
-+    XMLRPC_TYPED_MEM_BLOCK_INIT(char, env, &retval->_cdata, 0);
-+    XMLRPC_FAIL_IF_FAULT(env);
-+    cdata_valid = 1;
-+
-+    /* Initialize a block to hold our child elements. */
-+    XMLRPC_TYPED_MEM_BLOCK_INIT(xml_element*, env, &retval->_children, 0);
-+    XMLRPC_FAIL_IF_FAULT(env);
-+    children_valid = 1;
-+
-+ cleanup:
-+    if (env->fault_occurred) {
-+	if (retval) {
-+	    if (name_valid)
-+		free(retval->_name);
-+	    if (cdata_valid)
-+		xmlrpc_mem_block_clean(&retval->_cdata);
-+	    if (children_valid)
-+		xmlrpc_mem_block_clean(&retval->_children);
-+	    free(retval);
-+	}
-+	return NULL;
-+    } else {
-+	return retval;
-+    }
-+}
-+
-+
-+/*=========================================================================
-+**  xml_element_free
-+**=========================================================================
-+**  Blow away an existing element & all of its child elements.
-+*/
-+
-+void xml_element_free (xml_element *elem)
-+{
-+    xmlrpc_mem_block *children;
-+    int size, i;
-+    xml_element **contents;
-+
-+    XMLRPC_ASSERT_ELEM_OK(elem);
-+
-+    free(elem->_name);
-+    elem->_name = XMLRPC_BAD_POINTER;
-+    xmlrpc_mem_block_clean(&elem->_cdata);
-+
-+    /* Deallocate all of our children recursively. */
-+    children = &elem->_children;
-+    contents = XMLRPC_TYPED_MEM_BLOCK_CONTENTS(xml_element*, children);
-+    size = XMLRPC_TYPED_MEM_BLOCK_SIZE(xml_element*, children);
-+    for (i = 0; i < size; i++)
-+	xml_element_free(contents[i]);
-+
-+    xmlrpc_mem_block_clean(&elem->_children);
-+    free(elem);
-+}
-+
-+
-+/*=========================================================================
-+**  Miscellaneous Accessors
-+**=========================================================================
-+**  Return the fields of the xml_element. See the header for more
-+**  documentation on each function works.
-+*/
-+
-+char *xml_element_name (xml_element *elem)
-+{
-+    XMLRPC_ASSERT_ELEM_OK(elem);
-+    return elem->_name;
-+}
-+
-+/* The result of this function is NOT VALID until the end_element handler
-+** has been called! */
-+size_t xml_element_cdata_size (xml_element *elem)
-+{
-+    XMLRPC_ASSERT_ELEM_OK(elem);
-+    return XMLRPC_TYPED_MEM_BLOCK_SIZE(char, &elem->_cdata) - 1;
-+}
-+
-+char *xml_element_cdata (xml_element *elem)
-+{
-+    XMLRPC_ASSERT_ELEM_OK(elem);
-+    return XMLRPC_TYPED_MEM_BLOCK_CONTENTS(char, &elem->_cdata);
-+}
-+
-+size_t xml_element_children_size (xml_element *elem)
-+{
-+    XMLRPC_ASSERT_ELEM_OK(elem);
-+    return XMLRPC_TYPED_MEM_BLOCK_SIZE(xml_element*, &elem->_children);
-+}
-+
-+xml_element **xml_element_children (xml_element *elem)
-+{
-+    XMLRPC_ASSERT_ELEM_OK(elem);
-+    return XMLRPC_TYPED_MEM_BLOCK_CONTENTS(xml_element*, &elem->_children);
-+}
-+
-+
-+/*=========================================================================
-+**  Internal xml_element Utility Functions
-+**=========================================================================
-+*/
-+
-+static void xml_element_append_cdata (xmlrpc_env *env,
-+				      xml_element *elem,
-+				      char *cdata,
-+				      size_t size)
-+{
-+    XMLRPC_ASSERT_ENV_OK(env);
-+    XMLRPC_ASSERT_ELEM_OK(elem);    
-+
-+    XMLRPC_TYPED_MEM_BLOCK_APPEND(char, env, &elem->_cdata, cdata, size);
-+}
-+
-+/* Whether or not this function succeeds, it takes ownership of the 'child'
-+** argument.
-+** WARNING - This is the exact opposite of the usual memory ownership
-+** rules for xmlrpc_value! So please pay attention. */
-+static void xml_element_append_child (xmlrpc_env *env,
-+				      xml_element *elem,
-+				      xml_element *child)
-+{
-+    XMLRPC_ASSERT_ENV_OK(env);
-+    XMLRPC_ASSERT_ELEM_OK(elem);
-+    XMLRPC_ASSERT_ELEM_OK(child);
-+    XMLRPC_ASSERT(child->_parent == NULL);
-+
-+    XMLRPC_TYPED_MEM_BLOCK_APPEND(xml_element*, env, &elem->_children,
-+                                  &child, 1);
-+    if (!env->fault_occurred)
-+	child->_parent = elem;
-+    else
-+        xml_element_free(child);
-+}
-+
-+
-+/*=========================================================================
-+**  Our parse context. We pass this around as libxml user data.
-+**=========================================================================
-+*/
-+
-+typedef struct {
-+    xmlrpc_env *env;
-+    xml_element *root;
-+    xml_element *current;
-+} parse_context;
-+
-+
-+/*=========================================================================
-+**  LibXML Event Handler Functions
-+**=========================================================================
-+*/
-+
-+static void
-+start_element (void *user_data, const xmlChar *name, const xmlChar **attrs)
-+{
-+    parse_context *context;
-+    xml_element *elem, *new_current;
-+
-+    XMLRPC_ASSERT(user_data != NULL && name != NULL);
-+
-+    /* Get our context and see if an error has already occured. */
-+    context = (parse_context*) user_data;
-+    if (!context->env->fault_occurred) {
-+
-+	/* Set up our error-handling preconditions. */
-+	elem = NULL;
-+
-+	/* Build a new element. */
-+	elem = xml_element_new(context->env, (char *) name);
-+	XMLRPC_FAIL_IF_FAULT(context->env);
-+
-+	/* Insert it in the appropriate place. */
-+	if (!context->root) {
-+	    context->root = elem;
-+	    context->current = elem;
-+	    elem = NULL;
-+	} else {
-+	    XMLRPC_ASSERT(context->current != NULL);
-+
-+	    /* (We need to watch our error handling invariants very carefully
-+	    ** here. Read the docs for xml_element_append_child. */
-+	    new_current = elem;
-+	    xml_element_append_child(context->env, context->current, elem);
-+	    elem = NULL;
-+	    XMLRPC_FAIL_IF_FAULT(context->env);
-+	    context->current = new_current;
-+	}
-+
-+ cleanup:
-+	if (elem)
-+	    xml_element_free(elem);
-+    }
-+}
-+
-+static void
-+end_element (void *user_data, const xmlChar *name)
-+{
-+    parse_context *context;
-+
-+    XMLRPC_ASSERT(user_data != NULL && name != NULL);
-+
-+    /* Get our context and see if an error has already occured. */
-+    context = (parse_context*) user_data;
-+    if (!context->env->fault_occurred) {
-+
-+	/* XXX - I think expat enforces these facts, but I want to be sure.
-+	** If one of these assertion ever fails, it should be replaced by a
-+	** non-assertion runtime error check. */
-+	XMLRPC_ASSERT(strcmp(name, context->current->_name) == 0);
-+	XMLRPC_ASSERT(context->current->_parent != NULL ||
-+		      context->current == context->root);
-+
-+	/* Add a trailing '\0' to our cdata. */
-+	xml_element_append_cdata(context->env, context->current, "\0", 1);
-+	XMLRPC_FAIL_IF_FAULT(context->env);	
-+
-+	/* Pop our "stack" of elements. */
-+	context->current = context->current->_parent;
-+
-+ cleanup:
-+	return;
-+    }
-+}
-+
-+static void character_data (void *user_data, const xmlChar *s, int len)
-+{
-+    parse_context *context;
-+
-+    XMLRPC_ASSERT(user_data != NULL && s != NULL && len >= 0);
-+
-+    /* Get our context and see if an error has already occured. */
-+    context = (parse_context*) user_data;
-+    if (!context->env->fault_occurred) {
-+
-+	XMLRPC_ASSERT(context->current != NULL);
-+	
-+	xml_element_append_cdata(context->env, context->current, (char *) s, len);
-+	XMLRPC_FAIL_IF_FAULT(context->env);
-+
-+ cleanup:
-+	return;
-+    }
-+}
-+
-+
-+/*=========================================================================
-+**  LibXML Driver
-+**=========================================================================
-+**  XXX - We should allow the user to specify the encoding of our xml_data.
-+*/
-+
-+static xmlSAXHandler sax_handler = {
-+    NULL,      /* internalSubset */
-+    NULL,      /* isStandalone */
-+    NULL,      /* hasInternalSubset */
-+    NULL,      /* hasExternalSubset */
-+    NULL,      /* resolveEntity */
-+    NULL,      /* getEntity */
-+    NULL,      /* entityDecl */
-+    NULL,      /* notationDecl */
-+    NULL,      /* attributeDecl */
-+    NULL,      /* elementDecl */
-+    NULL,      /* unparsedEntityDecl */
-+    NULL,      /* setDocumentLocator */
-+    NULL,      /* startDocument */
-+    NULL,      /* endDocument */
-+    start_element,       /* startElement */
-+    end_element,         /* endElement */
-+    NULL,      /* reference */
-+    character_data,      /* characters */
-+    NULL,      /* ignorableWhitespace */
-+    NULL,      /* processingInstruction */
-+    NULL,      /* comment */
-+    NULL,      /* warning */
-+    NULL,      /* error */
-+    NULL,      /* fatalError */
-+};
-+
-+xml_element *xml_parse (xmlrpc_env *env, char *xml_data, int xml_len)
-+{
-+    parse_context context;
-+    xmlParserCtxt *parser;
-+    int err;
-+
-+    XMLRPC_ASSERT_ENV_OK(env);
-+    XMLRPC_ASSERT(xml_data != NULL && xml_len >= 0);
-+
-+    /* Set up our error-handling preconditions. */
-+    parser = NULL;
-+    context.root = NULL;
-+    
-+    /* Set up the rest of our parse context. */
-+    context.env     = env;
-+    context.current = NULL;
-+
-+    /* Set up our XML parser. */
-+    parser = xmlCreatePushParserCtxt(&sax_handler, &context, NULL, 0, NULL);
-+    XMLRPC_FAIL_IF_NULL(parser, env, XMLRPC_INTERNAL_ERROR,
-+			"Could not create expat parser");
-+
-+    /* Parse our data. */
-+    err = xmlParseChunk(parser, xml_data, xml_len, 1);
-+    if (err)
-+        XMLRPC_FAIL(env, XMLRPC_PARSE_ERROR, "XML parsing failed");
-+    XMLRPC_FAIL_IF_FAULT(env);
-+
-+    /* Perform some sanity checks. */
-+    XMLRPC_ASSERT(context.root != NULL);
-+    XMLRPC_ASSERT(context.current == NULL);
-+
-+ cleanup:
-+    if (parser)
-+        xmlFreeParserCtxt(parser);
-+
-+    if (env->fault_occurred) {
-+        if (context.root)
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/SOURCES/xmlrpc-c-libxml2-support.patch?r1=1.1&r2=1.2&f=u
    http://cvs.pld-linux.org/SOURCES/xmlrpc-c-public-dispatch.patch?r1=1.1&r2=1.2&f=u
    http://cvs.pld-linux.org/SOURCES/xmlrpc-c-soname.patch?r1=1.1&r2=1.2&f=u



More information about the pld-cvs-commit mailing list