X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=tests%2Futils%2Fxml-utils%2Fextract_xml.cpp;h=3995dde48a27d9d96485f148222b883f58f4ef10;hb=HEAD;hp=80b895411ab45b864208d33f2b673a19e0fe0c7e;hpb=28ab034a2c3582d07d3423d2d746731f87d3969f;p=lttng-tools.git diff --git a/tests/utils/xml-utils/extract_xml.cpp b/tests/utils/xml-utils/extract_xml.cpp index 80b895411..280f2ed02 100644 --- a/tests/utils/xml-utils/extract_xml.cpp +++ b/tests/utils/xml-utils/extract_xml.cpp @@ -24,6 +24,8 @@ * node;b; * node;c; */ +#include "common.hpp" + #include #include @@ -36,6 +38,8 @@ #include #include +namespace ll = lttng::libxml; + #if defined(LIBXML_XPATH_ENABLED) static int opt_verbose; @@ -56,7 +60,7 @@ static int print_xpath_nodes(xmlDocPtr doc, xmlNodeSetPtr nodes, FILE *output) int i; xmlNodePtr cur; - xmlChar *node_child_value_string = NULL; + xmlChar *node_child_value_string = nullptr; LTTNG_ASSERT(output); size = (nodes) ? nodes->nodeNr : 0; @@ -135,7 +139,7 @@ static int register_lttng_namespace(xmlXPathContextPtr xpathCtx) { int ret; xmlChar *prefix; - xmlChar *ns = NULL; + xmlChar *ns = nullptr; prefix = xmlCharStrdup("lttng"); if (!prefix) { @@ -169,15 +173,22 @@ end: static int extract_xpath(const char *xml_path, const xmlChar *xpath) { int ret; - xmlDocPtr doc = NULL; - xmlXPathContextPtr xpathCtx = NULL; - xmlXPathObjectPtr xpathObj = NULL; + xmlDocPtr doc = nullptr; + xmlXPathContextPtr xpathCtx = nullptr; + xmlXPathObjectPtr xpathObj = nullptr; LTTNG_ASSERT(xml_path); LTTNG_ASSERT(xpath); + ll::parser_ctx_uptr parserCtx{ xmlNewParserCtxt() }; + + if (!parserCtx) { + fprintf(stderr, "ERR: could not allocate an XML parser context\n"); + return -1; + } + /* Parse the xml file */ - doc = xmlParseFile(xml_path); + doc = xmlCtxtReadFile(parserCtx.get(), xml_path, nullptr, XML_PARSE_NOBLANKS); if (!doc) { fprintf(stderr, "ERR parsing: xml file invalid \"%s\"\n", xml_path); return -1; @@ -253,7 +264,6 @@ int main(int argc, char **argv) /* Init libxml */ xmlInitParser(); - xmlKeepBlanksDefault(0); if (access(argv[optind], F_OK)) { fprintf(stderr, "ERR:%s\n", "Xml path not valid"); return -1;