mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-08-01 10:06:59 +03:00
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
This commit is contained in:
@ -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>
|
Sun Mar 10 17:47:58 CET 2002 Daniel Veillard <daniel@veillard.com>
|
||||||
|
|
||||||
* valid.c: applied patch from Dodji Seketeli fixing an
|
* valid.c: applied patch from Dodji Seketeli fixing an
|
||||||
|
55
HTMLtree.c
55
HTMLtree.c
@ -102,11 +102,7 @@ found_meta:
|
|||||||
if ((attr->children != NULL) &&
|
if ((attr->children != NULL) &&
|
||||||
(attr->children->type == XML_TEXT_NODE) &&
|
(attr->children->type == XML_TEXT_NODE) &&
|
||||||
(attr->children->next == NULL)) {
|
(attr->children->next == NULL)) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
value = attr->children->content;
|
value = attr->children->content;
|
||||||
#else
|
|
||||||
value = xmlBufferContent(attr->children->content);
|
|
||||||
#endif
|
|
||||||
if ((!xmlStrcasecmp(attr->name, BAD_CAST"http-equiv"))
|
if ((!xmlStrcasecmp(attr->name, BAD_CAST"http-equiv"))
|
||||||
&& (!xmlStrcasecmp(value, BAD_CAST"Content-Type")))
|
&& (!xmlStrcasecmp(value, BAD_CAST"Content-Type")))
|
||||||
http = 1;
|
http = 1;
|
||||||
@ -249,11 +245,7 @@ found_meta:
|
|||||||
if ((attr->children != NULL) &&
|
if ((attr->children != NULL) &&
|
||||||
(attr->children->type == XML_TEXT_NODE) &&
|
(attr->children->type == XML_TEXT_NODE) &&
|
||||||
(attr->children->next == NULL)) {
|
(attr->children->next == NULL)) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
value = attr->children->content;
|
value = attr->children->content;
|
||||||
#else
|
|
||||||
value = xmlBufferContent(attr->children->content);
|
|
||||||
#endif
|
|
||||||
if ((!xmlStrcasecmp(attr->name, BAD_CAST"http-equiv"))
|
if ((!xmlStrcasecmp(attr->name, BAD_CAST"http-equiv"))
|
||||||
&& (!xmlStrcasecmp(value, BAD_CAST"Content-Type")))
|
&& (!xmlStrcasecmp(value, BAD_CAST"Content-Type")))
|
||||||
http = 1;
|
http = 1;
|
||||||
@ -449,12 +441,7 @@ htmlNodeDumpFormat(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
|
|||||||
(!xmlStrEqual(cur->parent->name, BAD_CAST "script")))) {
|
(!xmlStrEqual(cur->parent->name, BAD_CAST "script")))) {
|
||||||
xmlChar *buffer;
|
xmlChar *buffer;
|
||||||
|
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
|
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
|
||||||
#else
|
|
||||||
buffer = xmlEncodeEntitiesReentrant(doc,
|
|
||||||
xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
if (buffer != NULL) {
|
if (buffer != NULL) {
|
||||||
xmlBufferWriteCHAR(buf, buffer);
|
xmlBufferWriteCHAR(buf, buffer);
|
||||||
xmlFree(buffer);
|
xmlFree(buffer);
|
||||||
@ -468,11 +455,7 @@ htmlNodeDumpFormat(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
|
|||||||
if (cur->type == HTML_COMMENT_NODE) {
|
if (cur->type == HTML_COMMENT_NODE) {
|
||||||
if (cur->content != NULL) {
|
if (cur->content != NULL) {
|
||||||
xmlBufferWriteChar(buf, "<!--");
|
xmlBufferWriteChar(buf, "<!--");
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlBufferWriteCHAR(buf, cur->content);
|
xmlBufferWriteCHAR(buf, cur->content);
|
||||||
#else
|
|
||||||
xmlBufferWriteCHAR(buf, xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
xmlBufferWriteChar(buf, "-->");
|
xmlBufferWriteChar(buf, "-->");
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@ -484,11 +467,7 @@ htmlNodeDumpFormat(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
|
|||||||
xmlBufferWriteCHAR(buf, cur->name);
|
xmlBufferWriteCHAR(buf, cur->name);
|
||||||
if (cur->content != NULL) {
|
if (cur->content != NULL) {
|
||||||
xmlBufferWriteChar(buf, " ");
|
xmlBufferWriteChar(buf, " ");
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlBufferWriteCHAR(buf, cur->content);
|
xmlBufferWriteCHAR(buf, cur->content);
|
||||||
#else
|
|
||||||
xmlBufferWriteCHAR(buf, xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
xmlBufferWriteChar(buf, ">");
|
xmlBufferWriteChar(buf, ">");
|
||||||
return;
|
return;
|
||||||
@ -501,11 +480,7 @@ htmlNodeDumpFormat(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
|
|||||||
}
|
}
|
||||||
if (cur->type == HTML_PRESERVE_NODE) {
|
if (cur->type == HTML_PRESERVE_NODE) {
|
||||||
if (cur->content != NULL) {
|
if (cur->content != NULL) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlBufferWriteCHAR(buf, cur->content);
|
xmlBufferWriteCHAR(buf, cur->content);
|
||||||
#else
|
|
||||||
xmlBufferWriteCHAR(buf, xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -553,12 +528,7 @@ htmlNodeDumpFormat(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
|
|||||||
if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) {
|
if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) {
|
||||||
xmlChar *buffer;
|
xmlChar *buffer;
|
||||||
|
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
|
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
|
||||||
#else
|
|
||||||
buffer = xmlEncodeEntitiesReentrant(doc,
|
|
||||||
xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
if (buffer != NULL) {
|
if (buffer != NULL) {
|
||||||
xmlBufferWriteCHAR(buf, buffer);
|
xmlBufferWriteCHAR(buf, buffer);
|
||||||
xmlFree(buffer);
|
xmlFree(buffer);
|
||||||
@ -944,12 +914,7 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
|
|||||||
(!xmlStrEqual(cur->parent->name, BAD_CAST "script")))) {
|
(!xmlStrEqual(cur->parent->name, BAD_CAST "script")))) {
|
||||||
xmlChar *buffer;
|
xmlChar *buffer;
|
||||||
|
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
|
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
|
||||||
#else
|
|
||||||
buffer = xmlEncodeEntitiesReentrant(doc,
|
|
||||||
xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
if (buffer != NULL) {
|
if (buffer != NULL) {
|
||||||
xmlOutputBufferWriteString(buf, (const char *)buffer);
|
xmlOutputBufferWriteString(buf, (const char *)buffer);
|
||||||
xmlFree(buffer);
|
xmlFree(buffer);
|
||||||
@ -963,12 +928,7 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
|
|||||||
if (cur->type == HTML_COMMENT_NODE) {
|
if (cur->type == HTML_COMMENT_NODE) {
|
||||||
if (cur->content != NULL) {
|
if (cur->content != NULL) {
|
||||||
xmlOutputBufferWriteString(buf, "<!--");
|
xmlOutputBufferWriteString(buf, "<!--");
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlOutputBufferWriteString(buf, (const char *)cur->content);
|
xmlOutputBufferWriteString(buf, (const char *)cur->content);
|
||||||
#else
|
|
||||||
xmlOutputBufferWriteString(buf, (const char *)
|
|
||||||
xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
xmlOutputBufferWriteString(buf, "-->");
|
xmlOutputBufferWriteString(buf, "-->");
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@ -980,12 +940,7 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
|
|||||||
xmlOutputBufferWriteString(buf, (const char *)cur->name);
|
xmlOutputBufferWriteString(buf, (const char *)cur->name);
|
||||||
if (cur->content != NULL) {
|
if (cur->content != NULL) {
|
||||||
xmlOutputBufferWriteString(buf, " ");
|
xmlOutputBufferWriteString(buf, " ");
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlOutputBufferWriteString(buf, (const char *)cur->content);
|
xmlOutputBufferWriteString(buf, (const char *)cur->content);
|
||||||
#else
|
|
||||||
xmlOutputBufferWriteString(buf, (const char *)
|
|
||||||
xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
xmlOutputBufferWriteString(buf, ">");
|
xmlOutputBufferWriteString(buf, ">");
|
||||||
return;
|
return;
|
||||||
@ -998,12 +953,7 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
|
|||||||
}
|
}
|
||||||
if (cur->type == HTML_PRESERVE_NODE) {
|
if (cur->type == HTML_PRESERVE_NODE) {
|
||||||
if (cur->content != NULL) {
|
if (cur->content != NULL) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlOutputBufferWriteString(buf, (const char *)cur->content);
|
xmlOutputBufferWriteString(buf, (const char *)cur->content);
|
||||||
#else
|
|
||||||
xmlOutputBufferWriteString(buf, (const char *)
|
|
||||||
xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1058,12 +1008,7 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
|
|||||||
* invalids to charrefs
|
* invalids to charrefs
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlOutputBufferWriteString(buf, (const char *) cur->content);
|
xmlOutputBufferWriteString(buf, (const char *) cur->content);
|
||||||
#else
|
|
||||||
xmlOutputBufferWriteString(buf,
|
|
||||||
(const char *) xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
if (cur->children != NULL) {
|
if (cur->children != NULL) {
|
||||||
if ((format) && (info != NULL) && (!info->isinline) &&
|
if ((format) && (info != NULL) && (!info->isinline) &&
|
||||||
|
8
SAX.c
8
SAX.c
@ -1453,18 +1453,15 @@ characters(void *ctx, const xmlChar *ch, int len)
|
|||||||
if (lastChild == NULL) {
|
if (lastChild == NULL) {
|
||||||
/* first node, first time */
|
/* first node, first time */
|
||||||
xmlNodeAddContentLen(ctxt->node, ch, len);
|
xmlNodeAddContentLen(ctxt->node, ch, len);
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
if (ctxt->node->children != NULL) {
|
if (ctxt->node->children != NULL) {
|
||||||
ctxt->nodelen = len;
|
ctxt->nodelen = len;
|
||||||
ctxt->nodemem = len + 1;
|
ctxt->nodemem = len + 1;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
} else {
|
} else {
|
||||||
int coalesceText = (lastChild != NULL) &&
|
int coalesceText = (lastChild != NULL) &&
|
||||||
(lastChild->type == XML_TEXT_NODE) &&
|
(lastChild->type == XML_TEXT_NODE) &&
|
||||||
(lastChild->name == xmlStringText);
|
(lastChild->name == xmlStringText);
|
||||||
if ((coalesceText) && (ctxt->nodemem != 0)) {
|
if ((coalesceText) && (ctxt->nodemem != 0)) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
/*
|
/*
|
||||||
* The whole point of maintaining nodelen and nodemem,
|
* The whole point of maintaining nodelen and nodemem,
|
||||||
* xmlTextConcat is too costly, i.e. compute length,
|
* xmlTextConcat is too costly, i.e. compute length,
|
||||||
@ -1491,9 +1488,6 @@ characters(void *ctx, const xmlChar *ch, int len)
|
|||||||
memcpy(&lastChild->content[ctxt->nodelen], ch, len);
|
memcpy(&lastChild->content[ctxt->nodelen], ch, len);
|
||||||
ctxt->nodelen += len;
|
ctxt->nodelen += len;
|
||||||
lastChild->content[ctxt->nodelen] = 0;
|
lastChild->content[ctxt->nodelen] = 0;
|
||||||
#else
|
|
||||||
xmlTextConcat(lastChild, ch, len);
|
|
||||||
#endif
|
|
||||||
} else if (coalesceText) {
|
} else if (coalesceText) {
|
||||||
xmlTextConcat(lastChild, ch, len);
|
xmlTextConcat(lastChild, ch, len);
|
||||||
if (ctxt->node->children != NULL) {
|
if (ctxt->node->children != NULL) {
|
||||||
@ -1504,12 +1498,10 @@ characters(void *ctx, const xmlChar *ch, int len)
|
|||||||
/* Mixed content, first time */
|
/* Mixed content, first time */
|
||||||
lastChild = xmlNewTextLen(ch, len);
|
lastChild = xmlNewTextLen(ch, len);
|
||||||
xmlAddChild(ctxt->node, lastChild);
|
xmlAddChild(ctxt->node, lastChild);
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
if (ctxt->node->children != NULL) {
|
if (ctxt->node->children != NULL) {
|
||||||
ctxt->nodelen = len;
|
ctxt->nodelen = len;
|
||||||
ctxt->nodemem = len + 1;
|
ctxt->nodemem = len + 1;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
288
c14n.c
288
c14n.c
@ -55,10 +55,8 @@ typedef struct _xmlC14NCtx {
|
|||||||
} xmlC14NCtx, *xmlC14NCtxPtr;
|
} xmlC14NCtx, *xmlC14NCtxPtr;
|
||||||
|
|
||||||
|
|
||||||
static int xmlC14NProcessNode (xmlC14NCtxPtr ctx,
|
static int xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur);
|
||||||
xmlNodePtr cur);
|
static int xmlC14NProcessNodeList(xmlC14NCtxPtr ctx, xmlNodePtr cur);
|
||||||
static int xmlC14NProcessNodeList (xmlC14NCtxPtr ctx,
|
|
||||||
xmlNodePtr cur);
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
XMLC14N_NORMALIZE_ATTR = 0,
|
XMLC14N_NORMALIZE_ATTR = 0,
|
||||||
XMLC14N_NORMALIZE_COMMENT = 1,
|
XMLC14N_NORMALIZE_COMMENT = 1,
|
||||||
@ -94,15 +92,18 @@ static xmlChar* xmlC11NNormalizeString (const xmlChar *input,
|
|||||||
*
|
*
|
||||||
* Returns 1 if the node is visible or 0 otherwise.
|
* Returns 1 if the node is visible or 0 otherwise.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* todo: make it a define? */
|
/* todo: make it a define? */
|
||||||
static int
|
static int
|
||||||
xmlC14NIsVisible(xmlC14NCtxPtr ctx, void *node) {
|
xmlC14NIsVisible(xmlC14NCtxPtr ctx, void *node)
|
||||||
|
{
|
||||||
/*
|
/*
|
||||||
* If the input is an XPath node-set, then the node-set must explicitly
|
* If the input is an XPath node-set, then the node-set must explicitly
|
||||||
* contain every node to be rendered to the canonical form.
|
* contain every node to be rendered to the canonical form.
|
||||||
*/
|
*/
|
||||||
if(ctx->visible_nodes != NULL &&
|
if ((ctx->visible_nodes != NULL) &&
|
||||||
!xmlXPathNodeSetContains(ctx->visible_nodes, (xmlNodePtr)node)) {
|
(!xmlXPathNodeSetContains(ctx->visible_nodes, (xmlNodePtr) node)))
|
||||||
|
{
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,12 +119,16 @@ xmlC14NIsVisible(xmlC14NCtxPtr ctx, void *node) {
|
|||||||
*
|
*
|
||||||
* Returns 1 if the node is default or 0 otherwise
|
* Returns 1 if the node is default or 0 otherwise
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* todo: make it a define? */
|
/* todo: make it a define? */
|
||||||
static int
|
static int
|
||||||
xmlC14NIsXmlNs(xmlNsPtr ns) {
|
xmlC14NIsXmlNs(xmlNsPtr ns)
|
||||||
return (ns != NULL &&
|
{
|
||||||
xmlStrEqual(ns->prefix, BAD_CAST "xml") &&
|
return ((ns != NULL) &&
|
||||||
xmlStrEqual(ns->href, BAD_CAST "http://www.w3.org/XML/1998/namespace"));
|
(xmlStrEqual(ns->prefix, BAD_CAST "xml")) &&
|
||||||
|
(xmlStrEqual(ns->href,
|
||||||
|
BAD_CAST
|
||||||
|
"http://www.w3.org/XML/1998/namespace")));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -136,16 +141,18 @@ xmlC14NIsXmlNs(xmlNsPtr ns) {
|
|||||||
* Returns 1 if we already wrote this namespace or 0 otherwise
|
* Returns 1 if we already wrote this namespace or 0 otherwise
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
xmlExcC14NIsRendered(xmlC14NCtxPtr ctx, xmlNsPtr ns) {
|
xmlExcC14NIsRendered(xmlC14NCtxPtr ctx, xmlNsPtr ns)
|
||||||
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if(ctx == NULL || ctx->ns_rendered == NULL || ns == NULL) {
|
if ((ctx == NULL) || (ctx->ns_rendered == NULL) || (ns == NULL)) {
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->ns_rendered->nodeTab != NULL) {
|
if (ctx->ns_rendered->nodeTab != NULL) {
|
||||||
for (i = ctx->ns_rendered->nodeNr - 1; i >= 0; --i) {
|
for (i = ctx->ns_rendered->nodeNr - 1; i >= 0; --i) {
|
||||||
xmlNsPtr ns1 = (xmlNsPtr) ctx->ns_rendered->nodeTab[i];
|
xmlNsPtr ns1 = (xmlNsPtr) ctx->ns_rendered->nodeTab[i];
|
||||||
|
|
||||||
if (xmlStrEqual(ns1->prefix, ns->prefix)) {
|
if (xmlStrEqual(ns1->prefix, ns->prefix)) {
|
||||||
return (xmlStrEqual(ns1->href, ns->href));
|
return (xmlStrEqual(ns1->href, ns->href));
|
||||||
}
|
}
|
||||||
@ -155,7 +162,7 @@ xmlExcC14NIsRendered(xmlC14NCtxPtr ctx, xmlNsPtr ns) {
|
|||||||
* if the default namespace xmlns="" is not defined yet then
|
* if the default namespace xmlns="" is not defined yet then
|
||||||
* we do not want to print it out
|
* 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));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -168,10 +175,14 @@ xmlExcC14NIsRendered(xmlC14NCtxPtr ctx, xmlNsPtr ns) {
|
|||||||
* Returns -1 if ns1 < ns2, 0 if ns1 == ns2 or 1 if ns1 > ns2.
|
* Returns -1 if ns1 < ns2, 0 if ns1 == ns2 or 1 if ns1 > ns2.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
xmlC14NNamespacesCompare(xmlNsPtr ns1, xmlNsPtr ns2) {
|
xmlC14NNamespacesCompare(xmlNsPtr ns1, xmlNsPtr ns2)
|
||||||
if(ns1 == ns2) return(0);
|
{
|
||||||
if(ns1 == NULL) return(-1);
|
if (ns1 == ns2)
|
||||||
if(ns2 == NULL) return(1);
|
return (0);
|
||||||
|
if (ns1 == NULL)
|
||||||
|
return (-1);
|
||||||
|
if (ns2 == NULL)
|
||||||
|
return (1);
|
||||||
|
|
||||||
return (xmlStrcmp(ns1->prefix, ns2->prefix));
|
return (xmlStrcmp(ns1->prefix, ns2->prefix));
|
||||||
}
|
}
|
||||||
@ -187,9 +198,10 @@ xmlC14NNamespacesCompare(xmlNsPtr ns1, xmlNsPtr ns2) {
|
|||||||
* Returns 1 on success or 0 on fail.
|
* Returns 1 on success or 0 on fail.
|
||||||
*/
|
*/
|
||||||
static int
|
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
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
"xmlC14NPrintNamespace: namespace or context pointer is null\n");
|
"xmlC14NPrintNamespace: namespace or context pointer is null\n");
|
||||||
@ -249,13 +261,14 @@ xmlC14NPrintNamespaces(const xmlNsPtr ns, xmlC14NCtxPtr ctx) {
|
|||||||
* Returns 0 on success or -1 on fail.
|
* Returns 0 on success or -1 on fail.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur)
|
||||||
|
{
|
||||||
xmlNsPtr ns;
|
xmlNsPtr ns;
|
||||||
xmlListPtr list;
|
xmlListPtr list;
|
||||||
xmlNodePtr visible_parent;
|
xmlNodePtr visible_parent;
|
||||||
xmlNsPtr prev;
|
xmlNsPtr prev;
|
||||||
|
|
||||||
if(ctx == NULL || cur == NULL || cur->type != XML_ELEMENT_NODE) {
|
if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
"xmlC14NProcessNamespacesAxis: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
|
"xmlC14NProcessNamespacesAxis: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
|
||||||
@ -266,7 +279,8 @@ xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
/*
|
/*
|
||||||
* Create a sorted list to store element namespaces
|
* Create a sorted list to store element namespaces
|
||||||
*/
|
*/
|
||||||
list = xmlListCreate(NULL, (xmlListDataCompare)xmlC14NNamespacesCompare);
|
list =
|
||||||
|
xmlListCreate(NULL, (xmlListDataCompare) xmlC14NNamespacesCompare);
|
||||||
if (list == NULL) {
|
if (list == NULL) {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
@ -277,7 +291,8 @@ xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
|
|
||||||
/* find nearest visible parent */
|
/* find nearest visible parent */
|
||||||
visible_parent = cur->parent;
|
visible_parent = cur->parent;
|
||||||
while(visible_parent != NULL && !xmlC14NIsVisible(ctx, visible_parent)) {
|
while ((visible_parent != NULL) &&
|
||||||
|
(!xmlC14NIsVisible(ctx, visible_parent))) {
|
||||||
visible_parent = visible_parent->parent;
|
visible_parent = visible_parent->parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -293,7 +308,7 @@ xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
* first of all ignore default "xml" namespace and
|
* first of all ignore default "xml" namespace and
|
||||||
* already included namespace
|
* already included namespace
|
||||||
*/
|
*/
|
||||||
if(xmlC14NIsXmlNs(ns) || xmlListSearch(list, ns) != NULL) {
|
if ((xmlC14NIsXmlNs(ns)) || (xmlListSearch(list, ns) != NULL)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -308,9 +323,11 @@ xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
* and empty href)
|
* and empty href)
|
||||||
*/
|
*/
|
||||||
prev = xmlSearchNs(ctx->doc, visible_parent, ns->prefix);
|
prev = xmlSearchNs(ctx->doc, visible_parent, ns->prefix);
|
||||||
if(prev == NULL && (xmlStrlen(ns->prefix) > 0 || xmlStrlen(ns->href) > 0)) {
|
if ((prev == NULL) && ((xmlStrlen(ns->prefix) > 0) ||
|
||||||
|
(xmlStrlen(ns->href) > 0))) {
|
||||||
xmlListInsert(list, ns);
|
xmlListInsert(list, ns);
|
||||||
} else if(prev != NULL && !xmlStrEqual(ns->href, prev->href)) {
|
} else if ((prev != NULL)
|
||||||
|
&& (!xmlStrEqual(ns->href, prev->href))) {
|
||||||
xmlListInsert(list, ns);
|
xmlListInsert(list, ns);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -320,7 +337,8 @@ xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
/*
|
/*
|
||||||
* print out all elements from list
|
* print out all elements from list
|
||||||
*/
|
*/
|
||||||
xmlListWalk(list, (xmlListWalker)xmlC14NPrintNamespaces, (const void*)ctx);
|
xmlListWalk(list, (xmlListWalker) xmlC14NPrintNamespaces,
|
||||||
|
(const void *) ctx);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Cleanup
|
* Cleanup
|
||||||
@ -360,12 +378,13 @@ xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
* Returns 0 on success or -1 on fail.
|
* Returns 0 on success or -1 on fail.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur)
|
||||||
|
{
|
||||||
xmlListPtr list;
|
xmlListPtr list;
|
||||||
xmlAttrPtr attr;
|
xmlAttrPtr attr;
|
||||||
xmlNsPtr ns;
|
xmlNsPtr ns;
|
||||||
|
|
||||||
if(ctx == NULL || cur == NULL || cur->type != XML_ELEMENT_NODE) {
|
if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
"xmlExcC14NProcessNamespacesAxis: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
|
"xmlExcC14NProcessNamespacesAxis: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
|
||||||
@ -373,7 +392,7 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!ctx->exclusive || ctx->ns_rendered == NULL) {
|
if ((!ctx->exclusive) || (ctx->ns_rendered == NULL)) {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
"xmlExcC14NProcessNamespacesAxis: called for non-exclusive canonization or rendered stack is NULL.\n");
|
"xmlExcC14NProcessNamespacesAxis: called for non-exclusive canonization or rendered stack is NULL.\n");
|
||||||
@ -385,7 +404,8 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
/*
|
/*
|
||||||
* Create a sorted list to store element namespaces
|
* Create a sorted list to store element namespaces
|
||||||
*/
|
*/
|
||||||
list = xmlListCreate(NULL, (xmlListDataCompare)xmlC14NNamespacesCompare);
|
list =
|
||||||
|
xmlListCreate(NULL, (xmlListDataCompare) xmlC14NNamespacesCompare);
|
||||||
if (list == NULL) {
|
if (list == NULL) {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
@ -400,7 +420,8 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
* todo: do we need to check for default "xml:" namespace
|
* todo: do we need to check for default "xml:" namespace
|
||||||
*/
|
*/
|
||||||
ns = (cur->ns != NULL) ? cur->ns : xmlSearchNs(ctx->doc, cur, NULL);
|
ns = (cur->ns != NULL) ? cur->ns : xmlSearchNs(ctx->doc, cur, NULL);
|
||||||
if(ns != NULL && !xmlC14NIsXmlNs(ns) && xmlListSearch(list, ns) == NULL) {
|
if ((ns != NULL) && (!xmlC14NIsXmlNs(ns)) &&
|
||||||
|
(xmlListSearch(list, ns) == NULL)) {
|
||||||
if (!xmlExcC14NIsRendered(ctx, ns)) {
|
if (!xmlExcC14NIsRendered(ctx, ns)) {
|
||||||
xmlListInsert(list, ns);
|
xmlListInsert(list, ns);
|
||||||
xmlXPathNodeSetAdd(ctx->ns_rendered, (xmlNodePtr) ns);
|
xmlXPathNodeSetAdd(ctx->ns_rendered, (xmlNodePtr) ns);
|
||||||
@ -413,10 +434,12 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
* default namespace
|
* default namespace
|
||||||
*/
|
*/
|
||||||
if (xmlC14NIsVisible(ctx, attr)) {
|
if (xmlC14NIsVisible(ctx, attr)) {
|
||||||
ns = (attr->ns != NULL) ? attr->ns : xmlSearchNs(ctx->doc, cur, NULL);
|
ns = (attr->ns != NULL) ? attr->ns : xmlSearchNs(ctx->doc, cur,
|
||||||
if(ns != NULL && xmlC14NIsVisible(ctx, attr) && !xmlC14NIsXmlNs(ns)) {
|
NULL);
|
||||||
if(xmlListSearch(list, ns) == NULL &&
|
if ((ns != NULL) && (xmlC14NIsVisible(ctx, attr)) &&
|
||||||
!xmlExcC14NIsRendered(ctx, ns)) {
|
(!xmlC14NIsXmlNs(ns))) {
|
||||||
|
if ((xmlListSearch(list, ns) == NULL)
|
||||||
|
&& (!xmlExcC14NIsRendered(ctx, ns))) {
|
||||||
xmlListInsert(list, ns);
|
xmlListInsert(list, ns);
|
||||||
xmlXPathNodeSetAdd(ctx->ns_rendered, (xmlNodePtr) ns);
|
xmlXPathNodeSetAdd(ctx->ns_rendered, (xmlNodePtr) ns);
|
||||||
}
|
}
|
||||||
@ -437,11 +460,12 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
/*
|
/*
|
||||||
* Special values for namespace with empty prefix
|
* Special values for namespace with empty prefix
|
||||||
*/
|
*/
|
||||||
if(xmlStrEqual(prefix, BAD_CAST "#default") || xmlStrEqual(prefix, BAD_CAST "")) {
|
if (xmlStrEqual(prefix, BAD_CAST "#default")
|
||||||
|
|| xmlStrEqual(prefix, BAD_CAST "")) {
|
||||||
prefix = NULL;
|
prefix = NULL;
|
||||||
}
|
}
|
||||||
ns = xmlSearchNs(ctx->doc, cur, prefix);
|
ns = xmlSearchNs(ctx->doc, cur, prefix);
|
||||||
if(ns != NULL && !xmlC14NIsXmlNs(ns)) {
|
if ((ns != NULL) && (!xmlC14NIsXmlNs(ns))) {
|
||||||
if (xmlListSearch(list, ns) == NULL &&
|
if (xmlListSearch(list, ns) == NULL &&
|
||||||
!xmlExcC14NIsRendered(ctx, ns)) {
|
!xmlExcC14NIsRendered(ctx, ns)) {
|
||||||
xmlListInsert(list, ns);
|
xmlListInsert(list, ns);
|
||||||
@ -454,7 +478,8 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
/*
|
/*
|
||||||
* print out all elements from list
|
* print out all elements from list
|
||||||
*/
|
*/
|
||||||
xmlListWalk(list, (xmlListWalker)xmlC14NPrintNamespaces, (const void*)ctx);
|
xmlListWalk(list, (xmlListWalker) xmlC14NPrintNamespaces,
|
||||||
|
(const void *) ctx);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Cleanup
|
* Cleanup
|
||||||
@ -474,15 +499,19 @@ xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
* Returns -1 if attr1 < attr2, 0 if attr1 == attr2 or 1 if attr1 > attr2.
|
* Returns -1 if attr1 < attr2, 0 if attr1 == attr2 or 1 if attr1 > attr2.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
xmlC14NAttrsCompare(xmlAttrPtr attr1, xmlAttrPtr attr2) {
|
xmlC14NAttrsCompare(xmlAttrPtr attr1, xmlAttrPtr attr2)
|
||||||
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Simple cases
|
* Simple cases
|
||||||
*/
|
*/
|
||||||
if(attr1 == attr2) return(0);
|
if (attr1 == attr2)
|
||||||
if(attr1 == NULL) return(-1);
|
return (0);
|
||||||
if(attr2 == NULL) return(1);
|
if (attr1 == NULL)
|
||||||
|
return (-1);
|
||||||
|
if (attr2 == NULL)
|
||||||
|
return (1);
|
||||||
if (attr1->ns == attr2->ns) {
|
if (attr1->ns == attr2->ns) {
|
||||||
return (xmlStrcmp(attr1->name, attr2->name));
|
return (xmlStrcmp(attr1->name, attr2->name));
|
||||||
}
|
}
|
||||||
@ -492,10 +521,14 @@ xmlC14NAttrsCompare(xmlAttrPtr attr1, xmlAttrPtr attr2) {
|
|||||||
* because the default namespace is not applied to
|
* because the default namespace is not applied to
|
||||||
* unqualified attributes
|
* unqualified attributes
|
||||||
*/
|
*/
|
||||||
if(attr1->ns == NULL) return(-1);
|
if (attr1->ns == NULL)
|
||||||
if(attr2->ns == NULL) return(1);
|
return (-1);
|
||||||
if(attr1->ns->prefix == NULL) return(-1);
|
if (attr2->ns == NULL)
|
||||||
if(attr2->ns->prefix == NULL) return(1);
|
return (1);
|
||||||
|
if (attr1->ns->prefix == NULL)
|
||||||
|
return (-1);
|
||||||
|
if (attr2->ns->prefix == NULL)
|
||||||
|
return (1);
|
||||||
|
|
||||||
ret = xmlStrcmp(attr1->ns->href, attr2->ns->href);
|
ret = xmlStrcmp(attr1->ns->href, attr2->ns->href);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
@ -518,11 +551,12 @@ xmlC14NAttrsCompare(xmlAttrPtr attr1, xmlAttrPtr attr2) {
|
|||||||
* Returns 1 on success or 0 on fail.
|
* Returns 1 on success or 0 on fail.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
xmlC14NPrintAttrs(const xmlAttrPtr attr, xmlC14NCtxPtr ctx) {
|
xmlC14NPrintAttrs(const xmlAttrPtr attr, xmlC14NCtxPtr ctx)
|
||||||
|
{
|
||||||
xmlChar *value;
|
xmlChar *value;
|
||||||
xmlChar *buffer;
|
xmlChar *buffer;
|
||||||
|
|
||||||
if(attr == NULL || ctx == NULL) {
|
if ((attr == NULL) || (ctx == NULL)) {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
"xmlC14NPrintAttrs: attr == NULL or ctx == NULL\n");
|
"xmlC14NPrintAttrs: attr == NULL or ctx == NULL\n");
|
||||||
@ -532,7 +566,8 @@ xmlC14NPrintAttrs(const xmlAttrPtr attr, xmlC14NCtxPtr ctx) {
|
|||||||
|
|
||||||
xmlOutputBufferWriteString(ctx->buf, " ");
|
xmlOutputBufferWriteString(ctx->buf, " ");
|
||||||
if (attr->ns != NULL && xmlStrlen(attr->ns->prefix) > 0) {
|
if (attr->ns != NULL && xmlStrlen(attr->ns->prefix) > 0) {
|
||||||
xmlOutputBufferWriteString(ctx->buf, (const char *) attr->ns->prefix);
|
xmlOutputBufferWriteString(ctx->buf,
|
||||||
|
(const char *) attr->ns->prefix);
|
||||||
xmlOutputBufferWriteString(ctx->buf, ":");
|
xmlOutputBufferWriteString(ctx->buf, ":");
|
||||||
}
|
}
|
||||||
xmlOutputBufferWriteString(ctx->buf, (const char *) attr->name);
|
xmlOutputBufferWriteString(ctx->buf, (const char *) attr->name);
|
||||||
@ -590,11 +625,12 @@ xmlC14NPrintAttrs(const xmlAttrPtr attr, xmlC14NCtxPtr ctx) {
|
|||||||
* Returns 0 on success or -1 on fail.
|
* Returns 0 on success or -1 on fail.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur)
|
||||||
|
{
|
||||||
xmlAttrPtr attr;
|
xmlAttrPtr attr;
|
||||||
xmlListPtr list;
|
xmlListPtr list;
|
||||||
|
|
||||||
if(ctx == NULL || cur == NULL || cur->type != XML_ELEMENT_NODE) {
|
if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
"xmlC14NProcessAttrsAxis: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
|
"xmlC14NProcessAttrsAxis: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
|
||||||
@ -630,7 +666,8 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
* include attributes in "xml" namespace defined in ancestors
|
* include attributes in "xml" namespace defined in ancestors
|
||||||
* (only for non-exclusive XML Canonicalization)
|
* (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
|
* If XPath node-set is not specified then the parent is always
|
||||||
* visible!
|
* visible!
|
||||||
@ -639,7 +676,8 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
while (cur != NULL) {
|
while (cur != NULL) {
|
||||||
attr = cur->properties;
|
attr = cur->properties;
|
||||||
while (attr != NULL) {
|
while (attr != NULL) {
|
||||||
if(attr->ns != NULL && xmlStrEqual(attr->ns->prefix, BAD_CAST "xml")) {
|
if ((attr->ns != NULL)
|
||||||
|
&& (xmlStrEqual(attr->ns->prefix, BAD_CAST "xml"))) {
|
||||||
if (xmlListSearch(list, attr) == NULL) {
|
if (xmlListSearch(list, attr) == NULL) {
|
||||||
xmlListInsert(list, attr);
|
xmlListInsert(list, attr);
|
||||||
}
|
}
|
||||||
@ -653,7 +691,8 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
/*
|
/*
|
||||||
* print out all elements from list
|
* print out all elements from list
|
||||||
*/
|
*/
|
||||||
xmlListWalk(list, (xmlListWalker)xmlC14NPrintAttrs, (const void*)ctx);
|
xmlListWalk(list, (xmlListWalker) xmlC14NPrintAttrs,
|
||||||
|
(const void *) ctx);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Cleanup
|
* Cleanup
|
||||||
@ -672,10 +711,11 @@ xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
* Returns 0 if the node has no relative namespaces or -1 otherwise.
|
* Returns 0 if the node has no relative namespaces or -1 otherwise.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
xmlC14NCheckForRelativeNamespaces(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
xmlC14NCheckForRelativeNamespaces(xmlC14NCtxPtr ctx, xmlNodePtr cur)
|
||||||
|
{
|
||||||
xmlNsPtr ns;
|
xmlNsPtr ns;
|
||||||
|
|
||||||
if(ctx == NULL || cur == NULL || cur->type != XML_ELEMENT_NODE) {
|
if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
"xmlC14NCheckForRelativeNamespaces: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
|
"xmlC14NCheckForRelativeNamespaces: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
|
||||||
@ -692,7 +732,8 @@ xmlC14NCheckForRelativeNamespaces(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
if (uri == NULL) {
|
if (uri == NULL) {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
"xmlC14NCheckForRelativeNamespaces: unable to parse uri=\"%s\".\n", ns->href);
|
"xmlC14NCheckForRelativeNamespaces: unable to parse uri=\"%s\".\n",
|
||||||
|
ns->href);
|
||||||
#endif
|
#endif
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
@ -700,7 +741,9 @@ xmlC14NCheckForRelativeNamespaces(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
xmlFreeURI(uri);
|
xmlFreeURI(uri);
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
if(!xmlStrEqual((const xmlChar *) uri->scheme, BAD_CAST "urn") && xmlStrlen((const xmlChar *) uri->server) == 0) {
|
if ((!xmlStrEqual
|
||||||
|
((const xmlChar *) uri->scheme, BAD_CAST "urn"))
|
||||||
|
&& (xmlStrlen((const xmlChar *) uri->server) == 0)) {
|
||||||
xmlFreeURI(uri);
|
xmlFreeURI(uri);
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
@ -733,11 +776,12 @@ xmlC14NCheckForRelativeNamespaces(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
* Returns non-negative value on success or negative value on fail
|
* Returns non-negative value on success or negative value on fail
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) {
|
xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible)
|
||||||
|
{
|
||||||
int ret;
|
int ret;
|
||||||
int ns_rendered_pos = 0;
|
int ns_rendered_pos = 0;
|
||||||
|
|
||||||
if(ctx == NULL || cur == NULL || cur->type != XML_ELEMENT_NODE) {
|
if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
"xmlC14NProcessElementNode: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
|
"xmlC14NProcessElementNode: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
|
||||||
@ -763,7 +807,7 @@ xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) {
|
|||||||
* Save ns_rendered stack position for exclusive
|
* Save ns_rendered stack position for exclusive
|
||||||
* processing
|
* processing
|
||||||
*/
|
*/
|
||||||
if(ctx->exclusive && ctx->ns_rendered != NULL) {
|
if ((ctx->exclusive) && (ctx->ns_rendered != NULL)) {
|
||||||
ns_rendered_pos = ctx->ns_rendered->nodeNr;
|
ns_rendered_pos = ctx->ns_rendered->nodeNr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -773,8 +817,9 @@ xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) {
|
|||||||
}
|
}
|
||||||
xmlOutputBufferWriteString(ctx->buf, "<");
|
xmlOutputBufferWriteString(ctx->buf, "<");
|
||||||
|
|
||||||
if(cur->ns != NULL && xmlStrlen(cur->ns->prefix) > 0) {
|
if ((cur->ns != NULL) && (xmlStrlen(cur->ns->prefix) > 0)) {
|
||||||
xmlOutputBufferWriteString(ctx->buf, (const char *)cur->ns->prefix);
|
xmlOutputBufferWriteString(ctx->buf,
|
||||||
|
(const char *) cur->ns->prefix);
|
||||||
xmlOutputBufferWriteString(ctx->buf, ":");
|
xmlOutputBufferWriteString(ctx->buf, ":");
|
||||||
}
|
}
|
||||||
xmlOutputBufferWriteString(ctx->buf, (const char *) cur->name);
|
xmlOutputBufferWriteString(ctx->buf, (const char *) cur->name);
|
||||||
@ -815,8 +860,9 @@ xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) {
|
|||||||
}
|
}
|
||||||
if (visible) {
|
if (visible) {
|
||||||
xmlOutputBufferWriteString(ctx->buf, "</");
|
xmlOutputBufferWriteString(ctx->buf, "</");
|
||||||
if(cur->ns != NULL && xmlStrlen(cur->ns->prefix) > 0) {
|
if ((cur->ns != NULL) && (xmlStrlen(cur->ns->prefix) > 0)) {
|
||||||
xmlOutputBufferWriteString(ctx->buf, (const char *)cur->ns->prefix);
|
xmlOutputBufferWriteString(ctx->buf,
|
||||||
|
(const char *) cur->ns->prefix);
|
||||||
xmlOutputBufferWriteString(ctx->buf, ":");
|
xmlOutputBufferWriteString(ctx->buf, ":");
|
||||||
}
|
}
|
||||||
xmlOutputBufferWriteString(ctx->buf, (const char *) cur->name);
|
xmlOutputBufferWriteString(ctx->buf, (const char *) cur->name);
|
||||||
@ -830,7 +876,7 @@ xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) {
|
|||||||
* Restore ns_rendered stack position for exclusive
|
* Restore ns_rendered stack position for exclusive
|
||||||
* processing
|
* processing
|
||||||
*/
|
*/
|
||||||
if(ctx->exclusive && ctx->ns_rendered != NULL) {
|
if ((ctx->exclusive) && (ctx->ns_rendered != NULL)) {
|
||||||
ctx->ns_rendered->nodeNr = ns_rendered_pos;
|
ctx->ns_rendered->nodeNr = ns_rendered_pos;
|
||||||
}
|
}
|
||||||
return (0);
|
return (0);
|
||||||
@ -846,11 +892,12 @@ xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) {
|
|||||||
* Returns non-negative value on success or negative value on fail
|
* Returns non-negative value on success or negative value on fail
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur)
|
||||||
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
int visible;
|
int visible;
|
||||||
|
|
||||||
if(ctx == NULL || cur == NULL) {
|
if ((ctx == NULL) || (cur == NULL)) {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
"xmlC14NProcessNode: Null context or node pointer.\n");
|
"xmlC14NProcessNode: Null context or node pointer.\n");
|
||||||
@ -874,16 +921,13 @@ xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
*/
|
*/
|
||||||
/* cdata sections are processed as text nodes */
|
/* cdata sections are processed as text nodes */
|
||||||
/* todo: verify that cdata sections are included in XPath nodes set */
|
/* todo: verify that cdata sections are included in XPath nodes set */
|
||||||
if(visible && cur->content != NULL) {
|
if ((visible) && (cur->content != NULL)) {
|
||||||
xmlChar *buffer;
|
xmlChar *buffer;
|
||||||
|
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
buffer = xmlC11NNormalizeText(cur->content);
|
buffer = xmlC11NNormalizeText(cur->content);
|
||||||
#else
|
|
||||||
buffer = xmlC11NNormalizeText(xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
if (buffer != NULL) {
|
if (buffer != NULL) {
|
||||||
xmlOutputBufferWriteString(ctx->buf, (const char *)buffer);
|
xmlOutputBufferWriteString(ctx->buf,
|
||||||
|
(const char *) buffer);
|
||||||
xmlFree(buffer);
|
xmlFree(buffer);
|
||||||
} else {
|
} else {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
@ -914,19 +958,18 @@ xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
xmlOutputBufferWriteString(ctx->buf, "<?");
|
xmlOutputBufferWriteString(ctx->buf, "<?");
|
||||||
}
|
}
|
||||||
|
|
||||||
xmlOutputBufferWriteString(ctx->buf, (const char *)cur->name);
|
xmlOutputBufferWriteString(ctx->buf,
|
||||||
if(cur->content != NULL && *(cur->content) != '\0') {
|
(const char *) cur->name);
|
||||||
|
if ((cur->content != NULL) && (*(cur->content) != '\0')) {
|
||||||
xmlChar *buffer;
|
xmlChar *buffer;
|
||||||
|
|
||||||
xmlOutputBufferWriteString(ctx->buf, " ");
|
xmlOutputBufferWriteString(ctx->buf, " ");
|
||||||
|
|
||||||
/* todo: do we need to normalize pi? */
|
/* todo: do we need to normalize pi? */
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
buffer = xmlC11NNormalizePI(cur->content);
|
buffer = xmlC11NNormalizePI(cur->content);
|
||||||
#else
|
|
||||||
buffer = xmlC11NNormalizePI(xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
if (buffer != NULL) {
|
if (buffer != NULL) {
|
||||||
xmlOutputBufferWriteString(ctx->buf, (const char *)buffer);
|
xmlOutputBufferWriteString(ctx->buf,
|
||||||
|
(const char *) buffer);
|
||||||
xmlFree(buffer);
|
xmlFree(buffer);
|
||||||
} else {
|
} else {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
@ -971,13 +1014,10 @@ xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
xmlChar *buffer;
|
xmlChar *buffer;
|
||||||
|
|
||||||
/* todo: do we need to normalize comment? */
|
/* todo: do we need to normalize comment? */
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
buffer = xmlC11NNormalizeComment(cur->content);
|
buffer = xmlC11NNormalizeComment(cur->content);
|
||||||
#else
|
|
||||||
buffer = xmlC11NNormalizeString(xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
if (buffer != NULL) {
|
if (buffer != NULL) {
|
||||||
xmlOutputBufferWriteString(ctx->buf, (const char *)buffer);
|
xmlOutputBufferWriteString(ctx->buf,
|
||||||
|
(const char *) buffer);
|
||||||
xmlFree(buffer);
|
xmlFree(buffer);
|
||||||
} else {
|
} else {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
@ -1038,7 +1078,8 @@ xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
default:
|
default:
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
"xmlC14NProcessNode: unknown node type = %d\n", cur->type);
|
"xmlC14NProcessNode: unknown node type = %d\n",
|
||||||
|
cur->type);
|
||||||
#endif
|
#endif
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
@ -1056,7 +1097,8 @@ xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
* Returns non-negative value on success or negative value on fail
|
* Returns non-negative value on success or negative value on fail
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
xmlC14NProcessNodeList(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
xmlC14NProcessNodeList(xmlC14NCtxPtr ctx, xmlNodePtr cur)
|
||||||
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (ctx == NULL) {
|
if (ctx == NULL) {
|
||||||
@ -1082,7 +1124,8 @@ xmlC14NProcessNodeList(xmlC14NCtxPtr ctx, xmlNodePtr cur) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
static void
|
static void
|
||||||
xmlC14NFreeCtx(xmlC14NCtxPtr ctx) {
|
xmlC14NFreeCtx(xmlC14NCtxPtr ctx)
|
||||||
|
{
|
||||||
if (ctx == NULL) {
|
if (ctx == NULL) {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
@ -1120,11 +1163,11 @@ xmlC14NFreeCtx(xmlC14NCtxPtr ctx) {
|
|||||||
static xmlC14NCtxPtr
|
static xmlC14NCtxPtr
|
||||||
xmlC14NNewCtx(xmlDocPtr doc, xmlNodeSetPtr nodes,
|
xmlC14NNewCtx(xmlDocPtr doc, xmlNodeSetPtr nodes,
|
||||||
int exclusive, xmlChar ** inclusive_ns_prefixes,
|
int exclusive, xmlChar ** inclusive_ns_prefixes,
|
||||||
int with_comments,
|
int with_comments, xmlOutputBufferPtr buf)
|
||||||
xmlOutputBufferPtr buf) {
|
{
|
||||||
xmlC14NCtxPtr ctx;
|
xmlC14NCtxPtr ctx;
|
||||||
|
|
||||||
if(doc == NULL || buf == NULL) {
|
if ((doc == NULL) || (buf == NULL)) {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
"xmlC14NNewCtx: pointer to document or output buffer is NULL\n");
|
"xmlC14NNewCtx: pointer to document or output buffer is NULL\n");
|
||||||
@ -1208,12 +1251,12 @@ xmlC14NNewCtx(xmlDocPtr doc, xmlNodeSetPtr nodes,
|
|||||||
int
|
int
|
||||||
xmlC14NDocSaveTo(xmlDocPtr doc, xmlNodeSetPtr nodes,
|
xmlC14NDocSaveTo(xmlDocPtr doc, xmlNodeSetPtr nodes,
|
||||||
int exclusive, xmlChar ** inclusive_ns_prefixes,
|
int exclusive, xmlChar ** inclusive_ns_prefixes,
|
||||||
int with_comments,
|
int with_comments, xmlOutputBufferPtr buf)
|
||||||
xmlOutputBufferPtr buf) {
|
{
|
||||||
xmlC14NCtxPtr ctx;
|
xmlC14NCtxPtr ctx;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if(buf == NULL || doc == NULL) {
|
if ((buf == NULL) || (doc == NULL)) {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
"xmlC14NDocSaveTo: null return buffer or doc pointer\n");
|
"xmlC14NDocSaveTo: null return buffer or doc pointer\n");
|
||||||
@ -1305,8 +1348,8 @@ xmlC14NDocSaveTo(xmlDocPtr doc, xmlNodeSetPtr nodes,
|
|||||||
int
|
int
|
||||||
xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes,
|
xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes,
|
||||||
int exclusive, xmlChar ** inclusive_ns_prefixes,
|
int exclusive, xmlChar ** inclusive_ns_prefixes,
|
||||||
int with_comments,
|
int with_comments, xmlChar ** doc_txt_ptr)
|
||||||
xmlChar **doc_txt_ptr) {
|
{
|
||||||
int ret;
|
int ret;
|
||||||
xmlOutputBufferPtr buf;
|
xmlOutputBufferPtr buf;
|
||||||
|
|
||||||
@ -1352,7 +1395,7 @@ xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes,
|
|||||||
}
|
}
|
||||||
(void) xmlOutputBufferClose(buf);
|
(void) xmlOutputBufferClose(buf);
|
||||||
|
|
||||||
if(*doc_txt_ptr == NULL && ret > 0) {
|
if ((*doc_txt_ptr == NULL) && (ret > 0)) {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
"xmlC14NDocDumpMemory: failed to allocate memory for document text representation\n");
|
"xmlC14NDocDumpMemory: failed to allocate memory for document text representation\n");
|
||||||
@ -1389,8 +1432,8 @@ xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes,
|
|||||||
int
|
int
|
||||||
xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes,
|
xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes,
|
||||||
int exclusive, xmlChar ** inclusive_ns_prefixes,
|
int exclusive, xmlChar ** inclusive_ns_prefixes,
|
||||||
int with_comments,
|
int with_comments, const char *filename, int compression)
|
||||||
const char* filename, int compression) {
|
{
|
||||||
xmlOutputBufferPtr buf;
|
xmlOutputBufferPtr buf;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -1401,9 +1444,9 @@ xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes,
|
|||||||
#endif
|
#endif
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_ZLIB_H
|
#ifdef HAVE_ZLIB_H
|
||||||
if(compression < 0) compression = xmlGetCompressMode();
|
if (compression < 0)
|
||||||
|
compression = xmlGetCompressMode();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1413,7 +1456,8 @@ xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes,
|
|||||||
if (buf == NULL) {
|
if (buf == NULL) {
|
||||||
#ifdef DEBUG_C14N
|
#ifdef DEBUG_C14N
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
"xmlC14NDocSave: unable to create buffer for file=\"%s\" with compressin=%d\n", filename, compression);
|
"xmlC14NDocSave: unable to create buffer for file=\"%s\" with compressin=%d\n",
|
||||||
|
filename, compression);
|
||||||
#endif
|
#endif
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
@ -1467,13 +1511,16 @@ xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes,
|
|||||||
* or NULL if an error occurs
|
* or NULL if an error occurs
|
||||||
*/
|
*/
|
||||||
static xmlChar *
|
static xmlChar *
|
||||||
xmlC11NNormalizeString(const xmlChar *input, xmlC14NNormalizationMode mode) {
|
xmlC11NNormalizeString(const xmlChar * input,
|
||||||
|
xmlC14NNormalizationMode mode)
|
||||||
|
{
|
||||||
const xmlChar *cur = input;
|
const xmlChar *cur = input;
|
||||||
xmlChar *buffer = NULL;
|
xmlChar *buffer = NULL;
|
||||||
xmlChar *out = NULL;
|
xmlChar *out = NULL;
|
||||||
int buffer_size = 0;
|
int buffer_size = 0;
|
||||||
|
|
||||||
if (input == NULL) return(NULL);
|
if (input == NULL)
|
||||||
|
return (NULL);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* allocate an translation buffer.
|
* allocate an translation buffer.
|
||||||
@ -1487,54 +1534,54 @@ xmlC11NNormalizeString(const xmlChar *input, xmlC14NNormalizationMode mode) {
|
|||||||
out = buffer;
|
out = buffer;
|
||||||
|
|
||||||
while (*cur != '\0') {
|
while (*cur != '\0') {
|
||||||
if (out - buffer > buffer_size - 10) {
|
if ((out - buffer) > (buffer_size - 10)) {
|
||||||
int indx = out - buffer;
|
int indx = out - buffer;
|
||||||
|
|
||||||
growBufferReentrant();
|
growBufferReentrant();
|
||||||
out = &buffer[indx];
|
out = &buffer[indx];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*cur == '<' && (mode == XMLC14N_NORMALIZE_ATTR ||
|
if ((*cur == '<') && ((mode == XMLC14N_NORMALIZE_ATTR) ||
|
||||||
mode == XMLC14N_NORMALIZE_TEXT)) {
|
(mode == XMLC14N_NORMALIZE_TEXT))) {
|
||||||
*out++ = '&';
|
*out++ = '&';
|
||||||
*out++ = 'l';
|
*out++ = 'l';
|
||||||
*out++ = 't';
|
*out++ = 't';
|
||||||
*out++ = ';';
|
*out++ = ';';
|
||||||
} else if (*cur == '>' && (mode == XMLC14N_NORMALIZE_TEXT)) {
|
} else if ((*cur == '>') && (mode == XMLC14N_NORMALIZE_TEXT)) {
|
||||||
*out++ = '&';
|
*out++ = '&';
|
||||||
*out++ = 'g';
|
*out++ = 'g';
|
||||||
*out++ = 't';
|
*out++ = 't';
|
||||||
*out++ = ';';
|
*out++ = ';';
|
||||||
} else if (*cur == '&' && (mode == XMLC14N_NORMALIZE_ATTR ||
|
} else if ((*cur == '&') && ((mode == XMLC14N_NORMALIZE_ATTR) ||
|
||||||
mode == XMLC14N_NORMALIZE_TEXT)) {
|
(mode == XMLC14N_NORMALIZE_TEXT))) {
|
||||||
*out++ = '&';
|
*out++ = '&';
|
||||||
*out++ = 'a';
|
*out++ = 'a';
|
||||||
*out++ = 'm';
|
*out++ = 'm';
|
||||||
*out++ = 'p';
|
*out++ = 'p';
|
||||||
*out++ = ';';
|
*out++ = ';';
|
||||||
} else if (*cur == '"' && (mode == XMLC14N_NORMALIZE_ATTR)) {
|
} else if ((*cur == '"') && (mode == XMLC14N_NORMALIZE_ATTR)) {
|
||||||
*out++ = '&';
|
*out++ = '&';
|
||||||
*out++ = 'q';
|
*out++ = 'q';
|
||||||
*out++ = 'u';
|
*out++ = 'u';
|
||||||
*out++ = 'o';
|
*out++ = 'o';
|
||||||
*out++ = 't';
|
*out++ = 't';
|
||||||
*out++ = ';';
|
*out++ = ';';
|
||||||
} else if (*cur == '\x09' && (mode == XMLC14N_NORMALIZE_ATTR)) {
|
} else if ((*cur == '\x09') && (mode == XMLC14N_NORMALIZE_ATTR)) {
|
||||||
*out++ = '&';
|
*out++ = '&';
|
||||||
*out++ = '#';
|
*out++ = '#';
|
||||||
*out++ = 'x';
|
*out++ = 'x';
|
||||||
*out++ = '9';
|
*out++ = '9';
|
||||||
*out++ = ';';
|
*out++ = ';';
|
||||||
} else if (*cur == '\x0A' && (mode == XMLC14N_NORMALIZE_ATTR)) {
|
} else if ((*cur == '\x0A') && (mode == XMLC14N_NORMALIZE_ATTR)) {
|
||||||
*out++ = '&';
|
*out++ = '&';
|
||||||
*out++ = '#';
|
*out++ = '#';
|
||||||
*out++ = 'x';
|
*out++ = 'x';
|
||||||
*out++ = 'A';
|
*out++ = 'A';
|
||||||
*out++ = ';';
|
*out++ = ';';
|
||||||
} else if (*cur == '\x0D' && (mode == XMLC14N_NORMALIZE_ATTR ||
|
} else if ((*cur == '\x0D') && ((mode == XMLC14N_NORMALIZE_ATTR) ||
|
||||||
mode == XMLC14N_NORMALIZE_TEXT ||
|
(mode == XMLC14N_NORMALIZE_TEXT) ||
|
||||||
mode == XMLC14N_NORMALIZE_COMMENT ||
|
(mode == XMLC14N_NORMALIZE_COMMENT) ||
|
||||||
mode == XMLC14N_NORMALIZE_PI)) {
|
(mode == XMLC14N_NORMALIZE_PI))) {
|
||||||
*out++ = '&';
|
*out++ = '&';
|
||||||
*out++ = '#';
|
*out++ = '#';
|
||||||
*out++ = 'x';
|
*out++ = 'x';
|
||||||
@ -1552,5 +1599,4 @@ xmlC11NNormalizeString(const xmlChar *input, xmlC14NNormalizationMode mode) {
|
|||||||
*out++ = 0;
|
*out++ = 0;
|
||||||
return (buffer);
|
return (buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* LIBXML_C14N_ENABLED */
|
#endif /* LIBXML_C14N_ENABLED */
|
||||||
|
11
configure.in
11
configure.in
@ -233,17 +233,6 @@ if test "$with_python" != "no" ; then
|
|||||||
fi
|
fi
|
||||||
AM_CONDITIONAL(WITH_PYTHON, test "$PYTHON_INCLUDES" != "")
|
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
|
||||||
dnl Tester makes use of readline if present
|
dnl Tester makes use of readline if present
|
||||||
dnl
|
dnl
|
||||||
|
12
debugXML.c
12
debugXML.c
@ -695,11 +695,7 @@ xmlDebugDumpOneNode(FILE * output, xmlNodePtr node, int depth)
|
|||||||
shift[2 * i + 2] = shift[2 * i + 3] = 0;
|
shift[2 * i + 2] = shift[2 * i + 3] = 0;
|
||||||
fprintf(output, shift);
|
fprintf(output, shift);
|
||||||
fprintf(output, "content=");
|
fprintf(output, "content=");
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlDebugDumpString(output, node->content);
|
xmlDebugDumpString(output, node->content);
|
||||||
#else
|
|
||||||
xmlDebugDumpString(output, xmlBufferContent(node->content));
|
|
||||||
#endif
|
|
||||||
fprintf(output, "\n");
|
fprintf(output, "\n");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -1105,11 +1101,7 @@ xmlLsCountNode(xmlNodePtr node) {
|
|||||||
case XML_PI_NODE:
|
case XML_PI_NODE:
|
||||||
case XML_COMMENT_NODE:
|
case XML_COMMENT_NODE:
|
||||||
if (node->content != NULL) {
|
if (node->content != NULL) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
ret = xmlStrlen(node->content);
|
ret = xmlStrlen(node->content);
|
||||||
#else
|
|
||||||
ret = xmlBufferLength(node->content);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case XML_ENTITY_REF_NODE:
|
case XML_ENTITY_REF_NODE:
|
||||||
@ -1215,11 +1207,7 @@ xmlLsOneNode(FILE *output, xmlNodePtr node) {
|
|||||||
break;
|
break;
|
||||||
case XML_TEXT_NODE:
|
case XML_TEXT_NODE:
|
||||||
if (node->content != NULL) {
|
if (node->content != NULL) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlDebugDumpString(output, node->content);
|
xmlDebugDumpString(output, node->content);
|
||||||
#else
|
|
||||||
xmlDebugDumpString(output, xmlBufferContent(node->content));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case XML_CDATA_SECTION_NODE:
|
case XML_CDATA_SECTION_NODE:
|
||||||
|
@ -439,11 +439,7 @@ struct _xmlNode {
|
|||||||
|
|
||||||
/* End of common part */
|
/* End of common part */
|
||||||
xmlNs *ns; /* pointer to the associated namespace */
|
xmlNs *ns; /* pointer to the associated namespace */
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlChar *content; /* the content */
|
xmlChar *content; /* the content */
|
||||||
#else
|
|
||||||
xmlBufferPtr content; /* the content in a buffer */
|
|
||||||
#endif
|
|
||||||
struct _xmlAttr *properties;/* properties list */
|
struct _xmlAttr *properties;/* properties list */
|
||||||
xmlNs *nsDef; /* namespace definitions on this node */
|
xmlNs *nsDef; /* namespace definitions on this node */
|
||||||
};
|
};
|
||||||
|
241
tree.c
241
tree.c
@ -888,20 +888,11 @@ xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine) {
|
|||||||
if ((node->type == XML_TEXT_NODE) ||
|
if ((node->type == XML_TEXT_NODE) ||
|
||||||
(node->type == XML_CDATA_SECTION_NODE)) {
|
(node->type == XML_CDATA_SECTION_NODE)) {
|
||||||
if (inLine) {
|
if (inLine) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
ret = xmlStrcat(ret, node->content);
|
ret = xmlStrcat(ret, node->content);
|
||||||
#else
|
|
||||||
ret = xmlStrcat(ret, xmlBufferContent(node->content));
|
|
||||||
#endif
|
|
||||||
} else {
|
} else {
|
||||||
xmlChar *buffer;
|
xmlChar *buffer;
|
||||||
|
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
buffer = xmlEncodeEntitiesReentrant(doc, node->content);
|
buffer = xmlEncodeEntitiesReentrant(doc, node->content);
|
||||||
#else
|
|
||||||
buffer = xmlEncodeEntitiesReentrant(doc,
|
|
||||||
xmlBufferContent(node->content));
|
|
||||||
#endif
|
|
||||||
if (buffer != NULL) {
|
if (buffer != NULL) {
|
||||||
ret = xmlStrcat(ret, buffer);
|
ret = xmlStrcat(ret, buffer);
|
||||||
xmlFree(buffer);
|
xmlFree(buffer);
|
||||||
@ -913,11 +904,7 @@ xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine) {
|
|||||||
if (ent != NULL)
|
if (ent != NULL)
|
||||||
ret = xmlStrcat(ret, ent->content);
|
ret = xmlStrcat(ret, ent->content);
|
||||||
else {
|
else {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
ret = xmlStrcat(ret, node->content);
|
ret = xmlStrcat(ret, node->content);
|
||||||
#else
|
|
||||||
ret = xmlStrcat(ret, xmlBufferContent(node->content));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
xmlChar buf[2];
|
xmlChar buf[2];
|
||||||
@ -964,20 +951,11 @@ xmlNodeListGetRawString(xmlDocPtr doc, xmlNodePtr list, int inLine) {
|
|||||||
if ((node->type == XML_TEXT_NODE) ||
|
if ((node->type == XML_TEXT_NODE) ||
|
||||||
(node->type == XML_CDATA_SECTION_NODE)) {
|
(node->type == XML_CDATA_SECTION_NODE)) {
|
||||||
if (inLine) {
|
if (inLine) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
ret = xmlStrcat(ret, node->content);
|
ret = xmlStrcat(ret, node->content);
|
||||||
#else
|
|
||||||
ret = xmlStrcat(ret, xmlBufferContent(node->content));
|
|
||||||
#endif
|
|
||||||
} else {
|
} else {
|
||||||
xmlChar *buffer;
|
xmlChar *buffer;
|
||||||
|
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
buffer = xmlEncodeSpecialChars(doc, node->content);
|
buffer = xmlEncodeSpecialChars(doc, node->content);
|
||||||
#else
|
|
||||||
buffer = xmlEncodeSpecialChars(doc,
|
|
||||||
xmlBufferContent(node->content));
|
|
||||||
#endif
|
|
||||||
if (buffer != NULL) {
|
if (buffer != NULL) {
|
||||||
ret = xmlStrcat(ret, buffer);
|
ret = xmlStrcat(ret, buffer);
|
||||||
xmlFree(buffer);
|
xmlFree(buffer);
|
||||||
@ -989,11 +967,7 @@ xmlNodeListGetRawString(xmlDocPtr doc, xmlNodePtr list, int inLine) {
|
|||||||
if (ent != NULL)
|
if (ent != NULL)
|
||||||
ret = xmlStrcat(ret, ent->content);
|
ret = xmlStrcat(ret, ent->content);
|
||||||
else {
|
else {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
ret = xmlStrcat(ret, node->content);
|
ret = xmlStrcat(ret, node->content);
|
||||||
#else
|
|
||||||
ret = xmlStrcat(ret, xmlBufferContent(node->content));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
xmlChar buf[2];
|
xmlChar buf[2];
|
||||||
@ -1353,14 +1327,7 @@ xmlNewPI(const xmlChar *name, const xmlChar *content) {
|
|||||||
|
|
||||||
cur->name = xmlStrdup(name);
|
cur->name = xmlStrdup(name);
|
||||||
if (content != NULL) {
|
if (content != NULL) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
cur->content = xmlStrdup(content);
|
cur->content = xmlStrdup(content);
|
||||||
#else
|
|
||||||
cur->content = xmlBufferCreateSize(0);
|
|
||||||
xmlBufferSetAllocationScheme(cur->content,
|
|
||||||
xmlGetBufferAllocationScheme());
|
|
||||||
xmlBufferAdd(cur->content, content, -1);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
return(cur);
|
return(cur);
|
||||||
}
|
}
|
||||||
@ -1516,14 +1483,7 @@ xmlNewText(const xmlChar *content) {
|
|||||||
|
|
||||||
cur->name = xmlStringText;
|
cur->name = xmlStringText;
|
||||||
if (content != NULL) {
|
if (content != NULL) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
cur->content = xmlStrdup(content);
|
cur->content = xmlStrdup(content);
|
||||||
#else
|
|
||||||
cur->content = xmlBufferCreateSize(0);
|
|
||||||
xmlBufferSetAllocationScheme(cur->content,
|
|
||||||
xmlGetBufferAllocationScheme());
|
|
||||||
xmlBufferAdd(cur->content, content, -1);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
return(cur);
|
return(cur);
|
||||||
}
|
}
|
||||||
@ -1667,20 +1627,7 @@ xmlNewReference(xmlDocPtr doc, const xmlChar *name) {
|
|||||||
|
|
||||||
ent = xmlGetDocEntity(doc, cur->name);
|
ent = xmlGetDocEntity(doc, cur->name);
|
||||||
if (ent != NULL) {
|
if (ent != NULL) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
cur->content = ent->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
|
* The parent pointer in entity is a DTD pointer and thus is NOT
|
||||||
* updated. Not sure if this is 100% correct.
|
* updated. Not sure if this is 100% correct.
|
||||||
@ -1735,14 +1682,7 @@ xmlNewTextLen(const xmlChar *content, int len) {
|
|||||||
|
|
||||||
cur->name = xmlStringText;
|
cur->name = xmlStringText;
|
||||||
if (content != NULL) {
|
if (content != NULL) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
cur->content = xmlStrndup(content, len);
|
cur->content = xmlStrndup(content, len);
|
||||||
#else
|
|
||||||
cur->content = xmlBufferCreateSize(len);
|
|
||||||
xmlBufferSetAllocationScheme(cur->content,
|
|
||||||
xmlGetBufferAllocationScheme());
|
|
||||||
xmlBufferAdd(cur->content, content, len);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
return(cur);
|
return(cur);
|
||||||
}
|
}
|
||||||
@ -1791,14 +1731,7 @@ xmlNewComment(const xmlChar *content) {
|
|||||||
|
|
||||||
cur->name = xmlStringComment;
|
cur->name = xmlStringComment;
|
||||||
if (content != NULL) {
|
if (content != NULL) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
cur->content = xmlStrdup(content);
|
cur->content = xmlStrdup(content);
|
||||||
#else
|
|
||||||
cur->content = xmlBufferCreateSize(0);
|
|
||||||
xmlBufferSetAllocationScheme(cur->content,
|
|
||||||
xmlGetBufferAllocationScheme());
|
|
||||||
xmlBufferAdd(cur->content, content, -1);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
return(cur);
|
return(cur);
|
||||||
}
|
}
|
||||||
@ -1830,14 +1763,7 @@ xmlNewCDataBlock(xmlDocPtr doc, const xmlChar *content, int len) {
|
|||||||
cur->doc = doc;
|
cur->doc = doc;
|
||||||
|
|
||||||
if (content != NULL) {
|
if (content != NULL) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
cur->content = xmlStrndup(content, len);
|
cur->content = xmlStrndup(content, len);
|
||||||
#else
|
|
||||||
cur->content = xmlBufferCreateSize(len);
|
|
||||||
xmlBufferSetAllocationScheme(cur->content,
|
|
||||||
xmlGetBufferAllocationScheme());
|
|
||||||
xmlBufferAdd(cur->content, content, len);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
return(cur);
|
return(cur);
|
||||||
}
|
}
|
||||||
@ -2020,28 +1946,18 @@ xmlAddNextSibling(xmlNodePtr cur, xmlNodePtr elem) {
|
|||||||
|
|
||||||
if (elem->type == XML_TEXT_NODE) {
|
if (elem->type == XML_TEXT_NODE) {
|
||||||
if (cur->type == XML_TEXT_NODE) {
|
if (cur->type == XML_TEXT_NODE) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlNodeAddContent(cur, elem->content);
|
xmlNodeAddContent(cur, elem->content);
|
||||||
#else
|
|
||||||
xmlNodeAddContent(cur, xmlBufferContent(elem->content));
|
|
||||||
#endif
|
|
||||||
xmlFreeNode(elem);
|
xmlFreeNode(elem);
|
||||||
return(cur);
|
return(cur);
|
||||||
}
|
}
|
||||||
if ((cur->next != NULL) && (cur->next->type == XML_TEXT_NODE) &&
|
if ((cur->next != NULL) && (cur->next->type == XML_TEXT_NODE) &&
|
||||||
(cur->name == cur->next->name)) {
|
(cur->name == cur->next->name)) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlChar *tmp;
|
xmlChar *tmp;
|
||||||
|
|
||||||
tmp = xmlStrdup(elem->content);
|
tmp = xmlStrdup(elem->content);
|
||||||
tmp = xmlStrcat(tmp, cur->next->content);
|
tmp = xmlStrcat(tmp, cur->next->content);
|
||||||
xmlNodeSetContent(cur->next, tmp);
|
xmlNodeSetContent(cur->next, tmp);
|
||||||
xmlFree(tmp);
|
xmlFree(tmp);
|
||||||
#else
|
|
||||||
xmlBufferAddHead(cur->next->content,
|
|
||||||
xmlBufferContent(elem->content),
|
|
||||||
xmlBufferLength(elem->content));
|
|
||||||
#endif
|
|
||||||
xmlFreeNode(elem);
|
xmlFreeNode(elem);
|
||||||
return(cur->next);
|
return(cur->next);
|
||||||
}
|
}
|
||||||
@ -2108,27 +2024,18 @@ xmlAddPrevSibling(xmlNodePtr cur, xmlNodePtr elem) {
|
|||||||
|
|
||||||
if (elem->type == XML_TEXT_NODE) {
|
if (elem->type == XML_TEXT_NODE) {
|
||||||
if (cur->type == XML_TEXT_NODE) {
|
if (cur->type == XML_TEXT_NODE) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlChar *tmp;
|
xmlChar *tmp;
|
||||||
|
|
||||||
tmp = xmlStrdup(elem->content);
|
tmp = xmlStrdup(elem->content);
|
||||||
tmp = xmlStrcat(tmp, cur->content);
|
tmp = xmlStrcat(tmp, cur->content);
|
||||||
xmlNodeSetContent(cur, tmp);
|
xmlNodeSetContent(cur, tmp);
|
||||||
xmlFree(tmp);
|
xmlFree(tmp);
|
||||||
#else
|
|
||||||
xmlBufferAddHead(cur->content, xmlBufferContent(elem->content),
|
|
||||||
xmlBufferLength(elem->content));
|
|
||||||
#endif
|
|
||||||
xmlFreeNode(elem);
|
xmlFreeNode(elem);
|
||||||
return(cur);
|
return(cur);
|
||||||
}
|
}
|
||||||
if ((cur->prev != NULL) && (cur->prev->type == XML_TEXT_NODE) &&
|
if ((cur->prev != NULL) && (cur->prev->type == XML_TEXT_NODE) &&
|
||||||
(cur->name == cur->prev->name)) {
|
(cur->name == cur->prev->name)) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlNodeAddContent(cur->prev, elem->content);
|
xmlNodeAddContent(cur->prev, elem->content);
|
||||||
#else
|
|
||||||
xmlNodeAddContent(cur->prev, xmlBufferContent(elem->content));
|
|
||||||
#endif
|
|
||||||
xmlFreeNode(elem);
|
xmlFreeNode(elem);
|
||||||
return(cur->prev);
|
return(cur->prev);
|
||||||
}
|
}
|
||||||
@ -2217,11 +2124,7 @@ xmlAddSibling(xmlNodePtr cur, xmlNodePtr elem) {
|
|||||||
xmlUnlinkNode(elem);
|
xmlUnlinkNode(elem);
|
||||||
|
|
||||||
if ((cur->type == XML_TEXT_NODE) && (elem->type == XML_TEXT_NODE)) {
|
if ((cur->type == XML_TEXT_NODE) && (elem->type == XML_TEXT_NODE)) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlNodeAddContent(cur, elem->content);
|
xmlNodeAddContent(cur, elem->content);
|
||||||
#else
|
|
||||||
xmlNodeAddContent(cur, xmlBufferContent(elem->content));
|
|
||||||
#endif
|
|
||||||
xmlFreeNode(elem);
|
xmlFreeNode(elem);
|
||||||
return(cur);
|
return(cur);
|
||||||
}
|
}
|
||||||
@ -2290,11 +2193,7 @@ xmlAddChildList(xmlNodePtr parent, xmlNodePtr cur) {
|
|||||||
if ((cur->type == XML_TEXT_NODE) &&
|
if ((cur->type == XML_TEXT_NODE) &&
|
||||||
(parent->last->type == XML_TEXT_NODE) &&
|
(parent->last->type == XML_TEXT_NODE) &&
|
||||||
(cur->name == parent->last->name)) {
|
(cur->name == parent->last->name)) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlNodeAddContent(parent->last, cur->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.
|
* if it's the only child, nothing more to be done.
|
||||||
*/
|
*/
|
||||||
@ -2365,21 +2264,13 @@ xmlAddChild(xmlNodePtr parent, xmlNodePtr cur) {
|
|||||||
if (cur->type == XML_TEXT_NODE) {
|
if (cur->type == XML_TEXT_NODE) {
|
||||||
if ((parent->type == XML_TEXT_NODE) &&
|
if ((parent->type == XML_TEXT_NODE) &&
|
||||||
(parent->content != NULL)) {
|
(parent->content != NULL)) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlNodeAddContent(parent, cur->content);
|
xmlNodeAddContent(parent, cur->content);
|
||||||
#else
|
|
||||||
xmlNodeAddContent(parent, xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
xmlFreeNode(cur);
|
xmlFreeNode(cur);
|
||||||
return(parent);
|
return(parent);
|
||||||
}
|
}
|
||||||
if ((parent->last != NULL) && (parent->last->type == XML_TEXT_NODE) &&
|
if ((parent->last != NULL) && (parent->last->type == XML_TEXT_NODE) &&
|
||||||
(parent->last->name == cur->name)) {
|
(parent->last->name == cur->name)) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlNodeAddContent(parent->last, cur->content);
|
xmlNodeAddContent(parent->last, cur->content);
|
||||||
#else
|
|
||||||
xmlNodeAddContent(parent->last, xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
xmlFreeNode(cur);
|
xmlFreeNode(cur);
|
||||||
return(parent->last);
|
return(parent->last);
|
||||||
}
|
}
|
||||||
@ -2398,11 +2289,7 @@ xmlAddChild(xmlNodePtr parent, xmlNodePtr cur) {
|
|||||||
*/
|
*/
|
||||||
if ((parent->type == XML_TEXT_NODE) &&
|
if ((parent->type == XML_TEXT_NODE) &&
|
||||||
(parent->content != NULL)) {
|
(parent->content != NULL)) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlNodeAddContent(parent, cur->content);
|
xmlNodeAddContent(parent, cur->content);
|
||||||
#else
|
|
||||||
xmlNodeAddContent(parent, xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
xmlFreeNode(cur);
|
xmlFreeNode(cur);
|
||||||
return(parent);
|
return(parent);
|
||||||
}
|
}
|
||||||
@ -2496,11 +2383,7 @@ xmlFreeNodeList(xmlNodePtr cur) {
|
|||||||
(cur->type != XML_XINCLUDE_START) &&
|
(cur->type != XML_XINCLUDE_START) &&
|
||||||
(cur->type != XML_XINCLUDE_END) &&
|
(cur->type != XML_XINCLUDE_END) &&
|
||||||
(cur->type != XML_ENTITY_REF_NODE)) {
|
(cur->type != XML_ENTITY_REF_NODE)) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
if (cur->content != NULL) xmlFree(cur->content);
|
if (cur->content != NULL) xmlFree(cur->content);
|
||||||
#else
|
|
||||||
if (cur->content != NULL) xmlBufferFree(cur->content);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
if (((cur->type == XML_ELEMENT_NODE) ||
|
if (((cur->type == XML_ELEMENT_NODE) ||
|
||||||
(cur->type == XML_XINCLUDE_START) ||
|
(cur->type == XML_XINCLUDE_START) ||
|
||||||
@ -2574,11 +2457,7 @@ xmlFreeNode(xmlNodePtr cur) {
|
|||||||
(cur->type != XML_ENTITY_REF_NODE) &&
|
(cur->type != XML_ENTITY_REF_NODE) &&
|
||||||
(cur->type != XML_XINCLUDE_END) &&
|
(cur->type != XML_XINCLUDE_END) &&
|
||||||
(cur->type != XML_XINCLUDE_START)) {
|
(cur->type != XML_XINCLUDE_START)) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlFree(cur->content);
|
xmlFree(cur->content);
|
||||||
#else
|
|
||||||
xmlBufferFree(cur->content);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3014,16 +2893,7 @@ xmlStaticCopyNode(const xmlNodePtr node, xmlDocPtr doc, xmlNodePtr parent,
|
|||||||
(node->type != XML_ENTITY_REF_NODE) &&
|
(node->type != XML_ENTITY_REF_NODE) &&
|
||||||
(node->type != XML_XINCLUDE_END) &&
|
(node->type != XML_XINCLUDE_END) &&
|
||||||
(node->type != XML_XINCLUDE_START)) {
|
(node->type != XML_XINCLUDE_START)) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
ret->content = xmlStrdup(node->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{
|
}else{
|
||||||
if (node->type == XML_ELEMENT_NODE)
|
if (node->type == XML_ELEMENT_NODE)
|
||||||
ret->content = (void*)(long) node->content;
|
ret->content = (void*)(long) node->content;
|
||||||
@ -3885,12 +3755,7 @@ xmlNodeGetContent(xmlNodePtr cur) {
|
|||||||
case XML_CDATA_SECTION_NODE:
|
case XML_CDATA_SECTION_NODE:
|
||||||
case XML_TEXT_NODE:
|
case XML_TEXT_NODE:
|
||||||
if (tmp->content != NULL)
|
if (tmp->content != NULL)
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlBufferCat(buffer, tmp->content);
|
xmlBufferCat(buffer, tmp->content);
|
||||||
#else
|
|
||||||
xmlBufferCat(buffer,
|
|
||||||
xmlBufferContent(tmp->content));
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
case XML_ENTITY_REF_NODE: {
|
case XML_ENTITY_REF_NODE: {
|
||||||
xmlEntityPtr ent;
|
xmlEntityPtr ent;
|
||||||
@ -3949,11 +3814,7 @@ xmlNodeGetContent(xmlNodePtr cur) {
|
|||||||
case XML_COMMENT_NODE:
|
case XML_COMMENT_NODE:
|
||||||
case XML_PI_NODE:
|
case XML_PI_NODE:
|
||||||
if (cur->content != NULL)
|
if (cur->content != NULL)
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
return(xmlStrdup(cur->content));
|
return(xmlStrdup(cur->content));
|
||||||
#else
|
|
||||||
return(xmlStrdup(xmlBufferContent(cur->content)));
|
|
||||||
#endif
|
|
||||||
return(NULL);
|
return(NULL);
|
||||||
case XML_ENTITY_REF_NODE:
|
case XML_ENTITY_REF_NODE:
|
||||||
/*
|
/*
|
||||||
@ -3987,11 +3848,7 @@ xmlNodeGetContent(xmlNodePtr cur) {
|
|||||||
case XML_CDATA_SECTION_NODE:
|
case XML_CDATA_SECTION_NODE:
|
||||||
case XML_TEXT_NODE:
|
case XML_TEXT_NODE:
|
||||||
if (cur->content != NULL)
|
if (cur->content != NULL)
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
return(xmlStrdup(cur->content));
|
return(xmlStrdup(cur->content));
|
||||||
#else
|
|
||||||
return(xmlStrdup(xmlBufferContent(cur->content)));
|
|
||||||
#endif
|
|
||||||
return(NULL);
|
return(NULL);
|
||||||
}
|
}
|
||||||
return(NULL);
|
return(NULL);
|
||||||
@ -4028,23 +3885,12 @@ xmlNodeSetContent(xmlNodePtr cur, const xmlChar *content) {
|
|||||||
case XML_PI_NODE:
|
case XML_PI_NODE:
|
||||||
case XML_COMMENT_NODE:
|
case XML_COMMENT_NODE:
|
||||||
if (cur->content != NULL) {
|
if (cur->content != NULL) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlFree(cur->content);
|
xmlFree(cur->content);
|
||||||
#else
|
|
||||||
xmlBufferFree(cur->content);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
if (cur->children != NULL) xmlFreeNodeList(cur->children);
|
if (cur->children != NULL) xmlFreeNodeList(cur->children);
|
||||||
cur->last = cur->children = NULL;
|
cur->last = cur->children = NULL;
|
||||||
if (content != NULL) {
|
if (content != NULL) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
cur->content = xmlStrdup(content);
|
cur->content = xmlStrdup(content);
|
||||||
#else
|
|
||||||
cur->content = xmlBufferCreateSize(0);
|
|
||||||
xmlBufferSetAllocationScheme(cur->content,
|
|
||||||
xmlGetBufferAllocationScheme());
|
|
||||||
xmlBufferAdd(cur->content, content, -1);
|
|
||||||
#endif
|
|
||||||
} else
|
} else
|
||||||
cur->content = NULL;
|
cur->content = NULL;
|
||||||
break;
|
break;
|
||||||
@ -4108,23 +3954,12 @@ xmlNodeSetContentLen(xmlNodePtr cur, const xmlChar *content, int len) {
|
|||||||
case XML_COMMENT_NODE:
|
case XML_COMMENT_NODE:
|
||||||
case XML_NOTATION_NODE:
|
case XML_NOTATION_NODE:
|
||||||
if (cur->content != NULL) {
|
if (cur->content != NULL) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlFree(cur->content);
|
xmlFree(cur->content);
|
||||||
#else
|
|
||||||
xmlBufferFree(cur->content);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
if (cur->children != NULL) xmlFreeNodeList(cur->children);
|
if (cur->children != NULL) xmlFreeNodeList(cur->children);
|
||||||
cur->children = cur->last = NULL;
|
cur->children = cur->last = NULL;
|
||||||
if (content != NULL) {
|
if (content != NULL) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
cur->content = xmlStrndup(content, len);
|
cur->content = xmlStrndup(content, len);
|
||||||
#else
|
|
||||||
cur->content = xmlBufferCreateSize(len);
|
|
||||||
xmlBufferSetAllocationScheme(cur->content,
|
|
||||||
xmlGetBufferAllocationScheme());
|
|
||||||
xmlBufferAdd(cur->content, content, len);
|
|
||||||
#endif
|
|
||||||
} else
|
} else
|
||||||
cur->content = NULL;
|
cur->content = NULL;
|
||||||
break;
|
break;
|
||||||
@ -4196,11 +4031,7 @@ xmlNodeAddContentLen(xmlNodePtr cur, const xmlChar *content, int len) {
|
|||||||
case XML_COMMENT_NODE:
|
case XML_COMMENT_NODE:
|
||||||
case XML_NOTATION_NODE:
|
case XML_NOTATION_NODE:
|
||||||
if (content != NULL) {
|
if (content != NULL) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
cur->content = xmlStrncat(cur->content, content, len);
|
cur->content = xmlStrncat(cur->content, content, len);
|
||||||
#else
|
|
||||||
xmlBufferAdd(cur->content, content, len);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
case XML_DOCUMENT_NODE:
|
case XML_DOCUMENT_NODE:
|
||||||
case XML_DTD_NODE:
|
case XML_DTD_NODE:
|
||||||
@ -4259,11 +4090,7 @@ xmlTextMerge(xmlNodePtr first, xmlNodePtr second) {
|
|||||||
if (second->type != XML_TEXT_NODE) return(first);
|
if (second->type != XML_TEXT_NODE) return(first);
|
||||||
if (second->name != first->name)
|
if (second->name != first->name)
|
||||||
return(first);
|
return(first);
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlNodeAddContent(first, second->content);
|
xmlNodeAddContent(first, second->content);
|
||||||
#else
|
|
||||||
xmlNodeAddContent(first, xmlBufferContent(second->content));
|
|
||||||
#endif
|
|
||||||
xmlUnlinkNode(second);
|
xmlUnlinkNode(second);
|
||||||
xmlFreeNode(second);
|
xmlFreeNode(second);
|
||||||
return(first);
|
return(first);
|
||||||
@ -5216,11 +5043,7 @@ xmlIsBlankNode(xmlNodePtr node) {
|
|||||||
(node->type != XML_CDATA_SECTION_NODE))
|
(node->type != XML_CDATA_SECTION_NODE))
|
||||||
return(0);
|
return(0);
|
||||||
if (node->content == NULL) return(1);
|
if (node->content == NULL) return(1);
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
cur = node->content;
|
cur = node->content;
|
||||||
#else
|
|
||||||
cur = xmlBufferContent(node->content);
|
|
||||||
#endif
|
|
||||||
while (*cur != 0) {
|
while (*cur != 0) {
|
||||||
if (!IS_BLANK(*cur)) return(0);
|
if (!IS_BLANK(*cur)) return(0);
|
||||||
cur++;
|
cur++;
|
||||||
@ -5250,11 +5073,7 @@ xmlTextConcat(xmlNodePtr node, const xmlChar *content, int len) {
|
|||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
node->content = xmlStrncat(node->content, content, len);
|
node->content = xmlStrncat(node->content, content, len);
|
||||||
#else
|
|
||||||
xmlBufferAdd(node->content, content, len);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
@ -6145,12 +5964,7 @@ xmlNodeDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level,
|
|||||||
(cur->name != xmlStringTextNoenc)) {
|
(cur->name != xmlStringTextNoenc)) {
|
||||||
xmlChar *buffer;
|
xmlChar *buffer;
|
||||||
|
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
|
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
|
||||||
#else
|
|
||||||
buffer = xmlEncodeEntitiesReentrant(doc,
|
|
||||||
xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
if (buffer != NULL) {
|
if (buffer != NULL) {
|
||||||
xmlBufferWriteCHAR(buf, buffer);
|
xmlBufferWriteCHAR(buf, buffer);
|
||||||
xmlFree(buffer);
|
xmlFree(buffer);
|
||||||
@ -6159,11 +5973,7 @@ xmlNodeDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level,
|
|||||||
/*
|
/*
|
||||||
* Disable escaping, needed for XSLT
|
* Disable escaping, needed for XSLT
|
||||||
*/
|
*/
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlBufferWriteCHAR(buf, cur->content);
|
xmlBufferWriteCHAR(buf, cur->content);
|
||||||
#else
|
|
||||||
xmlBufferWriteCHAR(buf, xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@ -6173,11 +5983,7 @@ xmlNodeDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level,
|
|||||||
xmlBufferWriteCHAR(buf, cur->name);
|
xmlBufferWriteCHAR(buf, cur->name);
|
||||||
if (cur->content != NULL) {
|
if (cur->content != NULL) {
|
||||||
xmlBufferWriteChar(buf, " ");
|
xmlBufferWriteChar(buf, " ");
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlBufferWriteCHAR(buf, cur->content);
|
xmlBufferWriteCHAR(buf, cur->content);
|
||||||
#else
|
|
||||||
xmlBufferWriteCHAR(buf, xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
xmlBufferWriteChar(buf, "?>");
|
xmlBufferWriteChar(buf, "?>");
|
||||||
return;
|
return;
|
||||||
@ -6185,11 +5991,7 @@ xmlNodeDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level,
|
|||||||
if (cur->type == XML_COMMENT_NODE) {
|
if (cur->type == XML_COMMENT_NODE) {
|
||||||
if (cur->content != NULL) {
|
if (cur->content != NULL) {
|
||||||
xmlBufferWriteChar(buf, "<!--");
|
xmlBufferWriteChar(buf, "<!--");
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlBufferWriteCHAR(buf, cur->content);
|
xmlBufferWriteCHAR(buf, cur->content);
|
||||||
#else
|
|
||||||
xmlBufferWriteCHAR(buf, xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
xmlBufferWriteChar(buf, "-->");
|
xmlBufferWriteChar(buf, "-->");
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@ -6203,11 +6005,7 @@ xmlNodeDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level,
|
|||||||
if (cur->type == XML_CDATA_SECTION_NODE) {
|
if (cur->type == XML_CDATA_SECTION_NODE) {
|
||||||
xmlBufferWriteChar(buf, "<![CDATA[");
|
xmlBufferWriteChar(buf, "<![CDATA[");
|
||||||
if (cur->content != NULL)
|
if (cur->content != NULL)
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlBufferWriteCHAR(buf, cur->content);
|
xmlBufferWriteCHAR(buf, cur->content);
|
||||||
#else
|
|
||||||
xmlBufferWriteCHAR(buf, xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
xmlBufferWriteChar(buf, "]]>");
|
xmlBufferWriteChar(buf, "]]>");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -6245,12 +6043,7 @@ xmlNodeDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, int level,
|
|||||||
if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) {
|
if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) {
|
||||||
xmlChar *buffer;
|
xmlChar *buffer;
|
||||||
|
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
|
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
|
||||||
#else
|
|
||||||
buffer = xmlEncodeEntitiesReentrant(doc,
|
|
||||||
xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
if (buffer != NULL) {
|
if (buffer != NULL) {
|
||||||
xmlBufferWriteCHAR(buf, buffer);
|
xmlBufferWriteCHAR(buf, buffer);
|
||||||
xmlFree(buffer);
|
xmlFree(buffer);
|
||||||
@ -6551,19 +6344,10 @@ xmlNodeDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
|
|||||||
(cur->name != xmlStringTextNoenc)) {
|
(cur->name != xmlStringTextNoenc)) {
|
||||||
xmlChar *buffer;
|
xmlChar *buffer;
|
||||||
|
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
if (encoding == NULL)
|
if (encoding == NULL)
|
||||||
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
|
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
|
||||||
else
|
else
|
||||||
buffer = xmlEncodeSpecialChars(doc, cur->content);
|
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) {
|
if (buffer != NULL) {
|
||||||
xmlOutputBufferWriteString(buf, (const char *)buffer);
|
xmlOutputBufferWriteString(buf, (const char *)buffer);
|
||||||
xmlFree(buffer);
|
xmlFree(buffer);
|
||||||
@ -6572,11 +6356,7 @@ xmlNodeDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
|
|||||||
/*
|
/*
|
||||||
* Disable escaping, needed for XSLT
|
* Disable escaping, needed for XSLT
|
||||||
*/
|
*/
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlOutputBufferWriteString(buf, (const char *) cur->content);
|
xmlOutputBufferWriteString(buf, (const char *) cur->content);
|
||||||
#else
|
|
||||||
xmlOutputBufferWriteString(buf, xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6588,11 +6368,7 @@ xmlNodeDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
|
|||||||
xmlOutputBufferWriteString(buf, (const char *)cur->name);
|
xmlOutputBufferWriteString(buf, (const char *)cur->name);
|
||||||
if (cur->content != NULL) {
|
if (cur->content != NULL) {
|
||||||
xmlOutputBufferWriteString(buf, " ");
|
xmlOutputBufferWriteString(buf, " ");
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlOutputBufferWriteString(buf, (const char *)cur->content);
|
xmlOutputBufferWriteString(buf, (const char *)cur->content);
|
||||||
#else
|
|
||||||
xmlOutputBufferWriteString(buf, (const char *)xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
xmlOutputBufferWriteString(buf, "?>");
|
xmlOutputBufferWriteString(buf, "?>");
|
||||||
} else {
|
} else {
|
||||||
@ -6605,11 +6381,7 @@ xmlNodeDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
|
|||||||
if (cur->type == XML_COMMENT_NODE) {
|
if (cur->type == XML_COMMENT_NODE) {
|
||||||
if (cur->content != NULL) {
|
if (cur->content != NULL) {
|
||||||
xmlOutputBufferWriteString(buf, "<!--");
|
xmlOutputBufferWriteString(buf, "<!--");
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlOutputBufferWriteString(buf, (const char *)cur->content);
|
xmlOutputBufferWriteString(buf, (const char *)cur->content);
|
||||||
#else
|
|
||||||
xmlOutputBufferWriteString(buf, (const char *)xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
xmlOutputBufferWriteString(buf, "-->");
|
xmlOutputBufferWriteString(buf, "-->");
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@ -6623,11 +6395,7 @@ xmlNodeDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
|
|||||||
if (cur->type == XML_CDATA_SECTION_NODE) {
|
if (cur->type == XML_CDATA_SECTION_NODE) {
|
||||||
xmlOutputBufferWriteString(buf, "<![CDATA[");
|
xmlOutputBufferWriteString(buf, "<![CDATA[");
|
||||||
if (cur->content != NULL)
|
if (cur->content != NULL)
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
xmlOutputBufferWriteString(buf, (const char *)cur->content);
|
xmlOutputBufferWriteString(buf, (const char *)cur->content);
|
||||||
#else
|
|
||||||
xmlOutputBufferWriteString(buf, (const char *)xmlBufferContent(cur->content));
|
|
||||||
#endif
|
|
||||||
xmlOutputBufferWriteString(buf, "]]>");
|
xmlOutputBufferWriteString(buf, "]]>");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -6664,19 +6432,10 @@ xmlNodeDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur,
|
|||||||
if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) {
|
if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) {
|
||||||
xmlChar *buffer;
|
xmlChar *buffer;
|
||||||
|
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
if (encoding == NULL)
|
if (encoding == NULL)
|
||||||
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
|
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
|
||||||
else
|
else
|
||||||
buffer = xmlEncodeSpecialChars(doc, cur->content);
|
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) {
|
if (buffer != NULL) {
|
||||||
xmlOutputBufferWriteString(buf, (const char *)buffer);
|
xmlOutputBufferWriteString(buf, (const char *)buffer);
|
||||||
xmlFree(buffer);
|
xmlFree(buffer);
|
||||||
|
45
xpointer.c
45
xpointer.c
@ -1628,11 +1628,7 @@ xmlXPtrNbLocChildren(xmlNodePtr node) {
|
|||||||
case XML_TEXT_NODE:
|
case XML_TEXT_NODE:
|
||||||
case XML_CDATA_SECTION_NODE:
|
case XML_CDATA_SECTION_NODE:
|
||||||
case XML_ENTITY_REF_NODE:
|
case XML_ENTITY_REF_NODE:
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
ret = xmlStrlen(node->content);
|
ret = xmlStrlen(node->content);
|
||||||
#else
|
|
||||||
ret = xmlBufferLength(node->content);
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return(-1);
|
return(-1);
|
||||||
@ -2007,13 +2003,8 @@ xmlXPtrInsideRange(xmlXPathParserContextPtr ctxt, xmlXPathObjectPtr loc) {
|
|||||||
if (node->content == NULL) {
|
if (node->content == NULL) {
|
||||||
return(xmlXPtrNewRange(node, 0, node, 0));
|
return(xmlXPtrNewRange(node, 0, node, 0));
|
||||||
} else {
|
} else {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
return(xmlXPtrNewRange(node, 0, node,
|
return(xmlXPtrNewRange(node, 0, node,
|
||||||
xmlStrlen(node->content)));
|
xmlStrlen(node->content)));
|
||||||
#else
|
|
||||||
return(xmlXPtrNewRange(node, 0, node,
|
|
||||||
xmlBufferLength(node->content)));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case XML_ATTRIBUTE_NODE:
|
case XML_ATTRIBUTE_NODE:
|
||||||
@ -2044,13 +2035,8 @@ xmlXPtrInsideRange(xmlXPathParserContextPtr ctxt, xmlXPathObjectPtr loc) {
|
|||||||
if (node->content == NULL) {
|
if (node->content == NULL) {
|
||||||
return(xmlXPtrNewRange(node, 0, node, 0));
|
return(xmlXPtrNewRange(node, 0, node, 0));
|
||||||
} else {
|
} else {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
return(xmlXPtrNewRange(node, 0, node,
|
return(xmlXPtrNewRange(node, 0, node,
|
||||||
xmlStrlen(node->content)));
|
xmlStrlen(node->content)));
|
||||||
#else
|
|
||||||
return(xmlXPtrNewRange(node, 0, node,
|
|
||||||
xmlBufferLength(node->content)));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case XML_ATTRIBUTE_NODE:
|
case XML_ATTRIBUTE_NODE:
|
||||||
@ -2319,11 +2305,7 @@ xmlXPtrAdvanceChar(xmlNodePtr *node, int *indx, int bytes) {
|
|||||||
len = 0;
|
len = 0;
|
||||||
if ((cur->type != XML_ELEMENT_NODE) &&
|
if ((cur->type != XML_ELEMENT_NODE) &&
|
||||||
(cur->content != NULL)) {
|
(cur->content != NULL)) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
len = xmlStrlen(cur->content);
|
len = xmlStrlen(cur->content);
|
||||||
#else
|
|
||||||
len = xmlBufferLength(cur->content);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
if (pos > len) {
|
if (pos > len) {
|
||||||
/* Strange, the indx in the text node is greater than it's len */
|
/* Strange, the indx in the text node is greater than it's len */
|
||||||
@ -2386,18 +2368,9 @@ xmlXPtrMatchString(const xmlChar *string, xmlNodePtr start, int startindex,
|
|||||||
return(0);
|
return(0);
|
||||||
|
|
||||||
if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) {
|
if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
len = xmlStrlen(cur->content);
|
len = xmlStrlen(cur->content);
|
||||||
#else
|
|
||||||
len = xmlBufferLength(cur->content);
|
|
||||||
#endif
|
|
||||||
if (len >= pos + stringlen) {
|
if (len >= pos + stringlen) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
match = (!xmlStrncmp(&cur->content[pos], string, stringlen));
|
match = (!xmlStrncmp(&cur->content[pos], string, stringlen));
|
||||||
#else
|
|
||||||
len = (!xmlStrncmp(&xmlBufferContent(cur->content)[pos],
|
|
||||||
string, stringlen));
|
|
||||||
#endif
|
|
||||||
if (match) {
|
if (match) {
|
||||||
#ifdef DEBUG_RANGES
|
#ifdef DEBUG_RANGES
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
@ -2414,12 +2387,7 @@ xmlXPtrMatchString(const xmlChar *string, xmlNodePtr start, int startindex,
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int sub = len - pos;
|
int sub = len - pos;
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
match = (!xmlStrncmp(&cur->content[pos], string, sub));
|
match = (!xmlStrncmp(&cur->content[pos], string, sub));
|
||||||
#else
|
|
||||||
len = (!xmlStrncmp(&xmlBufferContent(cur->content)[pos],
|
|
||||||
string, sub));
|
|
||||||
#endif
|
|
||||||
if (match) {
|
if (match) {
|
||||||
#ifdef DEBUG_RANGES
|
#ifdef DEBUG_RANGES
|
||||||
xmlGenericError(xmlGenericErrorContext,
|
xmlGenericError(xmlGenericErrorContext,
|
||||||
@ -2482,19 +2450,10 @@ xmlXPtrSearchString(const xmlChar *string, xmlNodePtr *start, int *startindex,
|
|||||||
|
|
||||||
while (cur != NULL) {
|
while (cur != NULL) {
|
||||||
if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) {
|
if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
len = xmlStrlen(cur->content);
|
len = xmlStrlen(cur->content);
|
||||||
#else
|
|
||||||
len = xmlBufferLength(cur->content);
|
|
||||||
#endif
|
|
||||||
while (pos <= len) {
|
while (pos <= len) {
|
||||||
if (first != 0) {
|
if (first != 0) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
str = xmlStrchr(&cur->content[pos], first);
|
str = xmlStrchr(&cur->content[pos], first);
|
||||||
#else
|
|
||||||
str = xmlStrchr(&xmlBufferContent(cur->content)[pos],
|
|
||||||
first);
|
|
||||||
#endif
|
|
||||||
if (str != NULL) {
|
if (str != NULL) {
|
||||||
pos = (str - (xmlChar *)(cur->content));
|
pos = (str - (xmlChar *)(cur->content));
|
||||||
#ifdef DEBUG_RANGES
|
#ifdef DEBUG_RANGES
|
||||||
@ -2580,11 +2539,7 @@ xmlXPtrGetLastChar(xmlNodePtr *node, int *indx) {
|
|||||||
cur = cur->last;
|
cur = cur->last;
|
||||||
else if ((cur->type != XML_ELEMENT_NODE) &&
|
else if ((cur->type != XML_ELEMENT_NODE) &&
|
||||||
(cur->content != NULL)) {
|
(cur->content != NULL)) {
|
||||||
#ifndef XML_USE_BUFFER_CONTENT
|
|
||||||
len = xmlStrlen(cur->content);
|
len = xmlStrlen(cur->content);
|
||||||
#else
|
|
||||||
len = xmlBufferLength(cur->content);
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
return(-1);
|
return(-1);
|
||||||
|
Reference in New Issue
Block a user