struct virParserData private;
xmlParserCtxtPtr pctxt;
xmlDocPtr xml = NULL;
+ const char *docname;
+
+ if (filename)
+ docname = filename;
+ else if (url)
+ docname = url;
+ else
+ docname = "[inline data]";
/* Set up a parser context so we can catch the details of XML errors. */
pctxt = xmlNewParserCtxt();
XML_PARSE_NONET |
XML_PARSE_NOWARNING);
}
- if (!xml)
+
+ if (!xml) {
+ if (virGetLastErrorCode() == VIR_ERR_OK) {
+ virGenericReportError(domcode, VIR_ERR_XML_ERROR,
+ _("failed to parse xml document '%s'"),
+ docname);
+ }
+
goto error;
+ }
if (xmlDocGetRootElement(xml) == NULL) {
virGenericReportError(domcode, VIR_ERR_INTERNAL_ERROR,
xmlFreeDoc(xml);
xml = NULL;
- if (virGetLastErrorCode() == VIR_ERR_OK) {
- virGenericReportError(domcode, VIR_ERR_XML_ERROR,
- _("failed to parse xml document '%s'"),
- filename ? filename : "[inline data]");
- }
goto cleanup;
}