mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
conf: domain: Simplify validation in virDomainDefParse
Use virXMLParse's features to validate the top level element and fetch the XPath context. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
d4b6496f24
commit
5a1c20c3e5
@ -19080,29 +19080,19 @@ virDomainDefParse(const char *xmlStr,
|
||||
unsigned int flags)
|
||||
{
|
||||
g_autoptr(xmlDoc) xml = NULL;
|
||||
virDomainDef *def = NULL;
|
||||
g_autoptr(xmlXPathContext) ctxt = NULL;
|
||||
int keepBlanksDefault = xmlKeepBlanksDefault(0);
|
||||
xmlNodePtr root;
|
||||
bool validate = flags & VIR_DOMAIN_DEF_PARSE_VALIDATE_SCHEMA;
|
||||
|
||||
if (!(xml = virXMLParse(filename, xmlStr, _("(domain_definition)"),
|
||||
NULL, NULL, "domain.rng", validate)))
|
||||
goto cleanup;
|
||||
xml = virXMLParse(filename, xmlStr, _("(domain_definition)"),
|
||||
"domain", &ctxt, "domain.rng", validate);
|
||||
|
||||
root = xmlDocGetRootElement(xml);
|
||||
if (!virXMLNodeNameEqual(root, "domain")) {
|
||||
virReportError(VIR_ERR_XML_ERROR,
|
||||
_("unexpected root element <%s>, "
|
||||
"expecting <domain>"),
|
||||
root->name);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
def = virDomainDefParseNode(xml, root, xmlopt, parseOpaque, flags);
|
||||
|
||||
cleanup:
|
||||
xmlKeepBlanksDefault(keepBlanksDefault);
|
||||
return def;
|
||||
|
||||
if (!xml)
|
||||
return NULL;
|
||||
|
||||
return virDomainDefParseNode(xml, ctxt->node, xmlopt, parseOpaque, flags);
|
||||
}
|
||||
|
||||
virDomainDef *
|
||||
|
Loading…
x
Reference in New Issue
Block a user