]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: Extract parsing of storage source related data
authorPeter Krempa <pkrempa@redhat.com>
Mon, 12 Mar 2018 14:09:28 +0000 (15:09 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 14 Mar 2018 11:19:44 +0000 (12:19 +0100)
Split out the parser and separate it from the private data part so that
it can be later reused in other parts of the code.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
src/conf/domain_conf.c

index d1ff80feb707dbe361fae6635d7d4cf49cbcee98..86fc275116309dc0ce8669863b3ef731e81af0fa 100644 (file)
@@ -8554,24 +8554,26 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
 
 
 static int
-virDomainDiskSourcePrivateDataParse(xmlXPathContextPtr ctxt,
+virDomainDiskSourcePrivateDataParse(xmlNodePtr node,
+                                    xmlXPathContextPtr ctxt,
                                     virStorageSourcePtr src,
                                     unsigned int flags,
                                     virDomainXMLOptionPtr xmlopt)
 {
     xmlNodePtr saveNode = ctxt->node;
-    xmlNodePtr node;
     int ret = -1;
 
     if (!(flags & VIR_DOMAIN_DEF_PARSE_STATUS) ||
         !xmlopt || !xmlopt->privateData.storageParse)
         return 0;
 
-    if (!(node = virXPathNode("./privateData", ctxt)))
-        return 0;
-
     ctxt->node = node;
 
+    if (!(ctxt->node = virXPathNode("./privateData", ctxt))) {
+        ret = 0;
+        goto cleanup;
+    }
+
     if (xmlopt->privateData.storageParse(ctxt, src) < 0)
         goto cleanup;
 
@@ -8584,12 +8586,11 @@ virDomainDiskSourcePrivateDataParse(xmlXPathContextPtr ctxt,
 }
 
 
-int
-virDomainDiskSourceParse(xmlNodePtr node,
-                         xmlXPathContextPtr ctxt,
-                         virStorageSourcePtr src,
-                         unsigned int flags,
-                         virDomainXMLOptionPtr xmlopt)
+static int
+virDomainStorageSourceParse(xmlNodePtr node,
+                            xmlXPathContextPtr ctxt,
+                            virStorageSourcePtr src,
+                            unsigned int flags)
 {
     int ret = -1;
     xmlNodePtr saveNode = ctxt->node;
@@ -8635,9 +8636,6 @@ virDomainDiskSourceParse(xmlNodePtr node,
                                           ctxt, flags) < 0)
         goto cleanup;
 
-    if (virDomainDiskSourcePrivateDataParse(ctxt, src, flags, xmlopt) < 0)
-        goto cleanup;
-
     /* People sometimes pass a bogus '' source path when they mean to omit the
      * source element completely (e.g. CDROM without media). This is just a
      * little compatibility check to help those broken apps */
@@ -8652,6 +8650,23 @@ virDomainDiskSourceParse(xmlNodePtr node,
 }
 
 
+int
+virDomainDiskSourceParse(xmlNodePtr node,
+                         xmlXPathContextPtr ctxt,
+                         virStorageSourcePtr src,
+                         unsigned int flags,
+                         virDomainXMLOptionPtr xmlopt)
+{
+    if (virDomainStorageSourceParse(node, ctxt, src, flags) < 0)
+        return -1;
+
+    if (virDomainDiskSourcePrivateDataParse(node, ctxt, src, flags, xmlopt) < 0)
+        return -1;
+
+    return 0;
+}
+
+
 static int
 virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt,
                                virStorageSourcePtr src,