* This allows a more human friendly format for xml testing when problems occur.
*/
+#include "common.hpp"
+
+#include <common/scope-exit.hpp>
+
+#include <iostream>
#include <libxml/parser.h>
+#include <unistd.h>
-int main(void)
-{
- xmlDocPtr doc = NULL;
+namespace ll = lttng::libxml;
- /* Init libxml. */
- xmlInitParser();
- xmlKeepBlanksDefault(0);
+int main()
+{
+ const ll::global_parser_context global_parser_context;
+ const ll::parser_ctx_uptr parserCtx{ xmlNewParserCtxt() };
/* Parse the XML document from stdin. */
- doc = xmlParseFile("-");
+ const ll::doc_uptr doc{ xmlCtxtReadFd(
+ parserCtx.get(), STDIN_FILENO, nullptr, nullptr, XML_PARSE_NOBLANKS) };
if (!doc) {
- fprintf(stderr, "ERR parsing: xml input invalid");
+ std::cerr << "Error: invalid XML input on stdin\n";
return -1;
}
- xmlDocFormatDump(stdout, doc, 1);
-
- xmlFreeDoc(doc);
- /* Shutdown libxml. */
- xmlCleanupParser();
+ xmlDocFormatDump(stdout, doc.get(), 1);
return 0;
}