mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-07-31 14:07:16 +00:00
conf: domain: Refactor cleanup in virSysinfoChassisParseXML
Register automatic cleanup for virSysinfoChassisDef and use it to refactor the cleanup code paths in virSysinfoChassisParseXML. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
98f604d44a
commit
4e402be080
@ -12267,19 +12267,16 @@ virSysinfoChassisParseXML(xmlNodePtr node,
|
|||||||
virSysinfoChassisDef **chassisdef)
|
virSysinfoChassisDef **chassisdef)
|
||||||
{
|
{
|
||||||
VIR_XPATH_NODE_AUTORESTORE(ctxt)
|
VIR_XPATH_NODE_AUTORESTORE(ctxt)
|
||||||
int ret = -1;
|
g_autoptr(virSysinfoChassisDef) def = g_new0(virSysinfoChassisDef, 1);
|
||||||
virSysinfoChassisDef *def;
|
|
||||||
|
|
||||||
ctxt->node = node;
|
ctxt->node = node;
|
||||||
|
|
||||||
if (!xmlStrEqual(node->name, BAD_CAST "chassis")) {
|
if (!xmlStrEqual(node->name, BAD_CAST "chassis")) {
|
||||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||||
_("XML does not contain expected 'chassis' element"));
|
_("XML does not contain expected 'chassis' element"));
|
||||||
return ret;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
def = g_new0(virSysinfoChassisDef, 1);
|
|
||||||
|
|
||||||
def->manufacturer = virXPathString("string(entry[@name='manufacturer'])", ctxt);
|
def->manufacturer = virXPathString("string(entry[@name='manufacturer'])", ctxt);
|
||||||
def->version = virXPathString("string(entry[@name='version'])", ctxt);
|
def->version = virXPathString("string(entry[@name='version'])", ctxt);
|
||||||
def->serial = virXPathString("string(entry[@name='serial'])", ctxt);
|
def->serial = virXPathString("string(entry[@name='serial'])", ctxt);
|
||||||
@ -12287,14 +12284,11 @@ virSysinfoChassisParseXML(xmlNodePtr node,
|
|||||||
def->sku = virXPathString("string(entry[@name='sku'])", ctxt);
|
def->sku = virXPathString("string(entry[@name='sku'])", ctxt);
|
||||||
|
|
||||||
if (!def->manufacturer && !def->version &&
|
if (!def->manufacturer && !def->version &&
|
||||||
!def->serial && !def->asset && !def->sku) {
|
!def->serial && !def->asset && !def->sku)
|
||||||
g_clear_pointer(&def, virSysinfoChassisDefFree);
|
return 0;
|
||||||
}
|
|
||||||
|
|
||||||
*chassisdef = g_steal_pointer(&def);
|
*chassisdef = g_steal_pointer(&def);
|
||||||
ret = 0;
|
return 0;
|
||||||
virSysinfoChassisDefFree(def);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -147,6 +147,7 @@ void virSysinfoSystemDefFree(virSysinfoSystemDef *def);
|
|||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virSysinfoSystemDef, virSysinfoSystemDefFree);
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virSysinfoSystemDef, virSysinfoSystemDefFree);
|
||||||
void virSysinfoBaseBoardDefClear(virSysinfoBaseBoardDef *def);
|
void virSysinfoBaseBoardDefClear(virSysinfoBaseBoardDef *def);
|
||||||
void virSysinfoChassisDefFree(virSysinfoChassisDef *def);
|
void virSysinfoChassisDefFree(virSysinfoChassisDef *def);
|
||||||
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virSysinfoChassisDef, virSysinfoChassisDefFree);
|
||||||
void virSysinfoOEMStringsDefFree(virSysinfoOEMStringsDef *def);
|
void virSysinfoOEMStringsDefFree(virSysinfoOEMStringsDef *def);
|
||||||
void virSysinfoDefFree(virSysinfoDef *def);
|
void virSysinfoDefFree(virSysinfoDef *def);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user