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

index c84a907e244d73cf438003e8e1ef8b595140c078..682a33e81170e62f6e270fcee428a732f0e0848b 100644 (file)
@@ -11021,16 +11021,18 @@ virDomainChrTargetModelFromString(int devtype,
 static int
 virDomainChrDefParseTargetXML(virDomainChrDef *def,
                               xmlNodePtr cur,
-                              xmlXPathContextPtr ctxt G_GNUC_UNUSED,
+                              xmlXPathContextPtr ctxt,
                               unsigned int flags)
 {
-    xmlNodePtr child;
     unsigned int port;
     g_autofree char *targetType = virXMLPropString(cur, "type");
     g_autofree char *targetModel = NULL;
     g_autofree char *addrStr = NULL;
     g_autofree char *portStr = NULL;
     g_autofree char *stateStr = NULL;
+    VIR_XPATH_NODE_AUTORESTORE(ctxt)
+
+    ctxt->node = cur;
 
     if ((def->targetType =
          virDomainChrTargetTypeFromString(def->deviceType,
@@ -11041,14 +11043,7 @@ virDomainChrDefParseTargetXML(virDomainChrDef *def,
         return -1;
     }
 
-    child = cur->children;
-    while (child != NULL) {
-        if (child->type == XML_ELEMENT_NODE &&
-            virXMLNodeNameEqual(child, "model")) {
-            targetModel = virXMLPropString(child, "name");
-        }
-        child = child->next;
-    }
+    targetModel = virXPathString("string(./model/@name)", ctxt);
 
     if ((def->targetModel =
          virDomainChrTargetModelFromString(def->deviceType,