--- embedaddon/libxml2/testC14N.c 2013/07/22 01:22:20 1.1.1.2 +++ embedaddon/libxml2/testC14N.c 2014/06/15 19:53:29 1.1.1.3 @@ -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 */ #include "libxml.h" @@ -11,11 +11,13 @@ #include #include +#ifndef STDOUT_FILENO #ifdef HAVE_UNISTD_H #include #else #define STDOUT_FILENO fileno(stdout) #endif /* HAVE_UNISTD_H */ +#endif #ifdef HAVE_STDLIB_H #include #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, 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, } 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* fil 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* fil 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* fil 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* fil 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); } }