]> xenbits.xensource.com Git - libvirt.git/commitdiff
Refactoring virDomainVideoDriverDefParseXML() to use XPath
authorKristina Hanicova <khanicov@redhat.com>
Tue, 4 May 2021 11:40:12 +0000 (13:40 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 5 May 2021 07:12:14 +0000 (09:12 +0200)
Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/conf/domain_conf.c
src/conf/domain_conf.h

index 8cceb055c0ee547958c921669c55ec82652929c0..82581a318c32ae5fafe76e4db16da5f6eee9fcfd 100644 (file)
@@ -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;
index 0874c9007f322c8836accef2e972960f53eb40d7..95d051627910d44d53eacdfeb1259f66a6de173d 100644 (file)
@@ -1665,7 +1665,7 @@ struct _virDomainVideoResolutionDef {
 };
 
 struct _virDomainVideoDriverDef {
-   virDomainVideoVGAConf vgaconf;
+    virDomainVideoVGAConf vgaconf;
     char *vhost_user_binary;
 };