summaryrefslogtreecommitdiff
path: root/testC14N.c
diff options
context:
space:
mode:
authorAron Xu <aron@debian.org>2012-09-18 01:15:22 +0800
committerAron Xu <aron@debian.org>2012-09-18 01:15:22 +0800
commitf660f9d2924c7549bc87e7f9b4ece7c9727b3682 (patch)
tree816b3ef0e89d1601803b5dc1b90b50ade0567043 /testC14N.c
parentd7372d053bbd1d58216fbb04d1771ffa4cc3e624 (diff)
downloadlibxml2-f660f9d2924c7549bc87e7f9b4ece7c9727b3682.tar.gz
Imported Upstream version 2.9.0upstream/2.9.0
Diffstat (limited to 'testC14N.c')
-rw-r--r--testC14N.c96
1 files changed, 49 insertions, 47 deletions
diff --git a/testC14N.c b/testC14N.c
index f735a29..86e58f2 100644
--- a/testC14N.c
+++ b/testC14N.c
@@ -3,7 +3,7 @@
* (http://www.w3.org/TR/2001/REC-xml-c14n-20010315)
*
* See Copyright for the status of this software.
- *
+ *
* Author: Aleksey Sanin <aleksey@aleksey.com>
*/
#include "libxml.h"
@@ -11,11 +11,13 @@
#include <stdio.h>
#include <string.h>
+#ifndef STDOUT_FILENO
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#else
#define STDOUT_FILENO fileno(stdout)
#endif /* HAVE_UNISTD_H */
+#endif
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
@@ -54,11 +56,11 @@ static xmlChar **parse_list(xmlChar *str);
/* static void print_xpath_nodes(xmlNodeSetPtr nodes); */
-static int
+static int
test_c14n(const char* xml_filename, int with_comments, int mode,
const char* xpath_filename, xmlChar **inclusive_namespaces) {
xmlDocPtr doc;
- xmlXPathObjectPtr xpath = NULL;
+ xmlXPathObjectPtr xpath = NULL;
xmlChar *result = NULL;
int ret;
@@ -74,34 +76,34 @@ test_c14n(const char* xml_filename, int with_comments, int mode,
fprintf(stderr, "Error: unable to parse file \"%s\"\n", xml_filename);
return(-1);
}
-
+
/*
* Check the document is of the right kind
- */
+ */
if(xmlDocGetRootElement(doc) == NULL) {
fprintf(stderr,"Error: empty document for file \"%s\"\n", xml_filename);
xmlFreeDoc(doc);
return(-1);
}
- /*
- * load xpath file if specified
+ /*
+ * load xpath file if specified
*/
if(xpath_filename) {
xpath = load_xpath_expr(doc, xpath_filename);
if(xpath == NULL) {
fprintf(stderr,"Error: unable to evaluate xpath expression\n");
- xmlFreeDoc(doc);
+ xmlFreeDoc(doc);
return(-1);
}
}
/*
* Canonical form
- */
+ */
/* fprintf(stderr,"File \"%s\" loaded: start canonization\n", xml_filename); */
- ret = xmlC14NDocDumpMemory(doc,
- (xpath) ? xpath->nodesetval : NULL,
+ ret = xmlC14NDocDumpMemory(doc,
+ (xpath) ? xpath->nodesetval : NULL,
mode, inclusive_namespaces,
with_comments, &result);
if(ret >= 0) {
@@ -114,25 +116,25 @@ test_c14n(const char* xml_filename, int with_comments, int mode,
} else {
fprintf(stderr,"Error: failed to canonicalize XML file \"%s\" (ret=%d)\n", xml_filename, ret);
if(result != NULL) xmlFree(result);
- xmlFreeDoc(doc);
+ xmlFreeDoc(doc);
return(-1);
}
-
+
/*
* Cleanup
- */
+ */
if(xpath != NULL) xmlXPathFreeObject(xpath);
- xmlFreeDoc(doc);
+ xmlFreeDoc(doc);
return(ret);
}
int main(int argc, char **argv) {
int ret = -1;
-
+
/*
* Init libxml
- */
+ */
xmlInitParser();
LIBXML_TEST_VERSION
@@ -152,14 +154,14 @@ int main(int argc, char **argv) {
ret = test_c14n(argv[2], 0, XML_C14N_1_1, (argc > 3) ? argv[3] : NULL, NULL);
} else if(strcmp(argv[1], "--exc-with-comments") == 0) {
xmlChar **list;
-
+
/* load exclusive namespace from command line */
list = (argc > 4) ? parse_list((xmlChar *)argv[4]) : NULL;
ret = test_c14n(argv[2], 1, XML_C14N_EXCLUSIVE_1_0, (argc > 3) ? argv[3] : NULL, list);
if(list != NULL) xmlFree(list);
} else if(strcmp(argv[1], "--exc-without-comments") == 0) {
xmlChar **list;
-
+
/* load exclusive namespace from command line */
list = (argc > 4) ? parse_list((xmlChar *)argv[4]) : NULL;
ret = test_c14n(argv[2], 0, XML_C14N_EXCLUSIVE_1_0, (argc > 3) ? argv[3] : NULL, list);
@@ -169,7 +171,7 @@ int main(int argc, char **argv) {
usage(argv[0]);
}
- /*
+ /*
* Shutdown libxml
*/
xmlCleanupParser();
@@ -235,13 +237,13 @@ parse_list(xmlChar *str) {
static xmlXPathObjectPtr
load_xpath_expr (xmlDocPtr parent_doc, const char* filename) {
- xmlXPathObjectPtr xpath;
+ xmlXPathObjectPtr xpath;
xmlDocPtr doc;
xmlChar *expr;
- xmlXPathContextPtr ctx;
+ xmlXPathContextPtr ctx;
xmlNodePtr node;
xmlNsPtr ns;
-
+
/*
* load XPath expr as a file
*/
@@ -253,10 +255,10 @@ load_xpath_expr (xmlDocPtr parent_doc, const char* filename) {
fprintf(stderr, "Error: unable to parse file \"%s\"\n", filename);
return(NULL);
}
-
+
/*
* Check the document is of the right kind
- */
+ */
if(xmlDocGetRootElement(doc) == NULL) {
fprintf(stderr,"Error: empty document for file \"%s\"\n", filename);
xmlFreeDoc(doc);
@@ -267,8 +269,8 @@ load_xpath_expr (xmlDocPtr parent_doc, const char* filename) {
while(node != NULL && !xmlStrEqual(node->name, (const xmlChar *)"XPath")) {
node = node->next;
}
-
- if(node == NULL) {
+
+ if(node == NULL) {
fprintf(stderr,"Error: XPath element expected in the file \"%s\"\n", filename);
xmlFreeDoc(doc);
return(NULL);
@@ -284,8 +286,8 @@ load_xpath_expr (xmlDocPtr parent_doc, const char* filename) {
ctx = xmlXPathNewContext(parent_doc);
if(ctx == NULL) {
fprintf(stderr,"Error: unable to create new context\n");
- xmlFree(expr);
- xmlFreeDoc(doc);
+ xmlFree(expr);
+ xmlFreeDoc(doc);
return(NULL);
}
@@ -296,31 +298,31 @@ load_xpath_expr (xmlDocPtr parent_doc, const char* filename) {
while(ns != NULL) {
if(xmlXPathRegisterNs(ctx, ns->prefix, ns->href) != 0) {
fprintf(stderr,"Error: unable to register NS with prefix=\"%s\" and href=\"%s\"\n", ns->prefix, ns->href);
- xmlFree(expr);
- xmlXPathFreeContext(ctx);
- xmlFreeDoc(doc);
+ xmlFree(expr);
+ xmlXPathFreeContext(ctx);
+ xmlFreeDoc(doc);
return(NULL);
}
ns = ns->next;
}
- /*
+ /*
* Evaluate xpath
*/
xpath = xmlXPathEvalExpression(expr, ctx);
if(xpath == NULL) {
fprintf(stderr,"Error: unable to evaluate xpath expression\n");
- xmlFree(expr);
- xmlXPathFreeContext(ctx);
- xmlFreeDoc(doc);
+ xmlFree(expr);
+ xmlXPathFreeContext(ctx);
+ xmlFreeDoc(doc);
return(NULL);
}
/* print_xpath_nodes(xpath->nodesetval); */
- xmlFree(expr);
- xmlXPathFreeContext(ctx);
- xmlFreeDoc(doc);
+ xmlFree(expr);
+ xmlXPathFreeContext(ctx);
+ xmlFreeDoc(doc);
return(xpath);
}
@@ -329,28 +331,28 @@ static void
print_xpath_nodes(xmlNodeSetPtr nodes) {
xmlNodePtr cur;
int i;
-
- if(nodes == NULL ){
+
+ if(nodes == NULL ){
fprintf(stderr, "Error: no nodes set defined\n");
return;
}
-
+
fprintf(stderr, "Nodes Set:\n-----\n");
for(i = 0; i < nodes->nodeNr; ++i) {
if(nodes->nodeTab[i]->type == XML_NAMESPACE_DECL) {
xmlNsPtr ns;
-
+
ns = (xmlNsPtr)nodes->nodeTab[i];
cur = (xmlNodePtr)ns->next;
- fprintf(stderr, "namespace \"%s\"=\"%s\" for node %s:%s\n",
+ fprintf(stderr, "namespace \"%s\"=\"%s\" for node %s:%s\n",
ns->prefix, ns->href,
(cur->ns) ? cur->ns->prefix : BAD_CAST "", cur->name);
} else if(nodes->nodeTab[i]->type == XML_ELEMENT_NODE) {
- cur = nodes->nodeTab[i];
- fprintf(stderr, "element node \"%s:%s\"\n",
+ cur = nodes->nodeTab[i];
+ fprintf(stderr, "element node \"%s:%s\"\n",
(cur->ns) ? cur->ns->prefix : BAD_CAST "", cur->name);
} else {
- cur = nodes->nodeTab[i];
+ cur = nodes->nodeTab[i];
fprintf(stderr, "node \"%s\": type %d\n", cur->name, cur->type);
}
}