Fixing #74186, made sure all boolean expressions get fully parenthesized,
* c14n.c: Fixing #74186, made sure all boolean expressions
get fully parenthesized, ran indent on the output
* configure.in HTMLtree.c SAX.c c14n.c debugXML.c tree.c xpointer.c
include/libxml/tree.h: also #74186 related, removed the
--with-buffers option, and all the preprocessor conditional
sections that were resulting from it.
Daniel
diff --git a/ChangeLog b/ChangeLog
index 107fae8..13bf2af 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Mon Mar 11 10:10:30 CET 2002 Daniel Veillard <daniel@veillard.com>
+
+ * c14n.c: Fixing #74186, made sure all boolean expressions
+ get fully parenthesized, ran indent on the output
+ * configure.in HTMLtree.c SAX.c c14n.c debugXML.c tree.c xpointer.c
+ include/libxml/tree.h: also #74186 related, removed the
+ --with-buffers option, and all the preprocessor conditional
+ sections that were resulting from it.
+
Sun Mar 10 17:47:58 CET 2002 Daniel Veillard <daniel@veillard.com>
* valid.c: applied patch from Dodji Seketeli fixing an
diff --git a/HTMLtree.c b/HTMLtree.c
index c0e0050..7868d64 100644
--- a/HTMLtree.c
+++ b/HTMLtree.c
@@ -102,11 +102,7 @@
if ((attr->children != NULL) &&
(attr->children->type == XML_TEXT_NODE) &&
(attr->children->next == NULL)) {
-#ifndef XML_USE_BUFFER_CONTENT
value = attr->children->content;
-#else
- value = xmlBufferContent(attr->children->content);
-#endif
if ((!xmlStrcasecmp(attr->name, BAD_CAST"http-equiv"))
&& (!xmlStrcasecmp(value, BAD_CAST"Content-Type")))
http = 1;
@@ -249,11 +245,7 @@
if ((attr->children != NULL) &&
(attr->children->type == XML_TEXT_NODE) &&
(attr->children->next == NULL)) {
-#ifndef XML_USE_BUFFER_CONTENT
value = attr->children->content;
-#else
- value = xmlBufferContent(attr->children->content);
-#endif
if ((!xmlStrcasecmp(attr->name, BAD_CAST"http-equiv"))
&& (!xmlStrcasecmp(value, BAD_CAST"Content-Type")))
http = 1;
@@ -449,12 +441,7 @@
(!xmlStrEqual(cur->parent->name, BAD_CAST "script")))) {
xmlChar *buffer;
-#ifndef XML_USE_BUFFER_CONTENT
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
-#else
- buffer = xmlEncodeEntitiesReentrant(doc,
- xmlBufferContent(cur->content));
-#endif
if (buffer != NULL) {
xmlBufferWriteCHAR(buf, buffer);
xmlFree(buffer);
@@ -468,11 +455,7 @@
if (cur->type == HTML_COMMENT_NODE) {
if (cur->content != NULL) {
xmlBufferWriteChar(buf, "<!--");
-#ifndef XML_USE_BUFFER_CONTENT
xmlBufferWriteCHAR(buf, cur->content);
-#else
- xmlBufferWriteCHAR(buf, xmlBufferContent(cur->content));
-#endif
xmlBufferWriteChar(buf, "-->");
}
return;
@@ -484,11 +467,7 @@
xmlBufferWriteCHAR(buf, cur->name);
if (cur->content != NULL) {
xmlBufferWriteChar(buf, " ");
-#ifndef XML_USE_BUFFER_CONTENT
xmlBufferWriteCHAR(buf, cur->content);
-#else
- xmlBufferWriteCHAR(buf, xmlBufferContent(cur->content));
-#endif
}
xmlBufferWriteChar(buf, ">");
return;
@@ -501,11 +480,7 @@
}
if (cur->type == HTML_PRESERVE_NODE) {
if (cur->content != NULL) {
-#ifndef XML_USE_BUFFER_CONTENT
xmlBufferWriteCHAR(buf, cur->content);
-#else
- xmlBufferWriteCHAR(buf, xmlBufferContent(cur->content));
-#endif
}
return;
}
@@ -553,12 +528,7 @@
if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) {
xmlChar *buffer;
-#ifndef XML_USE_BUFFER_CONTENT
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
-#else
- buffer = xmlEncodeEntitiesReentrant(doc,
- xmlBufferContent(cur->content));
-#endif
if (buffer != NULL) {
xmlBufferWriteCHAR(buf, buffer);
xmlFree(buffer);
@@ -944,12 +914,7 @@
(!xmlStrEqual(cur->parent->name, BAD_CAST "script")))) {
xmlChar *buffer;
-#ifndef XML_USE_BUFFER_CONTENT
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
-#else
- buffer = xmlEncodeEntitiesReentrant(doc,
- xmlBufferContent(cur->content));
-#endif
if (buffer != NULL) {
xmlOutputBufferWriteString(buf, (const char *)buffer);
xmlFree(buffer);
@@ -963,12 +928,7 @@
if (cur->type == HTML_COMMENT_NODE) {
if (cur->content != NULL) {
xmlOutputBufferWriteString(buf, "<!--");
-#ifndef XML_USE_BUFFER_CONTENT
xmlOutputBufferWriteString(buf, (const char *)cur->content);
-#else
- xmlOutputBufferWriteString(buf, (const char *)
- xmlBufferContent(cur->content));
-#endif
xmlOutputBufferWriteString(buf, "-->");
}
return;
@@ -980,12 +940,7 @@
xmlOutputBufferWriteString(buf, (const char *)cur->name);
if (cur->content != NULL) {
xmlOutputBufferWriteString(buf, " ");
-#ifndef XML_USE_BUFFER_CONTENT
xmlOutputBufferWriteString(buf, (const char *)cur->content);
-#else
- xmlOutputBufferWriteString(buf, (const char *)
- xmlBufferContent(cur->content));
-#endif
}
xmlOutputBufferWriteString(buf, ">");
return;
@@ -998,12 +953,7 @@
}
if (cur->type == HTML_PRESERVE_NODE) {
if (cur->content != NULL) {
-#ifndef XML_USE_BUFFER_CONTENT
xmlOutputBufferWriteString(buf, (const char *)cur->content);
-#else
- xmlOutputBufferWriteString(buf, (const char *)
- xmlBufferContent(cur->content));
-#endif
}
return;
}
@@ -1058,12 +1008,7 @@
* invalids to charrefs
*/
-#ifndef XML_USE_BUFFER_CONTENT
xmlOutputBufferWriteString(buf, (const char *) cur->content);
-#else
- xmlOutputBufferWriteString(buf,
- (const char *) xmlBufferContent(cur->content));
-#endif
}
if (cur->children != NULL) {
if ((format) && (info != NULL) && (!info->isinline) &&
diff --git a/SAX.c b/SAX.c
index a80db8b..9baeab5 100644
--- a/SAX.c
+++ b/SAX.c
@@ -1453,18 +1453,15 @@
if (lastChild == NULL) {
/* first node, first time */
xmlNodeAddContentLen(ctxt->node, ch, len);
-#ifndef XML_USE_BUFFER_CONTENT
if (ctxt->node->children != NULL) {
ctxt->nodelen = len;
ctxt->nodemem = len + 1;
}
-#endif
} else {
int coalesceText = (lastChild != NULL) &&
(lastChild->type == XML_TEXT_NODE) &&
(lastChild->name == xmlStringText);
if ((coalesceText) && (ctxt->nodemem != 0)) {
-#ifndef XML_USE_BUFFER_CONTENT
/*
* The whole point of maintaining nodelen and nodemem,
* xmlTextConcat is too costly, i.e. compute length,
@@ -1491,9 +1488,6 @@
memcpy(&lastChild->content[ctxt->nodelen], ch, len);
ctxt->nodelen += len;
lastChild->content[ctxt->nodelen] = 0;
-#else
- xmlTextConcat(lastChild, ch, len);
-#endif
} else if (coalesceText) {
xmlTextConcat(lastChild, ch, len);
if (ctxt->node->children != NULL) {
@@ -1504,12 +1498,10 @@
/* Mixed content, first time */
lastChild = xmlNewTextLen(ch, len);
xmlAddChild(ctxt->node, lastChild);
-#ifndef XML_USE_BUFFER_CONTENT
if (ctxt->node->children != NULL) {
ctxt->nodelen = len;
ctxt->nodemem = len + 1;
}
-#endif
}
}
}
diff --git a/c14n.c b/c14n.c
index 2b27020..7aab539 100644
--- a/c14n.c
+++ b/c14n.c
@@ -19,7 +19,7 @@
#include <libxml/tree.h>
#include <libxml/parser.h>
-#include <libxml/uri.h>
+#include <libxml/uri.h>
#include <libxml/xmlerror.h>
#include <libxml/globals.h>
#include <libxml/xpathInternals.h>
@@ -31,52 +31,50 @@
* *
************************************************************************/
-typedef enum {
- XMLC14N_BEFORE_DOCUMENT_ELEMENT= 0,
- XMLC14N_INSIDE_DOCUMENT_ELEMENT= 1,
- XMLC14N_AFTER_DOCUMENT_ELEMENT= 2
+typedef enum {
+ XMLC14N_BEFORE_DOCUMENT_ELEMENT = 0,
+ XMLC14N_INSIDE_DOCUMENT_ELEMENT = 1,
+ XMLC14N_AFTER_DOCUMENT_ELEMENT = 2
} xmlC14NPosition;
typedef struct _xmlC14NCtx {
/* input parameters */
- xmlDocPtr doc;
- xmlNodeSetPtr visible_nodes;
- int with_comments;
- xmlOutputBufferPtr buf;
+ xmlDocPtr doc;
+ xmlNodeSetPtr visible_nodes;
+ int with_comments;
+ xmlOutputBufferPtr buf;
/* position in the XML document */
- xmlC14NPosition pos;
- int parent_is_doc;
+ xmlC14NPosition pos;
+ int parent_is_doc;
/* exclusive canonicalization */
- int exclusive;
- xmlNodeSetPtr ns_rendered;
- xmlChar **inclusive_ns_prefixes;
+ int exclusive;
+ xmlNodeSetPtr ns_rendered;
+ xmlChar **inclusive_ns_prefixes;
} xmlC14NCtx, *xmlC14NCtxPtr;
-static int xmlC14NProcessNode (xmlC14NCtxPtr ctx,
- xmlNodePtr cur);
-static int xmlC14NProcessNodeList (xmlC14NCtxPtr ctx,
- xmlNodePtr cur);
+static int xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur);
+static int xmlC14NProcessNodeList(xmlC14NCtxPtr ctx, xmlNodePtr cur);
typedef enum {
- XMLC14N_NORMALIZE_ATTR= 0,
- XMLC14N_NORMALIZE_COMMENT= 1,
- XMLC14N_NORMALIZE_PI= 2,
- XMLC14N_NORMALIZE_TEXT= 3
-} xmlC14NNormalizationMode;
+ XMLC14N_NORMALIZE_ATTR = 0,
+ XMLC14N_NORMALIZE_COMMENT = 1,
+ XMLC14N_NORMALIZE_PI = 2,
+ XMLC14N_NORMALIZE_TEXT = 3
+} xmlC14NNormalizationMode;
-static xmlChar* xmlC11NNormalizeString (const xmlChar *input,
- xmlC14NNormalizationMode mode);
+static xmlChar *xmlC11NNormalizeString(const xmlChar * input,
+ xmlC14NNormalizationMode mode);
#define xmlC11NNormalizeAttr( a ) \
- xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_ATTR)
+ xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_ATTR)
#define xmlC11NNormalizeComment( a ) \
- xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_COMMENT)
+ xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_COMMENT)
#define xmlC11NNormalizePI( a ) \
- xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_PI)
+ xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_PI)
#define xmlC11NNormalizeText( a ) \
- xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_TEXT)
+ xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_TEXT)
/************************************************************************
* *
@@ -94,19 +92,22 @@
*
* Returns 1 if the node is visible or 0 otherwise.
*/
+
/* todo: make it a define? */
-static int
-xmlC14NIsVisible(xmlC14NCtxPtr ctx, void *node) {
+static int
+xmlC14NIsVisible(xmlC14NCtxPtr ctx, void *node)
+{
/*
* If the input is an XPath node-set, then the node-set must explicitly
* contain every node to be rendered to the canonical form.
*/
- if(ctx->visible_nodes != NULL &&
- !xmlXPathNodeSetContains(ctx->visible_nodes, (xmlNodePtr)node)) {
- return(0);
- }
+ if ((ctx->visible_nodes != NULL) &&
+ (!xmlXPathNodeSetContains(ctx->visible_nodes, (xmlNodePtr) node)))
+ {
+ return (0);
+ }
- return(1);
+ return (1);
}
/**
@@ -118,12 +119,16 @@
*
* Returns 1 if the node is default or 0 otherwise
*/
+
/* todo: make it a define? */
static int
-xmlC14NIsXmlNs(xmlNsPtr ns) {
- return (ns != NULL &&
- xmlStrEqual(ns->prefix, BAD_CAST "xml") &&
- xmlStrEqual(ns->href, BAD_CAST "http://www.w3.org/XML/1998/namespace"));
+xmlC14NIsXmlNs(xmlNsPtr ns)
+{
+ return ((ns != NULL) &&
+ (xmlStrEqual(ns->prefix, BAD_CAST "xml")) &&
+ (xmlStrEqual(ns->href,
+ BAD_CAST
+ "http://www.w3.org/XML/1998/namespace")));
}
/**
@@ -136,26 +141,28 @@
* Returns 1 if we already wrote this namespace or 0 otherwise
*/
static int
-xmlExcC14NIsRendered(xmlC14NCtxPtr ctx, xmlNsPtr ns) {
+xmlExcC14NIsRendered(xmlC14NCtxPtr ctx, xmlNsPtr ns)
+{
int i;
-
- if(ctx == NULL || ctx->ns_rendered == NULL || ns == NULL) {
- return(0);
+
+ if ((ctx == NULL) || (ctx->ns_rendered == NULL) || (ns == NULL)) {
+ return (0);
}
- if(ctx->ns_rendered->nodeTab != NULL) {
- for(i = ctx->ns_rendered->nodeNr - 1; i >= 0; --i) {
- xmlNsPtr ns1 = (xmlNsPtr)ctx->ns_rendered->nodeTab[i];
- if(xmlStrEqual(ns1->prefix, ns->prefix)) {
- return (xmlStrEqual(ns1->href, ns->href));
- }
- }
- }
+ if (ctx->ns_rendered->nodeTab != NULL) {
+ for (i = ctx->ns_rendered->nodeNr - 1; i >= 0; --i) {
+ xmlNsPtr ns1 = (xmlNsPtr) ctx->ns_rendered->nodeTab[i];
+
+ if (xmlStrEqual(ns1->prefix, ns->prefix)) {
+ return (xmlStrEqual(ns1->href, ns->href));
+ }
+ }
+ }
/*
* if the default namespace xmlns="" is not defined yet then
* we do not want to print it out
*/
- return(xmlStrlen(ns->prefix) == 0 && xmlStrlen(ns->href) == 0);
+ return ((xmlStrlen(ns->prefix) == 0) && (xmlStrlen(ns->href) == 0));
}
/**
@@ -167,13 +174,17 @@
*
* Returns -1 if ns1 < ns2, 0 if ns1 == ns2 or 1 if ns1 > ns2.
*/
-static int
-xmlC14NNamespacesCompare(xmlNsPtr ns1, xmlNsPtr ns2) {
- if(ns1 == ns2) return(0);
- if(ns1 == NULL) return(-1);
- if(ns2 == NULL) return(1);
-
- return(xmlStrcmp(ns1->prefix, ns2->prefix));
+static int
+xmlC14NNamespacesCompare(xmlNsPtr ns1, xmlNsPtr ns2)
+{
+ if (ns1 == ns2)
+ return (0);
+ if (ns1 == NULL)
+ return (-1);
+ if (ns2 == NULL)
+ return (1);
+
+ return (xmlStrcmp(ns1->prefix, ns2->prefix));
}
@@ -187,26 +198,27 @@
* Returns 1 on success or 0 on fail.
*/
static int
-xmlC14NPrintNamespaces(const xmlNsPtr ns, xmlC14NCtxPtr ctx) {
+xmlC14NPrintNamespaces(const xmlNsPtr ns, xmlC14NCtxPtr ctx)
+{
- if(ns == NULL || ctx == NULL) {
+ if ((ns == NULL) || (ctx == NULL)) {
#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NPrintNamespace: namespace or context pointer is null\n");
+ "xmlC14NPrintNamespace: namespace or context pointer is null\n");
#endif
- return 0;
+ return 0;
}
- if(ns->prefix != NULL) {
- xmlOutputBufferWriteString(ctx->buf, " xmlns:");
- xmlOutputBufferWriteString(ctx->buf, (const char *)ns->prefix);
- xmlOutputBufferWriteString(ctx->buf, "=\"");
+ if (ns->prefix != NULL) {
+ xmlOutputBufferWriteString(ctx->buf, " xmlns:");
+ xmlOutputBufferWriteString(ctx->buf, (const char *) ns->prefix);
+ xmlOutputBufferWriteString(ctx->buf, "=\"");
} else {
- xmlOutputBufferWriteString(ctx->buf, " xmlns=\"");
+ xmlOutputBufferWriteString(ctx->buf, " xmlns=\"");
}
xmlOutputBufferWriteString(ctx->buf, (const char *) ns->href);
xmlOutputBufferWriteString(ctx->buf, "\"");
- return(1);
+ return (1);
}
/**
@@ -249,36 +261,39 @@
* Returns 0 on success or -1 on fail.
*/
static int
-xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
+xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur)
+{
xmlNsPtr ns;
xmlListPtr list;
xmlNodePtr visible_parent;
xmlNsPtr prev;
-
- if(ctx == NULL || cur == NULL || cur->type != XML_ELEMENT_NODE) {
-#ifdef DEBUG_C14N
+
+ if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) {
+#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessNamespacesAxis: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
-#endif
- return(-1);
- }
+ "xmlC14NProcessNamespacesAxis: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
+#endif
+ return (-1);
+ }
/*
* Create a sorted list to store element namespaces
*/
- list = xmlListCreate(NULL, (xmlListDataCompare)xmlC14NNamespacesCompare);
- if(list == NULL) {
+ list =
+ xmlListCreate(NULL, (xmlListDataCompare) xmlC14NNamespacesCompare);
+ if (list == NULL) {
#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessNamespacesAxis: list creation failed\n");
+ "xmlC14NProcessNamespacesAxis: list creation failed\n");
#endif
- return(-1);
- }
-
+ return (-1);
+ }
+
/* find nearest visible parent */
visible_parent = cur->parent;
- while(visible_parent != NULL && !xmlC14NIsVisible(ctx, visible_parent)) {
- visible_parent = visible_parent->parent;
+ while ((visible_parent != NULL) &&
+ (!xmlC14NIsVisible(ctx, visible_parent))) {
+ visible_parent = visible_parent->parent;
}
/*
@@ -287,46 +302,49 @@
* defined in node parents). By this we need to now walk thru
* all namespace in current node and all invisible ancesstors
*/
- while(cur != visible_parent) {
- for(ns = cur->nsDef; ns != NULL; ns = ns->next) {
- /*
- * first of all ignore default "xml" namespace and
- * already included namespace
- */
- if(xmlC14NIsXmlNs(ns) || xmlListSearch(list, ns) != NULL) {
- continue;
- }
+ while (cur != visible_parent) {
+ for (ns = cur->nsDef; ns != NULL; ns = ns->next) {
+ /*
+ * first of all ignore default "xml" namespace and
+ * already included namespace
+ */
+ if ((xmlC14NIsXmlNs(ns)) || (xmlListSearch(list, ns) != NULL)) {
+ continue;
+ }
- /*
- * Lookup nearest namespace after visible parent having
- * the same prefix. Namespace included if and only if one of
- * the following:
- * - another namespace having the same prefix but
- * different value found or
- * - there is no namespaces having the same prefix and
- * it is not a default xmlns="" namespace (empty prefix
- * and empty href)
- */
- prev = xmlSearchNs(ctx->doc, visible_parent, ns->prefix);
- if(prev == NULL && (xmlStrlen(ns->prefix) > 0 || xmlStrlen(ns->href) > 0)) {
- xmlListInsert(list, ns);
- } else if(prev != NULL && !xmlStrEqual(ns->href, prev->href)) {
- xmlListInsert(list, ns);
- }
- }
- cur = cur->parent;
+ /*
+ * Lookup nearest namespace after visible parent having
+ * the same prefix. Namespace included if and only if one of
+ * the following:
+ * - another namespace having the same prefix but
+ * different value found or
+ * - there is no namespaces having the same prefix and
+ * it is not a default xmlns="" namespace (empty prefix
+ * and empty href)
+ */
+ prev = xmlSearchNs(ctx->doc, visible_parent, ns->prefix);
+ if ((prev == NULL) && ((xmlStrlen(ns->prefix) > 0) ||
+ (xmlStrlen(ns->href) > 0))) {
+ xmlListInsert(list, ns);
+ } else if ((prev != NULL)
+ && (!xmlStrEqual(ns->href, prev->href))) {
+ xmlListInsert(list, ns);
+ }
+ }
+ cur = cur->parent;
}
/*
* print out all elements from list
*/
- xmlListWalk(list, (xmlListWalker)xmlC14NPrintNamespaces, (const void*)ctx);
-
+ xmlListWalk(list, (xmlListWalker) xmlC14NPrintNamespaces,
+ (const void *) ctx);
+
/*
* Cleanup
*/
xmlListDelete(list);
- return(0);
+ return (0);
}
/**
@@ -360,39 +378,41 @@
* Returns 0 on success or -1 on fail.
*/
static int
-xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
+xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur)
+{
xmlListPtr list;
xmlAttrPtr attr;
xmlNsPtr ns;
-
- if(ctx == NULL || cur == NULL || cur->type != XML_ELEMENT_NODE) {
-#ifdef DEBUG_C14N
+
+ if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) {
+#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlExcC14NProcessNamespacesAxis: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
-#endif
- return(-1);
- }
-
- if(!ctx->exclusive || ctx->ns_rendered == NULL) {
-#ifdef DEBUG_C14N
- xmlGenericError(xmlGenericErrorContext,
- "xmlExcC14NProcessNamespacesAxis: called for non-exclusive canonization or rendered stack is NULL.\n");
-#endif
- return(-1);
-
+ "xmlExcC14NProcessNamespacesAxis: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
+#endif
+ return (-1);
}
-
+
+ if ((!ctx->exclusive) || (ctx->ns_rendered == NULL)) {
+#ifdef DEBUG_C14N
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlExcC14NProcessNamespacesAxis: called for non-exclusive canonization or rendered stack is NULL.\n");
+#endif
+ return (-1);
+
+ }
+
/*
* Create a sorted list to store element namespaces
*/
- list = xmlListCreate(NULL, (xmlListDataCompare)xmlC14NNamespacesCompare);
- if(list == NULL) {
+ list =
+ xmlListCreate(NULL, (xmlListDataCompare) xmlC14NNamespacesCompare);
+ if (list == NULL) {
#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlExcC14NProcessNamespacesAxis: list creation failed\n");
+ "xmlExcC14NProcessNamespacesAxis: list creation failed\n");
#endif
- return(-1);
- }
+ return (-1);
+ }
/*
* First of all, add all namespaces required by current node
@@ -400,67 +420,72 @@
* todo: do we need to check for default "xml:" namespace
*/
ns = (cur->ns != NULL) ? cur->ns : xmlSearchNs(ctx->doc, cur, NULL);
- if(ns != NULL && !xmlC14NIsXmlNs(ns) && xmlListSearch(list, ns) == NULL) {
- if(!xmlExcC14NIsRendered(ctx, ns)) {
- xmlListInsert(list, ns);
- xmlXPathNodeSetAdd(ctx->ns_rendered, (xmlNodePtr)ns);
- }
+ if ((ns != NULL) && (!xmlC14NIsXmlNs(ns)) &&
+ (xmlListSearch(list, ns) == NULL)) {
+ if (!xmlExcC14NIsRendered(ctx, ns)) {
+ xmlListInsert(list, ns);
+ xmlXPathNodeSetAdd(ctx->ns_rendered, (xmlNodePtr) ns);
+ }
}
attr = cur->properties;
- while (attr != NULL) {
- /*
- * todo: do we need to check that attribute is visible and has non
- * default namespace
- */
- if(xmlC14NIsVisible(ctx, attr)) {
- ns = (attr->ns != NULL) ? attr->ns : xmlSearchNs(ctx->doc, cur, NULL);
- if(ns != NULL && xmlC14NIsVisible(ctx, attr) && !xmlC14NIsXmlNs(ns)) {
- if(xmlListSearch(list, ns) == NULL &&
- !xmlExcC14NIsRendered(ctx, ns)) {
- xmlListInsert(list, ns);
- xmlXPathNodeSetAdd(ctx->ns_rendered, (xmlNodePtr)ns);
- }
- }
- }
- attr = attr->next;
+ while (attr != NULL) {
+ /*
+ * todo: do we need to check that attribute is visible and has non
+ * default namespace
+ */
+ if (xmlC14NIsVisible(ctx, attr)) {
+ ns = (attr->ns != NULL) ? attr->ns : xmlSearchNs(ctx->doc, cur,
+ NULL);
+ if ((ns != NULL) && (xmlC14NIsVisible(ctx, attr)) &&
+ (!xmlC14NIsXmlNs(ns))) {
+ if ((xmlListSearch(list, ns) == NULL)
+ && (!xmlExcC14NIsRendered(ctx, ns))) {
+ xmlListInsert(list, ns);
+ xmlXPathNodeSetAdd(ctx->ns_rendered, (xmlNodePtr) ns);
+ }
+ }
+ }
+ attr = attr->next;
}
-
+
/*
* Next add all inclusive namespaces if needed.
*/
- if(ctx->inclusive_ns_prefixes != NULL) {
- int i;
- xmlChar *prefix;
-
- for(i = 0; ctx->inclusive_ns_prefixes[i] != NULL; ++i) {
- prefix = ctx->inclusive_ns_prefixes[i];
- /*
- * Special values for namespace with empty prefix
- */
- if(xmlStrEqual(prefix, BAD_CAST "#default") || xmlStrEqual(prefix, BAD_CAST "")) {
- prefix = NULL;
- }
- ns = xmlSearchNs(ctx->doc, cur, prefix);
- if(ns != NULL && !xmlC14NIsXmlNs(ns)) {
- if(xmlListSearch(list, ns) == NULL &&
- !xmlExcC14NIsRendered(ctx, ns)) {
- xmlListInsert(list, ns);
- xmlXPathNodeSetAdd(ctx->ns_rendered, (xmlNodePtr)ns);
- }
- }
- }
+ if (ctx->inclusive_ns_prefixes != NULL) {
+ int i;
+ xmlChar *prefix;
+
+ for (i = 0; ctx->inclusive_ns_prefixes[i] != NULL; ++i) {
+ prefix = ctx->inclusive_ns_prefixes[i];
+ /*
+ * Special values for namespace with empty prefix
+ */
+ if (xmlStrEqual(prefix, BAD_CAST "#default")
+ || xmlStrEqual(prefix, BAD_CAST "")) {
+ prefix = NULL;
+ }
+ ns = xmlSearchNs(ctx->doc, cur, prefix);
+ if ((ns != NULL) && (!xmlC14NIsXmlNs(ns))) {
+ if (xmlListSearch(list, ns) == NULL &&
+ !xmlExcC14NIsRendered(ctx, ns)) {
+ xmlListInsert(list, ns);
+ xmlXPathNodeSetAdd(ctx->ns_rendered, (xmlNodePtr) ns);
+ }
+ }
+ }
}
-
+
/*
* print out all elements from list
*/
- xmlListWalk(list, (xmlListWalker)xmlC14NPrintNamespaces, (const void*)ctx);
-
+ xmlListWalk(list, (xmlListWalker) xmlC14NPrintNamespaces,
+ (const void *) ctx);
+
/*
* Cleanup
*/
xmlListDelete(list);
- return(0);
+ return (0);
}
@@ -474,17 +499,21 @@
* Returns -1 if attr1 < attr2, 0 if attr1 == attr2 or 1 if attr1 > attr2.
*/
static int
-xmlC14NAttrsCompare(xmlAttrPtr attr1, xmlAttrPtr attr2) {
+xmlC14NAttrsCompare(xmlAttrPtr attr1, xmlAttrPtr attr2)
+{
int ret = 0;
/*
* Simple cases
*/
- if(attr1 == attr2) return(0);
- if(attr1 == NULL) return(-1);
- if(attr2 == NULL) return(1);
- if(attr1->ns == attr2->ns) {
- return(xmlStrcmp(attr1->name, attr2->name));
+ if (attr1 == attr2)
+ return (0);
+ if (attr1 == NULL)
+ return (-1);
+ if (attr2 == NULL)
+ return (1);
+ if (attr1->ns == attr2->ns) {
+ return (xmlStrcmp(attr1->name, attr2->name));
}
/*
@@ -492,16 +521,20 @@
* because the default namespace is not applied to
* unqualified attributes
*/
- if(attr1->ns == NULL) return(-1);
- if(attr2->ns == NULL) return(1);
- if(attr1->ns->prefix == NULL) return(-1);
- if(attr2->ns->prefix == NULL) return(1);
-
+ if (attr1->ns == NULL)
+ return (-1);
+ if (attr2->ns == NULL)
+ return (1);
+ if (attr1->ns->prefix == NULL)
+ return (-1);
+ if (attr2->ns->prefix == NULL)
+ return (1);
+
ret = xmlStrcmp(attr1->ns->href, attr2->ns->href);
- if(ret == 0) {
- ret = xmlStrcmp(attr1->name, attr2->name);
+ if (ret == 0) {
+ ret = xmlStrcmp(attr1->name, attr2->name);
}
- return(ret);
+ return (ret);
}
@@ -518,44 +551,46 @@
* Returns 1 on success or 0 on fail.
*/
static int
-xmlC14NPrintAttrs(const xmlAttrPtr attr, xmlC14NCtxPtr ctx) {
+xmlC14NPrintAttrs(const xmlAttrPtr attr, xmlC14NCtxPtr ctx)
+{
xmlChar *value;
xmlChar *buffer;
- if(attr == NULL || ctx == NULL) {
+ if ((attr == NULL) || (ctx == NULL)) {
#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NPrintAttrs: attr == NULL or ctx == NULL\n");
+ "xmlC14NPrintAttrs: attr == NULL or ctx == NULL\n");
#endif
- return(0);
+ return (0);
}
xmlOutputBufferWriteString(ctx->buf, " ");
- if(attr->ns != NULL && xmlStrlen(attr->ns->prefix) > 0) {
- xmlOutputBufferWriteString(ctx->buf, (const char *) attr->ns->prefix);
- xmlOutputBufferWriteString(ctx->buf, ":");
+ if (attr->ns != NULL && xmlStrlen(attr->ns->prefix) > 0) {
+ xmlOutputBufferWriteString(ctx->buf,
+ (const char *) attr->ns->prefix);
+ xmlOutputBufferWriteString(ctx->buf, ":");
}
xmlOutputBufferWriteString(ctx->buf, (const char *) attr->name);
xmlOutputBufferWriteString(ctx->buf, "=\"");
value = xmlNodeListGetString(attr->doc, attr->children, 1);
/* todo: should we log an error if value==NULL ? */
- if(value != NULL) {
- buffer = xmlC11NNormalizeAttr(value);
- xmlFree(value);
- if (buffer != NULL) {
- xmlOutputBufferWriteString(ctx->buf, (const char *)buffer);
- xmlFree(buffer);
- } else {
+ if (value != NULL) {
+ buffer = xmlC11NNormalizeAttr(value);
+ xmlFree(value);
+ if (buffer != NULL) {
+ xmlOutputBufferWriteString(ctx->buf, (const char *) buffer);
+ xmlFree(buffer);
+ } else {
#ifdef DEBUG_C14N
- xmlGenericError(xmlGenericErrorContext,
- "xmlC14NPrintAttrs: xmlC11NNormalizeAttr failed\n");
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlC14NPrintAttrs: xmlC11NNormalizeAttr failed\n");
#endif
- return(0);
- }
+ return (0);
+ }
}
xmlOutputBufferWriteString(ctx->buf, "\"");
- return(1);
+ return (1);
}
/**
@@ -590,76 +625,80 @@
* Returns 0 on success or -1 on fail.
*/
static int
-xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
+xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur)
+{
xmlAttrPtr attr;
xmlListPtr list;
-
- if(ctx == NULL || cur == NULL || cur->type != XML_ELEMENT_NODE) {
-#ifdef DEBUG_C14N
+
+ if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) {
+#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessAttrsAxis: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
-#endif
- return(-1);
- }
+ "xmlC14NProcessAttrsAxis: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
+#endif
+ return (-1);
+ }
/*
* Create a sorted list to store element attributes
*/
- list = xmlListCreate(NULL, (xmlListDataCompare)xmlC14NAttrsCompare);
- if(list == NULL) {
+ list = xmlListCreate(NULL, (xmlListDataCompare) xmlC14NAttrsCompare);
+ if (list == NULL) {
#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessAttrsAxis: list creation failed\n");
+ "xmlC14NProcessAttrsAxis: list creation failed\n");
#endif
- return(-1);
+ return (-1);
}
/*
* Add all visible attributes from current node.
*/
attr = cur->properties;
- while (attr != NULL) {
- /* check that attribute is visible */
- if(xmlC14NIsVisible(ctx, attr)) {
- xmlListInsert(list, attr);
- }
- attr = attr->next;
+ while (attr != NULL) {
+ /* check that attribute is visible */
+ if (xmlC14NIsVisible(ctx, attr)) {
+ xmlListInsert(list, attr);
+ }
+ attr = attr->next;
}
-
+
/*
* include attributes in "xml" namespace defined in ancestors
* (only for non-exclusive XML Canonicalization)
*/
- if(!ctx->exclusive && cur->parent != NULL && !xmlC14NIsVisible(ctx, cur->parent)) {
+ if ((!ctx->exclusive) && (cur->parent != NULL)
+ && (!xmlC14NIsVisible(ctx, cur->parent))) {
/*
- * If XPath node-set is not specified then the parent is always
- * visible!
- */
- cur = cur->parent;
- while(cur != NULL) {
- attr = cur->properties;
- while (attr != NULL) {
- if(attr->ns != NULL && xmlStrEqual(attr->ns->prefix, BAD_CAST "xml")) {
- if(xmlListSearch(list, attr) == NULL) {
- xmlListInsert(list, attr);
- }
- }
- attr = attr->next;
- }
- cur = cur->parent;
- }
+ * If XPath node-set is not specified then the parent is always
+ * visible!
+ */
+ cur = cur->parent;
+ while (cur != NULL) {
+ attr = cur->properties;
+ while (attr != NULL) {
+ if ((attr->ns != NULL)
+ && (xmlStrEqual(attr->ns->prefix, BAD_CAST "xml"))) {
+ if (xmlListSearch(list, attr) == NULL) {
+ xmlListInsert(list, attr);
+ }
+ }
+ attr = attr->next;
+ }
+ cur = cur->parent;
+ }
}
-
+
/*
* print out all elements from list
*/
- xmlListWalk(list, (xmlListWalker)xmlC14NPrintAttrs, (const void*)ctx);
-
+ xmlListWalk(list, (xmlListWalker) xmlC14NPrintAttrs,
+ (const void *) ctx);
+
/*
* Cleanup
*/
- xmlListDelete(list);
- return(0);
+ xmlListDelete(list);
+ return (0);
}
/**
@@ -672,43 +711,47 @@
* Returns 0 if the node has no relative namespaces or -1 otherwise.
*/
static int
-xmlC14NCheckForRelativeNamespaces(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
+xmlC14NCheckForRelativeNamespaces(xmlC14NCtxPtr ctx, xmlNodePtr cur)
+{
xmlNsPtr ns;
-
- if(ctx == NULL || cur == NULL || cur->type != XML_ELEMENT_NODE) {
-#ifdef DEBUG_C14N
- xmlGenericError(xmlGenericErrorContext,
- "xmlC14NCheckForRelativeNamespaces: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
-#endif
- return(-1);
- }
- ns = cur->nsDef;
- while(ns != NULL) {
- if(xmlStrlen(ns->href) > 0) {
- xmlURIPtr uri;
-
- uri = xmlParseURI((const char *) ns->href);
- if(uri == NULL) {
-#ifdef DEBUG_C14N
- xmlGenericError(xmlGenericErrorContext,
- "xmlC14NCheckForRelativeNamespaces: unable to parse uri=\"%s\".\n", ns->href);
-#endif
- return(-1);
- }
- if(xmlStrlen((const xmlChar *) uri->scheme) == 0) {
- xmlFreeURI(uri);
- return(-1);
- }
- if(!xmlStrEqual((const xmlChar *) uri->scheme, BAD_CAST "urn") && xmlStrlen((const xmlChar *) uri->server) == 0) {
- xmlFreeURI(uri);
- return(-1);
- }
- xmlFreeURI(uri);
- }
- ns = ns->next;
+ if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) {
+#ifdef DEBUG_C14N
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlC14NCheckForRelativeNamespaces: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
+#endif
+ return (-1);
}
- return(0);
+
+ ns = cur->nsDef;
+ while (ns != NULL) {
+ if (xmlStrlen(ns->href) > 0) {
+ xmlURIPtr uri;
+
+ uri = xmlParseURI((const char *) ns->href);
+ if (uri == NULL) {
+#ifdef DEBUG_C14N
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlC14NCheckForRelativeNamespaces: unable to parse uri=\"%s\".\n",
+ ns->href);
+#endif
+ return (-1);
+ }
+ if (xmlStrlen((const xmlChar *) uri->scheme) == 0) {
+ xmlFreeURI(uri);
+ return (-1);
+ }
+ if ((!xmlStrEqual
+ ((const xmlChar *) uri->scheme, BAD_CAST "urn"))
+ && (xmlStrlen((const xmlChar *) uri->server) == 0)) {
+ xmlFreeURI(uri);
+ return (-1);
+ }
+ xmlFreeURI(uri);
+ }
+ ns = ns->next;
+ }
+ return (0);
}
/**
@@ -733,29 +776,30 @@
* Returns non-negative value on success or negative value on fail
*/
static int
-xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) {
+xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
+{
int ret;
int ns_rendered_pos = 0;
- if(ctx == NULL || cur == NULL || cur->type != XML_ELEMENT_NODE) {
-#ifdef DEBUG_C14N
+ if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) {
+#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessElementNode: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
-#endif
- return(-1);
- }
+ "xmlC14NProcessElementNode: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
+#endif
+ return (-1);
+ }
/*
* Check relative relative namespaces:
* implementations of XML canonicalization MUST report an operation
* failure on documents containing relative namespace URIs.
*/
- if(xmlC14NCheckForRelativeNamespaces(ctx, cur) < 0) {
-#ifdef DEBUG_C14N
- xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessElementNode: xmlC14NCheckForRelativeNamespaces failed.\n");
-#endif
- return(-1);
+ if (xmlC14NCheckForRelativeNamespaces(ctx, cur) < 0) {
+#ifdef DEBUG_C14N
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlC14NProcessElementNode: xmlC14NCheckForRelativeNamespaces failed.\n");
+#endif
+ return (-1);
}
@@ -763,77 +807,79 @@
* Save ns_rendered stack position for exclusive
* processing
*/
- if(ctx->exclusive && ctx->ns_rendered != NULL) {
- ns_rendered_pos = ctx->ns_rendered->nodeNr;
- }
+ if ((ctx->exclusive) && (ctx->ns_rendered != NULL)) {
+ ns_rendered_pos = ctx->ns_rendered->nodeNr;
+ }
- if(visible) {
- if(ctx->parent_is_doc) {
- ctx->pos = XMLC14N_INSIDE_DOCUMENT_ELEMENT;
- }
- xmlOutputBufferWriteString(ctx->buf, "<");
+ if (visible) {
+ if (ctx->parent_is_doc) {
+ ctx->pos = XMLC14N_INSIDE_DOCUMENT_ELEMENT;
+ }
+ xmlOutputBufferWriteString(ctx->buf, "<");
- if(cur->ns != NULL && xmlStrlen(cur->ns->prefix) > 0) {
- xmlOutputBufferWriteString(ctx->buf, (const char *)cur->ns->prefix);
- xmlOutputBufferWriteString(ctx->buf, ":");
- }
- xmlOutputBufferWriteString(ctx->buf, (const char *)cur->name);
+ if ((cur->ns != NULL) && (xmlStrlen(cur->ns->prefix) > 0)) {
+ xmlOutputBufferWriteString(ctx->buf,
+ (const char *) cur->ns->prefix);
+ xmlOutputBufferWriteString(ctx->buf, ":");
+ }
+ xmlOutputBufferWriteString(ctx->buf, (const char *) cur->name);
- if(ctx->exclusive) {
- ret = xmlExcC14NProcessNamespacesAxis(ctx, cur);
- } else {
- ret = xmlC14NProcessNamespacesAxis(ctx, cur);
- }
- if(ret < 0) {
-#ifdef DEBUG_C14N
- xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessElementNode: xmlC14NProcessNamespacesAxis failed.\n");
-#endif
- return(-1);
- }
-
- ret = xmlC14NProcessAttrsAxis(ctx, cur);
- if(ret < 0) {
-#ifdef DEBUG_C14N
- xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessElementNode: xmlC14NProcessAttrsAxis failed.\n");
-#endif
- return(-1);
- }
+ if (ctx->exclusive) {
+ ret = xmlExcC14NProcessNamespacesAxis(ctx, cur);
+ } else {
+ ret = xmlC14NProcessNamespacesAxis(ctx, cur);
+ }
+ if (ret < 0) {
+#ifdef DEBUG_C14N
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlC14NProcessElementNode: xmlC14NProcessNamespacesAxis failed.\n");
+#endif
+ return (-1);
+ }
- xmlOutputBufferWriteString(ctx->buf, ">");
+ ret = xmlC14NProcessAttrsAxis(ctx, cur);
+ if (ret < 0) {
+#ifdef DEBUG_C14N
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlC14NProcessElementNode: xmlC14NProcessAttrsAxis failed.\n");
+#endif
+ return (-1);
+ }
+
+ xmlOutputBufferWriteString(ctx->buf, ">");
}
if (cur->children != NULL) {
- ret = xmlC14NProcessNodeList(ctx, cur->children);
- if(ret < 0) {
-#ifdef DEBUG_C14N
- xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessElementNode: xmlC14NProcessNodeList failed.\n");
-#endif
- return(-1);
- }
+ ret = xmlC14NProcessNodeList(ctx, cur->children);
+ if (ret < 0) {
+#ifdef DEBUG_C14N
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlC14NProcessElementNode: xmlC14NProcessNodeList failed.\n");
+#endif
+ return (-1);
+ }
}
- if(visible) {
- xmlOutputBufferWriteString(ctx->buf, "</");
- if(cur->ns != NULL && xmlStrlen(cur->ns->prefix) > 0) {
- xmlOutputBufferWriteString(ctx->buf, (const char *)cur->ns->prefix);
- xmlOutputBufferWriteString(ctx->buf, ":");
- }
- xmlOutputBufferWriteString(ctx->buf, (const char *)cur->name);
- xmlOutputBufferWriteString(ctx->buf, ">");
- if(ctx->parent_is_doc) {
- ctx->pos = XMLC14N_AFTER_DOCUMENT_ELEMENT;
- }
+ if (visible) {
+ xmlOutputBufferWriteString(ctx->buf, "</");
+ if ((cur->ns != NULL) && (xmlStrlen(cur->ns->prefix) > 0)) {
+ xmlOutputBufferWriteString(ctx->buf,
+ (const char *) cur->ns->prefix);
+ xmlOutputBufferWriteString(ctx->buf, ":");
+ }
+ xmlOutputBufferWriteString(ctx->buf, (const char *) cur->name);
+ xmlOutputBufferWriteString(ctx->buf, ">");
+ if (ctx->parent_is_doc) {
+ ctx->pos = XMLC14N_AFTER_DOCUMENT_ELEMENT;
+ }
}
/*
* Restore ns_rendered stack position for exclusive
* processing
*/
- if(ctx->exclusive && ctx->ns_rendered != NULL) {
- ctx->ns_rendered->nodeNr = ns_rendered_pos;
- }
- return(0);
+ if ((ctx->exclusive) && (ctx->ns_rendered != NULL)) {
+ ctx->ns_rendered->nodeNr = ns_rendered_pos;
+ }
+ return (0);
}
/**
@@ -846,204 +892,199 @@
* Returns non-negative value on success or negative value on fail
*/
static int
-xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
+xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur)
+{
int ret = 0;
int visible;
-
- if(ctx == NULL || cur == NULL) {
-#ifdef DEBUG_C14N
+
+ if ((ctx == NULL) || (cur == NULL)) {
+#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessNode: Null context or node pointer.\n");
-#endif
- return(-1);
+ "xmlC14NProcessNode: Null context or node pointer.\n");
+#endif
+ return (-1);
}
visible = xmlC14NIsVisible(ctx, cur);
- switch(cur->type) {
- case XML_ELEMENT_NODE:
- ret = xmlC14NProcessElementNode(ctx, cur, visible);
- break;
- case XML_CDATA_SECTION_NODE:
- case XML_TEXT_NODE:
- /*
- * Text Nodes
- * the string value, except all ampersands are replaced
- * by &, all open angle brackets (<) are replaced by <, all closing
- * angle brackets (>) are replaced by >, and all #xD characters are
- * replaced by 
.
- */
- /* cdata sections are processed as text nodes */
- /* todo: verify that cdata sections are included in XPath nodes set */
- if(visible && cur->content != NULL) {
- xmlChar *buffer;
+ switch (cur->type) {
+ case XML_ELEMENT_NODE:
+ ret = xmlC14NProcessElementNode(ctx, cur, visible);
+ break;
+ case XML_CDATA_SECTION_NODE:
+ case XML_TEXT_NODE:
+ /*
+ * Text Nodes
+ * the string value, except all ampersands are replaced
+ * by &, all open angle brackets (<) are replaced by <, all closing
+ * angle brackets (>) are replaced by >, and all #xD characters are
+ * replaced by 
.
+ */
+ /* cdata sections are processed as text nodes */
+ /* todo: verify that cdata sections are included in XPath nodes set */
+ if ((visible) && (cur->content != NULL)) {
+ xmlChar *buffer;
-#ifndef XML_USE_BUFFER_CONTENT
- buffer = xmlC11NNormalizeText(cur->content);
-#else
- buffer = xmlC11NNormalizeText(xmlBufferContent(cur->content));
-#endif
- if(buffer != NULL) {
- xmlOutputBufferWriteString(ctx->buf, (const char *)buffer);
- xmlFree(buffer);
- } else {
+ buffer = xmlC11NNormalizeText(cur->content);
+ if (buffer != NULL) {
+ xmlOutputBufferWriteString(ctx->buf,
+ (const char *) buffer);
+ xmlFree(buffer);
+ } else {
#ifdef DEBUG_C14N
- xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessNode: xmlC11NNormalizeText() failed\n");
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlC14NProcessNode: xmlC11NNormalizeText() failed\n");
#endif
- return(-1);
- }
- }
- break;
- case XML_PI_NODE:
- /*
- * Processing Instruction (PI) Nodes-
- * The opening PI symbol (<?), the PI target name of the node,
- * a leading space and the string value if it is not empty, and
- * the closing PI symbol (?>). If the string value is empty,
- * then the leading space is not added. Also, a trailing #xA is
- * rendered after the closing PI symbol for PI children of the
- * root node with a lesser document order than the document
- * element, and a leading #xA is rendered before the opening PI
- * symbol of PI children of the root node with a greater document
- * order than the document element.
- */
- if(visible) {
- if(ctx->pos == XMLC14N_AFTER_DOCUMENT_ELEMENT) {
- xmlOutputBufferWriteString(ctx->buf, "\x0A<?");
- } else {
- xmlOutputBufferWriteString(ctx->buf, "<?");
- }
+ return (-1);
+ }
+ }
+ break;
+ case XML_PI_NODE:
+ /*
+ * Processing Instruction (PI) Nodes-
+ * The opening PI symbol (<?), the PI target name of the node,
+ * a leading space and the string value if it is not empty, and
+ * the closing PI symbol (?>). If the string value is empty,
+ * then the leading space is not added. Also, a trailing #xA is
+ * rendered after the closing PI symbol for PI children of the
+ * root node with a lesser document order than the document
+ * element, and a leading #xA is rendered before the opening PI
+ * symbol of PI children of the root node with a greater document
+ * order than the document element.
+ */
+ if (visible) {
+ if (ctx->pos == XMLC14N_AFTER_DOCUMENT_ELEMENT) {
+ xmlOutputBufferWriteString(ctx->buf, "\x0A<?");
+ } else {
+ xmlOutputBufferWriteString(ctx->buf, "<?");
+ }
- xmlOutputBufferWriteString(ctx->buf, (const char *)cur->name);
- if(cur->content != NULL && *(cur->content) != '\0') {
- xmlChar *buffer;
- xmlOutputBufferWriteString(ctx->buf, " ");
-
- /* todo: do we need to normalize pi? */
-#ifndef XML_USE_BUFFER_CONTENT
- buffer = xmlC11NNormalizePI(cur->content);
-#else
- buffer = xmlC11NNormalizePI(xmlBufferContent(cur->content));
-#endif
- if (buffer != NULL) {
- xmlOutputBufferWriteString(ctx->buf, (const char *)buffer);
- xmlFree(buffer);
- } else {
+ xmlOutputBufferWriteString(ctx->buf,
+ (const char *) cur->name);
+ if ((cur->content != NULL) && (*(cur->content) != '\0')) {
+ xmlChar *buffer;
+
+ xmlOutputBufferWriteString(ctx->buf, " ");
+
+ /* todo: do we need to normalize pi? */
+ buffer = xmlC11NNormalizePI(cur->content);
+ if (buffer != NULL) {
+ xmlOutputBufferWriteString(ctx->buf,
+ (const char *) buffer);
+ xmlFree(buffer);
+ } else {
#ifdef DEBUG_C14N
- xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessNode: xmlC11NNormalizePI() failed\n");
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlC14NProcessNode: xmlC11NNormalizePI() failed\n");
#endif
- return(-1);
- }
- }
+ return (-1);
+ }
+ }
- if(ctx->pos == XMLC14N_BEFORE_DOCUMENT_ELEMENT) {
- xmlOutputBufferWriteString(ctx->buf, "?>\x0A");
- } else {
- xmlOutputBufferWriteString(ctx->buf, "?>");
- }
- }
- break;
- case XML_COMMENT_NODE:
- /*
- * Comment Nodes
- * Nothing if generating canonical XML without comments. For
- * canonical XML with comments, generate the opening comment
- * symbol (<!--), the string value of the node, and the
- * closing comment symbol (-->). Also, a trailing #xA is rendered
- * after the closing comment symbol for comment children of the
- * root node with a lesser document order than the document
- * element, and a leading #xA is rendered before the opening
- * comment symbol of comment children of the root node with a
- * greater document order than the document element. (Comment
- * children of the root node represent comments outside of the
- * top-level document element and outside of the document type
- * declaration).
- */
- if(visible && ctx->with_comments) {
- if(ctx->pos == XMLC14N_AFTER_DOCUMENT_ELEMENT) {
- xmlOutputBufferWriteString(ctx->buf, "\x0A<!--");
- } else {
- xmlOutputBufferWriteString(ctx->buf, "<!--");
- }
+ if (ctx->pos == XMLC14N_BEFORE_DOCUMENT_ELEMENT) {
+ xmlOutputBufferWriteString(ctx->buf, "?>\x0A");
+ } else {
+ xmlOutputBufferWriteString(ctx->buf, "?>");
+ }
+ }
+ break;
+ case XML_COMMENT_NODE:
+ /*
+ * Comment Nodes
+ * Nothing if generating canonical XML without comments. For
+ * canonical XML with comments, generate the opening comment
+ * symbol (<!--), the string value of the node, and the
+ * closing comment symbol (-->). Also, a trailing #xA is rendered
+ * after the closing comment symbol for comment children of the
+ * root node with a lesser document order than the document
+ * element, and a leading #xA is rendered before the opening
+ * comment symbol of comment children of the root node with a
+ * greater document order than the document element. (Comment
+ * children of the root node represent comments outside of the
+ * top-level document element and outside of the document type
+ * declaration).
+ */
+ if (visible && ctx->with_comments) {
+ if (ctx->pos == XMLC14N_AFTER_DOCUMENT_ELEMENT) {
+ xmlOutputBufferWriteString(ctx->buf, "\x0A<!--");
+ } else {
+ xmlOutputBufferWriteString(ctx->buf, "<!--");
+ }
- if(cur->content != NULL) {
- xmlChar *buffer;
+ if (cur->content != NULL) {
+ xmlChar *buffer;
- /* todo: do we need to normalize comment? */
-#ifndef XML_USE_BUFFER_CONTENT
- buffer = xmlC11NNormalizeComment(cur->content);
-#else
- buffer = xmlC11NNormalizeString(xmlBufferContent(cur->content));
-#endif
- if (buffer != NULL) {
- xmlOutputBufferWriteString(ctx->buf, (const char *)buffer);
- xmlFree(buffer);
- } else {
+ /* todo: do we need to normalize comment? */
+ buffer = xmlC11NNormalizeComment(cur->content);
+ if (buffer != NULL) {
+ xmlOutputBufferWriteString(ctx->buf,
+ (const char *) buffer);
+ xmlFree(buffer);
+ } else {
#ifdef DEBUG_C14N
- xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessNode: xmlC11NNormalizeComment() failed\n");
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlC14NProcessNode: xmlC11NNormalizeComment() failed\n");
#endif
- return(-1);
- }
- }
-
- if(ctx->pos == XMLC14N_BEFORE_DOCUMENT_ELEMENT) {
- xmlOutputBufferWriteString(ctx->buf, "-->\x0A");
- } else {
- xmlOutputBufferWriteString(ctx->buf, "-->");
- }
- }
- break;
- case XML_DOCUMENT_NODE:
- case XML_DOCUMENT_FRAG_NODE: /* should be processed as document? */
- case XML_DOCB_DOCUMENT_NODE: /* should be processed as document? */
- case XML_HTML_DOCUMENT_NODE: /* should be processed as document? */
- if (cur->children != NULL) {
- ctx->pos = XMLC14N_BEFORE_DOCUMENT_ELEMENT;
- ctx->parent_is_doc = 1;
- ret = xmlC14NProcessNodeList(ctx, cur->children);
- }
- break;
+ return (-1);
+ }
+ }
- case XML_ATTRIBUTE_NODE:
- xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessNode: XML_ATTRIBUTE_NODE is illegal here\n");
- return(-1);
- case XML_NAMESPACE_DECL:
- xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessNode: XML_NAMESPACE_DECL is illegal here\n");
- return(-1);
- case XML_ENTITY_REF_NODE:
- xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessNode: XML_ENTITY_REF_NODE is illegal here\n");
- return(-1);
- case XML_ENTITY_NODE:
- xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessNode: XML_ENTITY_NODE is illegal here\n");
- return(-1);
+ if (ctx->pos == XMLC14N_BEFORE_DOCUMENT_ELEMENT) {
+ xmlOutputBufferWriteString(ctx->buf, "-->\x0A");
+ } else {
+ xmlOutputBufferWriteString(ctx->buf, "-->");
+ }
+ }
+ break;
+ case XML_DOCUMENT_NODE:
+ case XML_DOCUMENT_FRAG_NODE: /* should be processed as document? */
+ case XML_DOCB_DOCUMENT_NODE: /* should be processed as document? */
+ case XML_HTML_DOCUMENT_NODE: /* should be processed as document? */
+ if (cur->children != NULL) {
+ ctx->pos = XMLC14N_BEFORE_DOCUMENT_ELEMENT;
+ ctx->parent_is_doc = 1;
+ ret = xmlC14NProcessNodeList(ctx, cur->children);
+ }
+ break;
- case XML_DOCUMENT_TYPE_NODE:
- case XML_NOTATION_NODE:
- case XML_DTD_NODE:
- case XML_ELEMENT_DECL:
- case XML_ATTRIBUTE_DECL:
- case XML_ENTITY_DECL:
- case XML_XINCLUDE_START:
- case XML_XINCLUDE_END:
- /*
- * should be ignored according to "W3C Canonical XML"
- */
- break;
- default:
+ case XML_ATTRIBUTE_NODE:
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlC14NProcessNode: XML_ATTRIBUTE_NODE is illegal here\n");
+ return (-1);
+ case XML_NAMESPACE_DECL:
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlC14NProcessNode: XML_NAMESPACE_DECL is illegal here\n");
+ return (-1);
+ case XML_ENTITY_REF_NODE:
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlC14NProcessNode: XML_ENTITY_REF_NODE is illegal here\n");
+ return (-1);
+ case XML_ENTITY_NODE:
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlC14NProcessNode: XML_ENTITY_NODE is illegal here\n");
+ return (-1);
+
+ case XML_DOCUMENT_TYPE_NODE:
+ case XML_NOTATION_NODE:
+ case XML_DTD_NODE:
+ case XML_ELEMENT_DECL:
+ case XML_ATTRIBUTE_DECL:
+ case XML_ENTITY_DECL:
+ case XML_XINCLUDE_START:
+ case XML_XINCLUDE_END:
+ /*
+ * should be ignored according to "W3C Canonical XML"
+ */
+ break;
+ default:
#ifdef DEBUG_C14N
- xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessNode: unknown node type = %d\n", cur->type);
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlC14NProcessNode: unknown node type = %d\n",
+ cur->type);
#endif
- return(-1);
+ return (-1);
}
- return(ret);
+ return (ret);
}
/**
@@ -1056,21 +1097,22 @@
* Returns non-negative value on success or negative value on fail
*/
static int
-xmlC14NProcessNodeList(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
+xmlC14NProcessNodeList(xmlC14NCtxPtr ctx, xmlNodePtr cur)
+{
int ret;
-
- if(ctx == NULL) {
-#ifdef DEBUG_C14N
+
+ if (ctx == NULL) {
+#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NProcessNodeList: Null context pointer.\n");
-#endif
- return(-1);
+ "xmlC14NProcessNodeList: Null context pointer.\n");
+#endif
+ return (-1);
}
- for(ret = 0; cur != NULL && ret >= 0; cur = cur->next) {
- ret = xmlC14NProcessNode(ctx, cur);
- }
- return(ret);
+ for (ret = 0; cur != NULL && ret >= 0; cur = cur->next) {
+ ret = xmlC14NProcessNode(ctx, cur);
+ }
+ return (ret);
}
@@ -1082,17 +1124,18 @@
*/
static void
-xmlC14NFreeCtx(xmlC14NCtxPtr ctx) {
- if(ctx == NULL) {
+xmlC14NFreeCtx(xmlC14NCtxPtr ctx)
+{
+ if (ctx == NULL) {
#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NFreeCtx: ctx == NULL\n");
+ "xmlC14NFreeCtx: ctx == NULL\n");
#endif
- return;
+ return;
}
-
- if(ctx->ns_rendered != NULL) {
- xmlXPathFreeNodeSet(ctx->ns_rendered);
+
+ if (ctx->ns_rendered != NULL) {
+ xmlXPathFreeNodeSet(ctx->ns_rendered);
}
xmlFree(ctx);
}
@@ -1118,37 +1161,37 @@
* Returns pointer to newly created object (success) or NULL (fail)
*/
static xmlC14NCtxPtr
-xmlC14NNewCtx(xmlDocPtr doc, xmlNodeSetPtr nodes,
- int exclusive, xmlChar **inclusive_ns_prefixes,
- int with_comments,
- xmlOutputBufferPtr buf) {
+xmlC14NNewCtx(xmlDocPtr doc, xmlNodeSetPtr nodes,
+ int exclusive, xmlChar ** inclusive_ns_prefixes,
+ int with_comments, xmlOutputBufferPtr buf)
+{
xmlC14NCtxPtr ctx;
- if(doc == NULL || buf == NULL) {
+ if ((doc == NULL) || (buf == NULL)) {
#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NNewCtx: pointer to document or output buffer is NULL\n");
+ "xmlC14NNewCtx: pointer to document or output buffer is NULL\n");
#endif
- return(NULL);
+ return (NULL);
}
/*
* Validate the encoding output buffer encoding
*/
- if(buf->encoder != NULL) {
+ if (buf->encoder != NULL) {
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NNewCtx: output buffer encoder != NULL but C14N requires UTF8 output\n");
- return(NULL);
+ "xmlC14NNewCtx: output buffer encoder != NULL but C14N requires UTF8 output\n");
+ return (NULL);
}
/*
* Validate the XML document encoding value, if provided.
*/
- if(doc->charset != XML_CHAR_ENCODING_UTF8) {
+ if (doc->charset != XML_CHAR_ENCODING_UTF8) {
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NNewCtx: source document not in UTF8\n");
- return(NULL);
- }
+ "xmlC14NNewCtx: source document not in UTF8\n");
+ return (NULL);
+ }
/*
* Allocate a new xmlC14NCtxPtr and fill the fields.
@@ -1156,14 +1199,14 @@
ctx = (xmlC14NCtxPtr) xmlMalloc(sizeof(xmlC14NCtx));
if (ctx == NULL) {
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NNewCtx: malloc failed\n");
- return(NULL);
+ "xmlC14NNewCtx: malloc failed\n");
+ return (NULL);
}
memset(ctx, 0, sizeof(xmlC14NCtx));
/*
* initialize C14N context
- */
+ */
ctx->doc = doc;
ctx->with_comments = with_comments;
ctx->visible_nodes = nodes;
@@ -1175,12 +1218,12 @@
* Set "exclusive" flag, create a nodes set for namespaces
* stack and remember list of incluseve prefixes
*/
- if(exclusive) {
- ctx->exclusive = 1;
- ctx->ns_rendered = xmlXPathNodeSetCreate(NULL);
+ if (exclusive) {
+ ctx->exclusive = 1;
+ ctx->ns_rendered = xmlXPathNodeSetCreate(NULL);
ctx->inclusive_ns_prefixes = inclusive_ns_prefixes;
}
- return(ctx);
+ return (ctx);
}
/**
@@ -1206,36 +1249,36 @@
* Returns non-negative value on success or a negative value on fail
*/
int
-xmlC14NDocSaveTo(xmlDocPtr doc, xmlNodeSetPtr nodes,
- int exclusive, xmlChar **inclusive_ns_prefixes,
- int with_comments,
- xmlOutputBufferPtr buf) {
+xmlC14NDocSaveTo(xmlDocPtr doc, xmlNodeSetPtr nodes,
+ int exclusive, xmlChar ** inclusive_ns_prefixes,
+ int with_comments, xmlOutputBufferPtr buf)
+{
xmlC14NCtxPtr ctx;
int ret;
-
- if(buf == NULL || doc == NULL) {
-#ifdef DEBUG_C14N
+
+ if ((buf == NULL) || (doc == NULL)) {
+#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NDocSaveTo: null return buffer or doc pointer\n");
-#endif
- return(-1);
+ "xmlC14NDocSaveTo: null return buffer or doc pointer\n");
+#endif
+ return (-1);
}
/*
* Validate the encoding output buffer encoding
*/
- if(buf->encoder != NULL) {
+ if (buf->encoder != NULL) {
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NDocSaveTo: output buffer encoder != NULL but C14N requires UTF8 output\n");
- return(-1);
+ "xmlC14NDocSaveTo: output buffer encoder != NULL but C14N requires UTF8 output\n");
+ return (-1);
}
ctx = xmlC14NNewCtx(doc, nodes, exclusive, inclusive_ns_prefixes,
- with_comments, buf);
- if(ctx == NULL) {
+ with_comments, buf);
+ if (ctx == NULL) {
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NDocSaveTo: unable to create C14N context\n");
- return(-1);
+ "xmlC14NDocSaveTo: unable to create C14N context\n");
+ return (-1);
}
@@ -1248,36 +1291,36 @@
* XML declaration, nor anything from within the document type
* declaration.
*/
- if(doc->children != NULL) {
- ret = xmlC14NProcessNodeList(ctx, doc->children);
- if(ret < 0) {
-#ifdef DEBUG_C14N
- xmlGenericError(xmlGenericErrorContext,
- "xmlC14NDocSaveTo: process childrens' list failed.\n");
-#endif
- xmlC14NFreeCtx(ctx);
- return(-1);
- }
- }
-
+ if (doc->children != NULL) {
+ ret = xmlC14NProcessNodeList(ctx, doc->children);
+ if (ret < 0) {
+#ifdef DEBUG_C14N
+ xmlGenericError(xmlGenericErrorContext,
+ "xmlC14NDocSaveTo: process childrens' list failed.\n");
+#endif
+ xmlC14NFreeCtx(ctx);
+ return (-1);
+ }
+ }
+
/*
* Flush buffer to get number of bytes written
*/
ret = xmlOutputBufferFlush(buf);
- if(ret < 0) {
-#ifdef DEBUG_C14N
+ if (ret < 0) {
+#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NDocSaveTo: buffer flush failed.\n");
-#endif
- xmlC14NFreeCtx(ctx);
- return(-1);
+ "xmlC14NDocSaveTo: buffer flush failed.\n");
+#endif
+ xmlC14NFreeCtx(ctx);
+ return (-1);
}
/*
* Cleanup
*/
- xmlC14NFreeCtx(ctx);
- return(ret);
+ xmlC14NFreeCtx(ctx);
+ return (ret);
}
/**
@@ -1303,63 +1346,63 @@
* Returns the number of bytes written on success or a negative value on fail
*/
int
-xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes,
- int exclusive, xmlChar **inclusive_ns_prefixes,
- int with_comments,
- xmlChar **doc_txt_ptr) {
+xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes,
+ int exclusive, xmlChar ** inclusive_ns_prefixes,
+ int with_comments, xmlChar ** doc_txt_ptr)
+{
int ret;
xmlOutputBufferPtr buf;
if (doc_txt_ptr == NULL) {
-#ifdef DEBUG_C14N
+#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NDocDumpMemory: null return buffer pointer\n");
-#endif
- return(-1);
+ "xmlC14NDocDumpMemory: null return buffer pointer\n");
+#endif
+ return (-1);
}
*doc_txt_ptr = NULL;
-
+
/*
* create memory buffer with UTF8 (default) encoding
*/
buf = xmlAllocOutputBuffer(NULL);
- if(buf == NULL ) {
-#ifdef DEBUG_C14N
+ if (buf == NULL) {
+#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NDocDumpMemory: failed to allocate output buffer.\n");
-#endif
- return(-1);
+ "xmlC14NDocDumpMemory: failed to allocate output buffer.\n");
+#endif
+ return (-1);
}
/*
* canonize document and write to buffer
*/
- ret = xmlC14NDocSaveTo(doc, nodes, exclusive, inclusive_ns_prefixes,
- with_comments, buf);
- if(ret < 0) {
-#ifdef DEBUG_C14N
+ ret = xmlC14NDocSaveTo(doc, nodes, exclusive, inclusive_ns_prefixes,
+ with_comments, buf);
+ if (ret < 0) {
+#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NDocDumpMemory: xmlC14NDocSaveTo failed.\n");
-#endif
- (void)xmlOutputBufferClose(buf);
- return(-1);
- }
-
- ret = buf->buffer->use;
- if(ret > 0) {
- *doc_txt_ptr = xmlStrndup(buf->buffer->content, ret);
+ "xmlC14NDocDumpMemory: xmlC14NDocSaveTo failed.\n");
+#endif
+ (void) xmlOutputBufferClose(buf);
+ return (-1);
}
- (void)xmlOutputBufferClose(buf);
- if(*doc_txt_ptr == NULL && ret > 0) {
-#ifdef DEBUG_C14N
+ ret = buf->buffer->use;
+ if (ret > 0) {
+ *doc_txt_ptr = xmlStrndup(buf->buffer->content, ret);
+ }
+ (void) xmlOutputBufferClose(buf);
+
+ if ((*doc_txt_ptr == NULL) && (ret > 0)) {
+#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NDocDumpMemory: failed to allocate memory for document text representation\n");
-#endif
- return(-1);
+ "xmlC14NDocDumpMemory: failed to allocate memory for document text representation\n");
+#endif
+ return (-1);
}
- return(ret);
+ return (ret);
}
/**
@@ -1387,56 +1430,57 @@
* Returns the number of bytes written success or a negative value on fail
*/
int
-xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes,
- int exclusive, xmlChar **inclusive_ns_prefixes,
- int with_comments,
- const char* filename, int compression) {
- xmlOutputBufferPtr buf;
+xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes,
+ int exclusive, xmlChar ** inclusive_ns_prefixes,
+ int with_comments, const char *filename, int compression)
+{
+ xmlOutputBufferPtr buf;
int ret;
- if(filename == NULL) {
-#ifdef DEBUG_C14N
+ if (filename == NULL) {
+#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NDocSave: filename is NULL\n");
-#endif
- return(-1);
+ "xmlC14NDocSave: filename is NULL\n");
+#endif
+ return (-1);
}
-
#ifdef HAVE_ZLIB_H
- if(compression < 0) compression = xmlGetCompressMode();
-#endif
+ if (compression < 0)
+ compression = xmlGetCompressMode();
+#endif
/*
* save the content to a temp buffer, use default UTF8 encoding.
*/
buf = xmlOutputBufferCreateFilename(filename, NULL, compression);
if (buf == NULL) {
-#ifdef DEBUG_C14N
+#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NDocSave: unable to create buffer for file=\"%s\" with compressin=%d\n", filename, compression);
-#endif
- return(-1);
+ "xmlC14NDocSave: unable to create buffer for file=\"%s\" with compressin=%d\n",
+ filename, compression);
+#endif
+ return (-1);
}
-
+
/*
* canonize document and write to buffer
*/
- ret = xmlC14NDocSaveTo(doc, nodes, exclusive, inclusive_ns_prefixes,
- with_comments, buf);
- if(ret < 0) {
-#ifdef DEBUG_C14N
+ ret = xmlC14NDocSaveTo(doc, nodes, exclusive, inclusive_ns_prefixes,
+ with_comments, buf);
+ if (ret < 0) {
+#ifdef DEBUG_C14N
xmlGenericError(xmlGenericErrorContext,
- "xmlC14NDocSave: xmlC14NDocSaveTo failed.\n");
-#endif
- (void)xmlOutputBufferClose(buf);
- return(-1);
+ "xmlC14NDocSave: xmlC14NDocSaveTo failed.\n");
+#endif
+ (void) xmlOutputBufferClose(buf);
+ return (-1);
}
-
+
/*
* get the numbers of bytes written
*/
ret = xmlOutputBufferClose(buf);
- return(ret);
+ return (ret);
}
@@ -1467,13 +1511,16 @@
* or NULL if an error occurs
*/
static xmlChar *
-xmlC11NNormalizeString(const xmlChar *input, xmlC14NNormalizationMode mode) {
+xmlC11NNormalizeString(const xmlChar * input,
+ xmlC14NNormalizationMode mode)
+{
const xmlChar *cur = input;
xmlChar *buffer = NULL;
xmlChar *out = NULL;
int buffer_size = 0;
- if (input == NULL) return(NULL);
+ if (input == NULL)
+ return (NULL);
/*
* allocate an translation buffer.
@@ -1481,76 +1528,75 @@
buffer_size = 1000;
buffer = (xmlChar *) xmlMalloc(buffer_size * sizeof(xmlChar));
if (buffer == NULL) {
- perror("malloc failed");
- return(NULL);
+ perror("malloc failed");
+ return (NULL);
}
out = buffer;
while (*cur != '\0') {
- if (out - buffer > buffer_size - 10) {
- int indx = out - buffer;
+ if ((out - buffer) > (buffer_size - 10)) {
+ int indx = out - buffer;
- growBufferReentrant();
- out = &buffer[indx];
- }
+ growBufferReentrant();
+ out = &buffer[indx];
+ }
- if (*cur == '<' && (mode == XMLC14N_NORMALIZE_ATTR ||
- mode == XMLC14N_NORMALIZE_TEXT)) {
- *out++ = '&';
- *out++ = 'l';
- *out++ = 't';
- *out++ = ';';
- } else if (*cur == '>' && (mode == XMLC14N_NORMALIZE_TEXT)) {
- *out++ = '&';
- *out++ = 'g';
- *out++ = 't';
- *out++ = ';';
- } else if (*cur == '&' && (mode == XMLC14N_NORMALIZE_ATTR ||
- mode == XMLC14N_NORMALIZE_TEXT)) {
- *out++ = '&';
- *out++ = 'a';
- *out++ = 'm';
- *out++ = 'p';
- *out++ = ';';
- } else if (*cur == '"' && (mode == XMLC14N_NORMALIZE_ATTR)) {
- *out++ = '&';
- *out++ = 'q';
- *out++ = 'u';
- *out++ = 'o';
- *out++ = 't';
- *out++ = ';';
- } else if (*cur == '\x09' && (mode == XMLC14N_NORMALIZE_ATTR)) {
- *out++ = '&';
- *out++ = '#';
- *out++ = 'x';
- *out++ = '9';
- *out++ = ';';
- } else if (*cur == '\x0A' && (mode == XMLC14N_NORMALIZE_ATTR)) {
- *out++ = '&';
- *out++ = '#';
- *out++ = 'x';
- *out++ = 'A';
- *out++ = ';';
- } else if (*cur == '\x0D' && (mode == XMLC14N_NORMALIZE_ATTR ||
- mode == XMLC14N_NORMALIZE_TEXT ||
- mode == XMLC14N_NORMALIZE_COMMENT ||
- mode == XMLC14N_NORMALIZE_PI)) {
- *out++ = '&';
- *out++ = '#';
- *out++ = 'x';
- *out++ = 'D';
- *out++ = ';';
- } else {
- /*
- * Works because on UTF-8, all extended sequences cannot
- * result in bytes in the ASCII range.
- */
- *out++ = *cur;
- }
- cur++;
+ if ((*cur == '<') && ((mode == XMLC14N_NORMALIZE_ATTR) ||
+ (mode == XMLC14N_NORMALIZE_TEXT))) {
+ *out++ = '&';
+ *out++ = 'l';
+ *out++ = 't';
+ *out++ = ';';
+ } else if ((*cur == '>') && (mode == XMLC14N_NORMALIZE_TEXT)) {
+ *out++ = '&';
+ *out++ = 'g';
+ *out++ = 't';
+ *out++ = ';';
+ } else if ((*cur == '&') && ((mode == XMLC14N_NORMALIZE_ATTR) ||
+ (mode == XMLC14N_NORMALIZE_TEXT))) {
+ *out++ = '&';
+ *out++ = 'a';
+ *out++ = 'm';
+ *out++ = 'p';
+ *out++ = ';';
+ } else if ((*cur == '"') && (mode == XMLC14N_NORMALIZE_ATTR)) {
+ *out++ = '&';
+ *out++ = 'q';
+ *out++ = 'u';
+ *out++ = 'o';
+ *out++ = 't';
+ *out++ = ';';
+ } else if ((*cur == '\x09') && (mode == XMLC14N_NORMALIZE_ATTR)) {
+ *out++ = '&';
+ *out++ = '#';
+ *out++ = 'x';
+ *out++ = '9';
+ *out++ = ';';
+ } else if ((*cur == '\x0A') && (mode == XMLC14N_NORMALIZE_ATTR)) {
+ *out++ = '&';
+ *out++ = '#';
+ *out++ = 'x';
+ *out++ = 'A';
+ *out++ = ';';
+ } else if ((*cur == '\x0D') && ((mode == XMLC14N_NORMALIZE_ATTR) ||
+ (mode == XMLC14N_NORMALIZE_TEXT) ||
+ (mode == XMLC14N_NORMALIZE_COMMENT) ||
+ (mode == XMLC14N_NORMALIZE_PI))) {
+ *out++ = '&';
+ *out++ = '#';
+ *out++ = 'x';
+ *out++ = 'D';
+ *out++ = ';';
+ } else {
+ /*
+ * Works because on UTF-8, all extended sequences cannot
+ * result in bytes in the ASCII range.
+ */
+ *out++ = *cur;
+ }
+ cur++;
}
*out++ = 0;
- return(buffer);
+ return (buffer);
}
-
#endif /* LIBXML_C14N_ENABLED */
diff --git a/configure.in b/configure.in
index 5bc63d5..6c72aaa 100644
--- a/configure.in
+++ b/configure.in
@@ -233,17 +233,6 @@
fi
AM_CONDITIONAL(WITH_PYTHON, test "$PYTHON_INCLUDES" != "")
-
-dnl
-dnl Use buffers for content
-dnl
-
-AC_ARG_WITH(buffers, [ --with-buffers Use buffers for node content])
-if test "$with_buffers" = "yes" ; then
- CFLAGS="${CFLAGS} -DXML_USE_BUFFER_CONTENT"
- XML_CFLAGS="${XML_CFLAGS} -DXML_USE_BUFFER_CONTENT"
-fi
-
dnl
dnl Tester makes use of readline if present
dnl
diff --git a/debugXML.c b/debugXML.c
index c485038..cba27f3 100644
--- a/debugXML.c
+++ b/debugXML.c
@@ -695,11 +695,7 @@
shift[2 * i + 2] = shift[2 * i + 3] = 0;
fprintf(output, shift);
fprintf(output, "content=");
-#ifndef XML_USE_BUFFER_CONTENT
xmlDebugDumpString(output, node->content);
-#else
- xmlDebugDumpString(output, xmlBufferContent(node->content));
-#endif
fprintf(output, "\n");
}
} else {
@@ -1105,11 +1101,7 @@
case XML_PI_NODE:
case XML_COMMENT_NODE:
if (node->content != NULL) {
-#ifndef XML_USE_BUFFER_CONTENT
ret = xmlStrlen(node->content);
-#else
- ret = xmlBufferLength(node->content);
-#endif
}
break;
case XML_ENTITY_REF_NODE:
@@ -1215,11 +1207,7 @@
break;
case XML_TEXT_NODE:
if (node->content != NULL) {
-#ifndef XML_USE_BUFFER_CONTENT
xmlDebugDumpString(output, node->content);
-#else
- xmlDebugDumpString(output, xmlBufferContent(node->content));
-#endif
}
break;
case XML_CDATA_SECTION_NODE:
diff --git a/include/libxml/tree.h b/include/libxml/tree.h
index a433b6f..29b0a53 100644
--- a/include/libxml/tree.h
+++ b/include/libxml/tree.h
@@ -439,11 +439,7 @@
/* End of common part */
xmlNs *ns; /* pointer to the associated namespace */
-#ifndef XML_USE_BUFFER_CONTENT
xmlChar *content; /* the content */
-#else
- xmlBufferPtr content; /* the content in a buffer */
-#endif
struct _xmlAttr *properties;/* properties list */
xmlNs *nsDef; /* namespace definitions on this node */
};
diff --git a/tree.c b/tree.c
index 20017f7..98b5b39 100644
--- a/tree.c
+++ b/tree.c
@@ -888,20 +888,11 @@
if ((node->type == XML_TEXT_NODE) ||
(node->type == XML_CDATA_SECTION_NODE)) {
if (inLine) {
-#ifndef XML_USE_BUFFER_CONTENT
ret = xmlStrcat(ret, node->content);
-#else
- ret = xmlStrcat(ret, xmlBufferContent(node->content));
-#endif
} else {
xmlChar *buffer;
-#ifndef XML_USE_BUFFER_CONTENT
buffer = xmlEncodeEntitiesReentrant(doc, node->content);
-#else
- buffer = xmlEncodeEntitiesReentrant(doc,
- xmlBufferContent(node->content));
-#endif
if (buffer != NULL) {
ret = xmlStrcat(ret, buffer);
xmlFree(buffer);
@@ -913,11 +904,7 @@
if (ent != NULL)
ret = xmlStrcat(ret, ent->content);
else {
-#ifndef XML_USE_BUFFER_CONTENT
ret = xmlStrcat(ret, node->content);
-#else
- ret = xmlStrcat(ret, xmlBufferContent(node->content));
-#endif
}
} else {
xmlChar buf[2];
@@ -964,20 +951,11 @@
if ((node->type == XML_TEXT_NODE) ||
(node->type == XML_CDATA_SECTION_NODE)) {
if (inLine) {
-#ifndef XML_USE_BUFFER_CONTENT
ret = xmlStrcat(ret, node->content);
-#else
- ret = xmlStrcat(ret, xmlBufferContent(node->content));
-#endif
} else {
xmlChar *buffer;
-#ifndef XML_USE_BUFFER_CONTENT
buffer = xmlEncodeSpecialChars(doc, node->content);
-#else
- buffer = xmlEncodeSpecialChars(doc,
- xmlBufferContent(node->content));
-#endif
if (buffer != NULL) {
ret = xmlStrcat(ret, buffer);
xmlFree(buffer);
@@ -989,11 +967,7 @@
if (ent != NULL)
ret = xmlStrcat(ret, ent->content);
else {
-#ifndef XML_USE_BUFFER_CONTENT
ret = xmlStrcat(ret, node->content);
-#else
- ret = xmlStrcat(ret, xmlBufferContent(node->content));
-#endif
}
} else {
xmlChar buf[2];
@@ -1353,14 +1327,7 @@
cur->name = xmlStrdup(name);
if (content != NULL) {
-#ifndef XML_USE_BUFFER_CONTENT
cur->content = xmlStrdup(content);
-#else
- cur->content = xmlBufferCreateSize(0);
- xmlBufferSetAllocationScheme(cur->content,
- xmlGetBufferAllocationScheme());
- xmlBufferAdd(cur->content, content, -1);
-#endif
}
return(cur);
}
@@ -1516,14 +1483,7 @@
cur->name = xmlStringText;
if (content != NULL) {
-#ifndef XML_USE_BUFFER_CONTENT
cur->content = xmlStrdup(content);
-#else
- cur->content = xmlBufferCreateSize(0);
- xmlBufferSetAllocationScheme(cur->content,
- xmlGetBufferAllocationScheme());
- xmlBufferAdd(cur->content, content, -1);
-#endif
}
return(cur);
}
@@ -1667,20 +1627,7 @@
ent = xmlGetDocEntity(doc, cur->name);
if (ent != NULL) {
-#ifndef XML_USE_BUFFER_CONTENT
cur->content = ent->content;
-#else
- /*
- * CJN 11.18.99 this might be a problem, since the xmlBuffer gets
- * a copy of this pointer. Let's hope we don't manipulate it
- * later
- */
- cur->content = xmlBufferCreateSize(0);
- xmlBufferSetAllocationScheme(cur->content,
- xmlGetBufferAllocationScheme());
- if (ent->content != NULL)
- xmlBufferAdd(cur->content, ent->content, -1);
-#endif
/*
* The parent pointer in entity is a DTD pointer and thus is NOT
* updated. Not sure if this is 100% correct.
@@ -1735,14 +1682,7 @@
cur->name = xmlStringText;
if (content != NULL) {
-#ifndef XML_USE_BUFFER_CONTENT
cur->content = xmlStrndup(content, len);
-#else
- cur->content = xmlBufferCreateSize(len);
- xmlBufferSetAllocationScheme(cur->content,
- xmlGetBufferAllocationScheme());
- xmlBufferAdd(cur->content, content, len);
-#endif
}
return(cur);
}
@@ -1791,14 +1731,7 @@
cur->name = xmlStringComment;
if (content != NULL) {
-#ifndef XML_USE_BUFFER_CONTENT
cur->content = xmlStrdup(content);
-#else
- cur->content = xmlBufferCreateSize(0);
- xmlBufferSetAllocationScheme(cur->content,
- xmlGetBufferAllocationScheme());
- xmlBufferAdd(cur->content, content, -1);
-#endif
}
return(cur);
}
@@ -1830,14 +1763,7 @@
cur->doc = doc;
if (content != NULL) {
-#ifndef XML_USE_BUFFER_CONTENT
cur->content = xmlStrndup(content, len);
-#else
- cur->content = xmlBufferCreateSize(len);
- xmlBufferSetAllocationScheme(cur->content,
- xmlGetBufferAllocationScheme());
- xmlBufferAdd(cur->content, content, len);
-#endif
}
return(cur);
}
@@ -2020,28 +1946,18 @@
if (elem->type == XML_TEXT_NODE) {
if (cur->type == XML_TEXT_NODE) {
-#ifndef XML_USE_BUFFER_CONTENT
xmlNodeAddContent(cur, elem->content);
-#else
- xmlNodeAddContent(cur, xmlBufferContent(elem->content));
-#endif
xmlFreeNode(elem);
return(cur);
}
if ((cur->next != NULL) && (cur->next->type == XML_TEXT_NODE) &&
(cur->name == cur->next->name)) {
-#ifndef XML_USE_BUFFER_CONTENT
xmlChar *tmp;
tmp = xmlStrdup(elem->content);
tmp = xmlStrcat(tmp, cur->next->content);
xmlNodeSetContent(cur->next, tmp);
xmlFree(tmp);
-#else
- xmlBufferAddHead(cur->next->content,
- xmlBufferContent(elem->content),
- xmlBufferLength(elem->content));
-#endif
xmlFreeNode(elem);
return(cur->next);
}
@@ -2108,27 +2024,18 @@
if (elem->type == XML_TEXT_NODE) {
if (cur->type == XML_TEXT_NODE) {
-#ifndef XML_USE_BUFFER_CONTENT
xmlChar *tmp;
tmp = xmlStrdup(elem->content);
tmp = xmlStrcat(tmp, cur->content);
xmlNodeSetContent(cur, tmp);
xmlFree(tmp);
-#else
- xmlBufferAddHead(cur->content, xmlBufferContent(elem->content),
- xmlBufferLength(elem->content));
-#endif
xmlFreeNode(elem);
return(cur);
}
if ((cur->prev != NULL) && (cur->prev->type == XML_TEXT_NODE) &&
(cur->name == cur->prev->name)) {
-#ifndef XML_USE_BUFFER_CONTENT
xmlNodeAddContent(cur->prev, elem->content);
-#else
- xmlNodeAddContent(cur->prev, xmlBufferContent(elem->content));
-#endif
xmlFreeNode(elem);
return(cur->prev);
}
@@ -2217,11 +2124,7 @@
xmlUnlinkNode(elem);
if ((cur->type == XML_TEXT_NODE) && (elem->type == XML_TEXT_NODE)) {
-#ifndef XML_USE_BUFFER_CONTENT
xmlNodeAddContent(cur, elem->content);
-#else
- xmlNodeAddContent(cur, xmlBufferContent(elem->content));
-#endif
xmlFreeNode(elem);
return(cur);
}
@@ -2290,11 +2193,7 @@
if ((cur->type == XML_TEXT_NODE) &&
(parent->last->type == XML_TEXT_NODE) &&
(cur->name == parent->last->name)) {
-#ifndef XML_USE_BUFFER_CONTENT
xmlNodeAddContent(parent->last, cur->content);
-#else
- xmlNodeAddContent(parent->last, xmlBufferContent(cur->content));
-#endif
/*
* if it's the only child, nothing more to be done.
*/
@@ -2365,21 +2264,13 @@
if (cur->type == XML_TEXT_NODE) {
if ((parent->type == XML_TEXT_NODE) &&
(parent->content != NULL)) {
-#ifndef XML_USE_BUFFER_CONTENT
xmlNodeAddContent(parent, cur->content);
-#else
- xmlNodeAddContent(parent, xmlBufferContent(cur->content));
-#endif
xmlFreeNode(cur);
return(parent);
}
if ((parent->last != NULL) && (parent->last->type == XML_TEXT_NODE) &&
(parent->last->name == cur->name)) {
-#ifndef XML_USE_BUFFER_CONTENT
xmlNodeAddContent(parent->last, cur->content);
-#else
- xmlNodeAddContent(parent->last, xmlBufferContent(cur->content));
-#endif
xmlFreeNode(cur);
return(parent->last);
}
@@ -2398,11 +2289,7 @@
*/
if ((parent->type == XML_TEXT_NODE) &&
(parent->content != NULL)) {
-#ifndef XML_USE_BUFFER_CONTENT
xmlNodeAddContent(parent, cur->content);
-#else
- xmlNodeAddContent(parent, xmlBufferContent(cur->content));
-#endif
xmlFreeNode(cur);
return(parent);
}
@@ -2496,11 +2383,7 @@
(cur->type != XML_XINCLUDE_START) &&
(cur->type != XML_XINCLUDE_END) &&
(cur->type != XML_ENTITY_REF_NODE)) {
-#ifndef XML_USE_BUFFER_CONTENT
if (cur->content != NULL) xmlFree(cur->content);
-#else
- if (cur->content != NULL) xmlBufferFree(cur->content);
-#endif
}
if (((cur->type == XML_ELEMENT_NODE) ||
(cur->type == XML_XINCLUDE_START) ||
@@ -2574,11 +2457,7 @@
(cur->type != XML_ENTITY_REF_NODE) &&
(cur->type != XML_XINCLUDE_END) &&
(cur->type != XML_XINCLUDE_START)) {
-#ifndef XML_USE_BUFFER_CONTENT
xmlFree(cur->content);
-#else
- xmlBufferFree(cur->content);
-#endif
}
/*
@@ -3014,16 +2893,7 @@
(node->type != XML_ENTITY_REF_NODE) &&
(node->type != XML_XINCLUDE_END) &&
(node->type != XML_XINCLUDE_START)) {
-#ifndef XML_USE_BUFFER_CONTENT
ret->content = xmlStrdup(node->content);
-#else
- ret->content = xmlBufferCreateSize(xmlBufferLength(node->content));
- xmlBufferSetAllocationScheme(ret->content,
- xmlGetBufferAllocationScheme());
- xmlBufferAdd(ret->content,
- xmlBufferContent(node->content),
- xmlBufferLength(node->content));
-#endif
}else{
if (node->type == XML_ELEMENT_NODE)
ret->content = (void*)(long) node->content;
@@ -3885,12 +3755,7 @@
case XML_CDATA_SECTION_NODE:
case XML_TEXT_NODE:
if (tmp->content != NULL)
-#ifndef XML_USE_BUFFER_CONTENT
xmlBufferCat(buffer, tmp->content);
-#else
- xmlBufferCat(buffer,
- xmlBufferContent(tmp->content));
-#endif
break;
case XML_ENTITY_REF_NODE: {
xmlEntityPtr ent;
@@ -3949,11 +3814,7 @@
case XML_COMMENT_NODE:
case XML_PI_NODE:
if (cur->content != NULL)
-#ifndef XML_USE_BUFFER_CONTENT
return(xmlStrdup(cur->content));
-#else
- return(xmlStrdup(xmlBufferContent(cur->content)));
-#endif
return(NULL);
case XML_ENTITY_REF_NODE:
/*
@@ -3987,11 +3848,7 @@
case XML_CDATA_SECTION_NODE:
case XML_TEXT_NODE:
if (cur->content != NULL)
-#ifndef XML_USE_BUFFER_CONTENT
- return(xmlStrdup(cur->content));
-#else
- return(xmlStrdup(xmlBufferContent(cur->content)));
-#endif
+ return(xmlStrdup(cur->content));
return(NULL);
}
return(NULL);
@@ -4028,23 +3885,12 @@
case XML_PI_NODE:
case XML_COMMENT_NODE:
if (cur->content != NULL) {
-#ifndef XML_USE_BUFFER_CONTENT
xmlFree(cur->content);
-#else
- xmlBufferFree(cur->content);
-#endif
}
if (cur->children != NULL) xmlFreeNodeList(cur->children);
cur->last = cur->children = NULL;
if (content != NULL) {
-#ifndef XML_USE_BUFFER_CONTENT
cur->content = xmlStrdup(content);
-#else
- cur->content = xmlBufferCreateSize(0);
- xmlBufferSetAllocationScheme(cur->content,
- xmlGetBufferAllocationScheme());
- xmlBufferAdd(cur->content, content, -1);
-#endif
} else
cur->content = NULL;
break;
@@ -4108,23 +3954,12 @@
case XML_COMMENT_NODE:
case XML_NOTATION_NODE:
if (cur->content != NULL) {
-#ifndef XML_USE_BUFFER_CONTENT
xmlFree(cur->content);
-#else
- xmlBufferFree(cur->content);
-#endif
}
if (cur->children != NULL) xmlFreeNodeList(cur->children);
cur->children = cur->last = NULL;
if (content != NULL) {
-#ifndef XML_USE_BUFFER_CONTENT
cur->content = xmlStrndup(content, len);
-#else
- cur->content = xmlBufferCreateSize(len);
- xmlBufferSetAllocationScheme(cur->content,
- xmlGetBufferAllocationScheme());
- xmlBufferAdd(cur->content, content, len);
-#endif
} else
cur->content = NULL;
break;
@@ -4196,11 +4031,7 @@
case XML_COMMENT_NODE:
case XML_NOTATION_NODE:
if (content != NULL) {
-#ifndef XML_USE_BUFFER_CONTENT
cur->content = xmlStrncat(cur->content, content, len);
-#else
- xmlBufferAdd(cur->content, content, len);
-#endif
}
case XML_DOCUMENT_NODE:
case XML_DTD_NODE:
@@ -4259,11 +4090,7 @@
if (second->type != XML_TEXT_NODE) return(first);
if (second->name != first->name)
return(first);
-#ifndef XML_USE_BUFFER_CONTENT
xmlNodeAddContent(first, second->content);
-#else
- xmlNodeAddContent(first, xmlBufferContent(second->content));
-#endif
xmlUnlinkNode(second);
xmlFreeNode(second);
return(first);
@@ -5216,11 +5043,7 @@
(node->type != XML_CDATA_SECTION_NODE))
return(0);
if (node->content == NULL) return(1);
-#ifndef XML_USE_BUFFER_CONTENT
cur = node->content;
-#else
- cur = xmlBufferContent(node->content);
-#endif
while (*cur != 0) {
if (!IS_BLANK(*cur)) return(0);
cur++;
@@ -5250,11 +5073,7 @@
#endif
return;
}
-#ifndef XML_USE_BUFFER_CONTENT
node->content = xmlStrncat(node->content, content, len);
-#else
- xmlBufferAdd(node->content, content, len);
-#endif
}
/************************************************************************
@@ -6145,12 +5964,7 @@
(cur->name != xmlStringTextNoenc)) {
xmlChar *buffer;
-#ifndef XML_USE_BUFFER_CONTENT
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
-#else
- buffer = xmlEncodeEntitiesReentrant(doc,
- xmlBufferContent(cur->content));
-#endif
if (buffer != NULL) {
xmlBufferWriteCHAR(buf, buffer);
xmlFree(buffer);
@@ -6159,11 +5973,7 @@
/*
* Disable escaping, needed for XSLT
*/
-#ifndef XML_USE_BUFFER_CONTENT
xmlBufferWriteCHAR(buf, cur->content);
-#else
- xmlBufferWriteCHAR(buf, xmlBufferContent(cur->content));
-#endif
}
}
return;
@@ -6173,11 +5983,7 @@
xmlBufferWriteCHAR(buf, cur->name);
if (cur->content != NULL) {
xmlBufferWriteChar(buf, " ");
-#ifndef XML_USE_BUFFER_CONTENT
xmlBufferWriteCHAR(buf, cur->content);
-#else
- xmlBufferWriteCHAR(buf, xmlBufferContent(cur->content));
-#endif
}
xmlBufferWriteChar(buf, "?>");
return;
@@ -6185,11 +5991,7 @@
if (cur->type == XML_COMMENT_NODE) {
if (cur->content != NULL) {
xmlBufferWriteChar(buf, "<!--");
-#ifndef XML_USE_BUFFER_CONTENT
xmlBufferWriteCHAR(buf, cur->content);
-#else
- xmlBufferWriteCHAR(buf, xmlBufferContent(cur->content));
-#endif
xmlBufferWriteChar(buf, "-->");
}
return;
@@ -6203,11 +6005,7 @@
if (cur->type == XML_CDATA_SECTION_NODE) {
xmlBufferWriteChar(buf, "<![CDATA[");
if (cur->content != NULL)
-#ifndef XML_USE_BUFFER_CONTENT
xmlBufferWriteCHAR(buf, cur->content);
-#else
- xmlBufferWriteCHAR(buf, xmlBufferContent(cur->content));
-#endif
xmlBufferWriteChar(buf, "]]>");
return;
}
@@ -6245,12 +6043,7 @@
if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) {
xmlChar *buffer;
-#ifndef XML_USE_BUFFER_CONTENT
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
-#else
- buffer = xmlEncodeEntitiesReentrant(doc,
- xmlBufferContent(cur->content));
-#endif
if (buffer != NULL) {
xmlBufferWriteCHAR(buf, buffer);
xmlFree(buffer);
@@ -6551,19 +6344,10 @@
(cur->name != xmlStringTextNoenc)) {
xmlChar *buffer;
-#ifndef XML_USE_BUFFER_CONTENT
if (encoding == NULL)
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
else
buffer = xmlEncodeSpecialChars(doc, cur->content);
-#else
- if (encoding == NULL)
- buffer = xmlEncodeEntitiesReentrant(doc,
- xmlBufferContent(cur->content));
- else
- buffer = xmlEncodeSpecialChars(doc,
- xmlBufferContent(cur->content));
-#endif
if (buffer != NULL) {
xmlOutputBufferWriteString(buf, (const char *)buffer);
xmlFree(buffer);
@@ -6572,11 +6356,7 @@
/*
* Disable escaping, needed for XSLT
*/
-#ifndef XML_USE_BUFFER_CONTENT
xmlOutputBufferWriteString(buf, (const char *) cur->content);
-#else
- xmlOutputBufferWriteString(buf, xmlBufferContent(cur->content));
-#endif
}
}
@@ -6588,11 +6368,7 @@
xmlOutputBufferWriteString(buf, (const char *)cur->name);
if (cur->content != NULL) {
xmlOutputBufferWriteString(buf, " ");
-#ifndef XML_USE_BUFFER_CONTENT
xmlOutputBufferWriteString(buf, (const char *)cur->content);
-#else
- xmlOutputBufferWriteString(buf, (const char *)xmlBufferContent(cur->content));
-#endif
}
xmlOutputBufferWriteString(buf, "?>");
} else {
@@ -6605,11 +6381,7 @@
if (cur->type == XML_COMMENT_NODE) {
if (cur->content != NULL) {
xmlOutputBufferWriteString(buf, "<!--");
-#ifndef XML_USE_BUFFER_CONTENT
xmlOutputBufferWriteString(buf, (const char *)cur->content);
-#else
- xmlOutputBufferWriteString(buf, (const char *)xmlBufferContent(cur->content));
-#endif
xmlOutputBufferWriteString(buf, "-->");
}
return;
@@ -6623,11 +6395,7 @@
if (cur->type == XML_CDATA_SECTION_NODE) {
xmlOutputBufferWriteString(buf, "<![CDATA[");
if (cur->content != NULL)
-#ifndef XML_USE_BUFFER_CONTENT
xmlOutputBufferWriteString(buf, (const char *)cur->content);
-#else
- xmlOutputBufferWriteString(buf, (const char *)xmlBufferContent(cur->content));
-#endif
xmlOutputBufferWriteString(buf, "]]>");
return;
}
@@ -6664,19 +6432,10 @@
if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) {
xmlChar *buffer;
-#ifndef XML_USE_BUFFER_CONTENT
if (encoding == NULL)
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
else
buffer = xmlEncodeSpecialChars(doc, cur->content);
-#else
- if (encoding == NULL)
- buffer = xmlEncodeEntitiesReentrant(doc,
- xmlBufferContent(cur->content));
- else
- buffer = xmlEncodeSpecialChars(doc,
- xmlBufferContent(cur->content));
-#endif
if (buffer != NULL) {
xmlOutputBufferWriteString(buf, (const char *)buffer);
xmlFree(buffer);
diff --git a/xpointer.c b/xpointer.c
index 8bed994..8ffb975 100644
--- a/xpointer.c
+++ b/xpointer.c
@@ -1628,11 +1628,7 @@
case XML_TEXT_NODE:
case XML_CDATA_SECTION_NODE:
case XML_ENTITY_REF_NODE:
-#ifndef XML_USE_BUFFER_CONTENT
ret = xmlStrlen(node->content);
-#else
- ret = xmlBufferLength(node->content);
-#endif
break;
default:
return(-1);
@@ -2007,13 +2003,8 @@
if (node->content == NULL) {
return(xmlXPtrNewRange(node, 0, node, 0));
} else {
-#ifndef XML_USE_BUFFER_CONTENT
return(xmlXPtrNewRange(node, 0, node,
xmlStrlen(node->content)));
-#else
- return(xmlXPtrNewRange(node, 0, node,
- xmlBufferLength(node->content)));
-#endif
}
}
case XML_ATTRIBUTE_NODE:
@@ -2044,13 +2035,8 @@
if (node->content == NULL) {
return(xmlXPtrNewRange(node, 0, node, 0));
} else {
-#ifndef XML_USE_BUFFER_CONTENT
return(xmlXPtrNewRange(node, 0, node,
xmlStrlen(node->content)));
-#else
- return(xmlXPtrNewRange(node, 0, node,
- xmlBufferLength(node->content)));
-#endif
}
}
case XML_ATTRIBUTE_NODE:
@@ -2319,11 +2305,7 @@
len = 0;
if ((cur->type != XML_ELEMENT_NODE) &&
(cur->content != NULL)) {
-#ifndef XML_USE_BUFFER_CONTENT
len = xmlStrlen(cur->content);
-#else
- len = xmlBufferLength(cur->content);
-#endif
}
if (pos > len) {
/* Strange, the indx in the text node is greater than it's len */
@@ -2386,18 +2368,9 @@
return(0);
if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) {
-#ifndef XML_USE_BUFFER_CONTENT
len = xmlStrlen(cur->content);
-#else
- len = xmlBufferLength(cur->content);
-#endif
if (len >= pos + stringlen) {
-#ifndef XML_USE_BUFFER_CONTENT
match = (!xmlStrncmp(&cur->content[pos], string, stringlen));
-#else
- len = (!xmlStrncmp(&xmlBufferContent(cur->content)[pos],
- string, stringlen));
-#endif
if (match) {
#ifdef DEBUG_RANGES
xmlGenericError(xmlGenericErrorContext,
@@ -2414,12 +2387,7 @@
}
} else {
int sub = len - pos;
-#ifndef XML_USE_BUFFER_CONTENT
match = (!xmlStrncmp(&cur->content[pos], string, sub));
-#else
- len = (!xmlStrncmp(&xmlBufferContent(cur->content)[pos],
- string, sub));
-#endif
if (match) {
#ifdef DEBUG_RANGES
xmlGenericError(xmlGenericErrorContext,
@@ -2482,19 +2450,10 @@
while (cur != NULL) {
if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) {
-#ifndef XML_USE_BUFFER_CONTENT
len = xmlStrlen(cur->content);
-#else
- len = xmlBufferLength(cur->content);
-#endif
while (pos <= len) {
if (first != 0) {
-#ifndef XML_USE_BUFFER_CONTENT
str = xmlStrchr(&cur->content[pos], first);
-#else
- str = xmlStrchr(&xmlBufferContent(cur->content)[pos],
- first);
-#endif
if (str != NULL) {
pos = (str - (xmlChar *)(cur->content));
#ifdef DEBUG_RANGES
@@ -2580,11 +2539,7 @@
cur = cur->last;
else if ((cur->type != XML_ELEMENT_NODE) &&
(cur->content != NULL)) {
-#ifndef XML_USE_BUFFER_CONTENT
len = xmlStrlen(cur->content);
-#else
- len = xmlBufferLength(cur->content);
-#endif
break;
} else {
return(-1);