From 484c6e2ca4e24aec9e04f5393328e5bd57718b2b Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Thu, 18 Nov 2021 15:41:19 -0300 Subject: [PATCH] qemu_capabilities.c: add virQEMUCapsValidateArch() Create a new helper to remove the arch validation logic from the body of virQEMUCapsLoadCache(). Signed-off-by: Daniel Henrique Barboza --- src/qemu/qemu_capabilities.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index a18074d5ad..4d431623ab 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -4234,6 +4234,26 @@ virQEMUCapsValidateEmulator(virQEMUCaps *qemuCaps, xmlXPathContextPtr ctxt) } +static int +virQEMUCapsValidateArch(virQEMUCaps *qemuCaps, xmlXPathContextPtr ctxt) +{ + g_autofree char *str = NULL; + + if (!(str = virXPathString("string(./arch)", ctxt))) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("missing arch in QEMU capabilities cache")); + return -1; + } + if (!(qemuCaps->arch = virArchFromString(str))) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("unknown arch %s in QEMU capabilities cache"), str); + return -1; + } + + return 0; +} + + /* * Parsing a doc that looks like * @@ -4357,17 +4377,8 @@ virQEMUCapsLoadCache(virArch hostArch, goto cleanup; } - if (!(str = virXPathString("string(./arch)", ctxt))) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("missing arch in QEMU capabilities cache")); + if (virQEMUCapsValidateArch(qemuCaps, ctxt) < 0) goto cleanup; - } - if (!(qemuCaps->arch = virArchFromString(str))) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("unknown arch %s in QEMU capabilities cache"), str); - goto cleanup; - } - VIR_FREE(str); if (virXPathBoolean("boolean(./cpudata)", ctxt) > 0) { qemuCaps->cpuData = virCPUDataParseNode(virXPathNode("./cpudata", ctxt)); -- 2.47.2