mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-01 09:47:20 +03:00
virDomainObjParseXML: Use g_autoptr
Signed-off-by: Tim Wiederhake <twiederh@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
107f687128
commit
34851dd8f4
@ -20351,7 +20351,7 @@ virDomainObjParseXML(xmlDocPtr xml,
|
|||||||
long val;
|
long val;
|
||||||
xmlNodePtr config;
|
xmlNodePtr config;
|
||||||
xmlNodePtr oldnode;
|
xmlNodePtr oldnode;
|
||||||
virDomainObj *obj;
|
g_autoptr(virDomainObj) obj = NULL;
|
||||||
size_t i;
|
size_t i;
|
||||||
int n;
|
int n;
|
||||||
virDomainState state;
|
virDomainState state;
|
||||||
@ -20367,7 +20367,7 @@ virDomainObjParseXML(xmlDocPtr xml,
|
|||||||
if (!(config = virXPathNode("./domain", ctxt))) {
|
if (!(config = virXPathNode("./domain", ctxt))) {
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
"%s", _("no domain config"));
|
"%s", _("no domain config"));
|
||||||
goto error;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
oldnode = ctxt->node;
|
oldnode = ctxt->node;
|
||||||
@ -20375,17 +20375,17 @@ virDomainObjParseXML(xmlDocPtr xml,
|
|||||||
obj->def = virDomainDefParseXML(xml, ctxt, xmlopt, flags);
|
obj->def = virDomainDefParseXML(xml, ctxt, xmlopt, flags);
|
||||||
ctxt->node = oldnode;
|
ctxt->node = oldnode;
|
||||||
if (!obj->def)
|
if (!obj->def)
|
||||||
goto error;
|
return NULL;
|
||||||
|
|
||||||
if (virXMLPropEnum(ctxt->node, "state", virDomainStateTypeFromString,
|
if (virXMLPropEnum(ctxt->node, "state", virDomainStateTypeFromString,
|
||||||
VIR_XML_PROP_REQUIRED, &state) < 0)
|
VIR_XML_PROP_REQUIRED, &state) < 0)
|
||||||
goto error;
|
return NULL;
|
||||||
|
|
||||||
if ((tmp = virXMLPropString(ctxt->node, "reason"))) {
|
if ((tmp = virXMLPropString(ctxt->node, "reason"))) {
|
||||||
if ((reason = virDomainStateReasonFromString(state, tmp)) < 0) {
|
if ((reason = virDomainStateReasonFromString(state, tmp)) < 0) {
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
_("invalid domain state reason '%s'"), tmp);
|
_("invalid domain state reason '%s'"), tmp);
|
||||||
goto error;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -20394,12 +20394,12 @@ virDomainObjParseXML(xmlDocPtr xml,
|
|||||||
if (virXPathLong("string(./@pid)", ctxt, &val) < 0) {
|
if (virXPathLong("string(./@pid)", ctxt, &val) < 0) {
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
"%s", _("invalid pid"));
|
"%s", _("invalid pid"));
|
||||||
goto error;
|
return NULL;
|
||||||
}
|
}
|
||||||
obj->pid = (pid_t)val;
|
obj->pid = (pid_t)val;
|
||||||
|
|
||||||
if ((n = virXPathNodeSet("./taint", ctxt, &taintNodes)) < 0)
|
if ((n = virXPathNodeSet("./taint", ctxt, &taintNodes)) < 0)
|
||||||
goto error;
|
return NULL;
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
int rc;
|
int rc;
|
||||||
virDomainTaintFlags taint;
|
virDomainTaintFlags taint;
|
||||||
@ -20407,14 +20407,14 @@ virDomainObjParseXML(xmlDocPtr xml,
|
|||||||
if ((rc = virXMLPropEnum(taintNodes[i], "flag",
|
if ((rc = virXMLPropEnum(taintNodes[i], "flag",
|
||||||
virDomainTaintTypeFromString,
|
virDomainTaintTypeFromString,
|
||||||
VIR_XML_PROP_NONE, &taint)) < 0)
|
VIR_XML_PROP_NONE, &taint)) < 0)
|
||||||
goto error;
|
return NULL;
|
||||||
|
|
||||||
if (rc == 1)
|
if (rc == 1)
|
||||||
virDomainObjTaint(obj, taint);
|
virDomainObjTaint(obj, taint);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((n = virXPathNodeSet("./deprecation", ctxt, &depNodes)) < 0)
|
if ((n = virXPathNodeSet("./deprecation", ctxt, &depNodes)) < 0)
|
||||||
goto error;
|
return NULL;
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
g_autofree char *str = virXMLNodeContentString(depNodes[i]);
|
g_autofree char *str = virXMLNodeContentString(depNodes[i]);
|
||||||
virDomainObjDeprecation(obj, str);
|
virDomainObjDeprecation(obj, str);
|
||||||
@ -20422,24 +20422,20 @@ virDomainObjParseXML(xmlDocPtr xml,
|
|||||||
|
|
||||||
if (xmlopt->privateData.parse &&
|
if (xmlopt->privateData.parse &&
|
||||||
xmlopt->privateData.parse(ctxt, obj, &xmlopt->config) < 0)
|
xmlopt->privateData.parse(ctxt, obj, &xmlopt->config) < 0)
|
||||||
goto error;
|
return NULL;
|
||||||
|
|
||||||
if (xmlopt->privateData.getParseOpaque)
|
if (xmlopt->privateData.getParseOpaque)
|
||||||
parseOpaque = xmlopt->privateData.getParseOpaque(obj);
|
parseOpaque = xmlopt->privateData.getParseOpaque(obj);
|
||||||
|
|
||||||
/* callback to fill driver specific domain aspects */
|
/* callback to fill driver specific domain aspects */
|
||||||
if (virDomainDefPostParse(obj->def, flags, xmlopt, parseOpaque) < 0)
|
if (virDomainDefPostParse(obj->def, flags, xmlopt, parseOpaque) < 0)
|
||||||
goto error;
|
return NULL;
|
||||||
|
|
||||||
/* validate configuration */
|
/* validate configuration */
|
||||||
if (virDomainDefValidate(obj->def, flags, xmlopt, parseOpaque) < 0)
|
if (virDomainDefValidate(obj->def, flags, xmlopt, parseOpaque) < 0)
|
||||||
goto error;
|
|
||||||
|
|
||||||
return obj;
|
|
||||||
|
|
||||||
error:
|
|
||||||
virObjectUnref(obj);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
return g_steal_pointer(&obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user