From: Kristina Hanicova Date: Tue, 4 May 2021 11:40:12 +0000 (+0200) Subject: Refactoring virDomainVideoDriverDefParseXML() to use XPath X-Git-Tag: v7.4.0-rc1~240 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc7e1b2f03cfe2a5f3fce737390548505382d8ed;p=thirdparty%2Flibvirt.git Refactoring virDomainVideoDriverDefParseXML() to use XPath Signed-off-by: Kristina Hanicova Signed-off-by: Michal Privoznik Reviewed-by: Michal Privoznik --- diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 8cceb055c0..82581a318c 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -14313,34 +14313,24 @@ virDomainVideoResolutionDefParseXML(xmlNodePtr node) static virDomainVideoDriverDef * virDomainVideoDriverDefParseXML(xmlNodePtr node, - xmlXPathContextPtr ctxt G_GNUC_UNUSED) + xmlXPathContextPtr ctxt) { - xmlNodePtr cur; virDomainVideoDriverDef *def; - int val; - g_autofree char *vgaconf = NULL; + unsigned int val; + xmlNodePtr driver = NULL; + VIR_XPATH_NODE_AUTORESTORE(ctxt) - cur = node->children; - while (cur != NULL) { - if (cur->type == XML_ELEMENT_NODE) { - if (!vgaconf && - virXMLNodeNameEqual(cur, "driver")) { - vgaconf = virXMLPropString(cur, "vgaconf"); - } - } - cur = cur->next; - } + ctxt->node = node; - if (!vgaconf) + if (!(driver = virXPathNode("./driver", ctxt))) return NULL; - def = g_new0(virDomainVideoDriverDef, 1); + if (virXMLPropEnum(driver, "vgaconf", + virDomainVideoVGAConfTypeFromString, + VIR_XML_PROP_NONZERO, &val) < 0) + return NULL; - if ((val = virDomainVideoVGAConfTypeFromString(vgaconf)) <= 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown vgaconf value '%s'"), vgaconf); - return def; - } + def = g_new0(virDomainVideoDriverDef, 1); def->vgaconf = val; return def; diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 0874c9007f..95d0516279 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1665,7 +1665,7 @@ struct _virDomainVideoResolutionDef { }; struct _virDomainVideoDriverDef { - virDomainVideoVGAConf vgaconf; + virDomainVideoVGAConf vgaconf; char *vhost_user_binary; };