Extract the code to it's own function. Signed-off-by: Pavel Hrdina <phrdina@xxxxxxxxxx> --- src/conf/domain_conf.c | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 4876fe61bb..03985b6687 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -19595,6 +19595,31 @@ virDomainDefParseBootKernelOptions(virDomainDefPtr def, } +static int +virDomainDefParseBootFirmwareOptions(virDomainDefPtr def, + xmlXPathContextPtr ctxt) +{ + g_autofree char *firmware = virXPathString("string(./os/@firmware)", ctxt); + int fw = 0; + + if (!firmware) + return 0; + + fw = virDomainOsDefFirmwareTypeFromString(firmware); + + if (fw <= 0) { + virReportError(VIR_ERR_XML_ERROR, + _("unknown firmware value %s"), + firmware); + return -1; + } + + def->os.firmware = fw; + + return 0; +} + + static int virDomainDefParseBootOptions(virDomainDefPtr def, xmlXPathContextPtr ctxt) @@ -19621,23 +19646,13 @@ virDomainDefParseBootOptions(virDomainDefPtr def, def->os.type == VIR_DOMAIN_OSTYPE_XENPVH || def->os.type == VIR_DOMAIN_OSTYPE_HVM || def->os.type == VIR_DOMAIN_OSTYPE_UML) { - g_autofree char *firmware = NULL; xmlNodePtr loader_node; virDomainDefParseBootKernelOptions(def, ctxt); - if (def->os.type == VIR_DOMAIN_OSTYPE_HVM && - (firmware = virXPathString("string(./os/@firmware)", ctxt))) { - int fw = virDomainOsDefFirmwareTypeFromString(firmware); - - if (fw <= 0) { - virReportError(VIR_ERR_XML_ERROR, - _("unknown firmware value %s"), - firmware); + if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { + if (virDomainDefParseBootFirmwareOptions(def, ctxt) < 0) return -1; - } - - def->os.firmware = fw; } if ((loader_node = virXPathNode("./os/loader[1]", ctxt))) { -- 2.30.2