From: Peter Krempa Date: Mon, 12 Mar 2018 14:09:28 +0000 (+0100) Subject: conf: Extract parsing of storage source related data X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=07141541fb8d5bf5e7fa2ac7964d9bfb6938035d;p=libvirt.git conf: Extract parsing of storage source related data 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 --- diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index d1ff80feb7..86fc275116 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -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,