Proper use of virXMLParse replaces everything the function provides.
Callers can use virStorageVolDefParseXML instead.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/conf/storage_conf.c | 37 ++++++-------------------------------
src/conf/storage_conf.h | 7 +++----
src/libvirt_private.syms | 2 +-
src/test/test_driver.c | 6 +++---
4 files changed, 13 insertions(+), 39 deletions(-)
diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
index 0c095c73e0..703149241a 100644
--- a/src/conf/storage_conf.c
+++ b/src/conf/storage_conf.c
@@ -1234,7 +1234,7 @@ virStorageCheckCompat(const char *compat)
}
-static virStorageVolDef *
+virStorageVolDef *
virStorageVolDefParseXML(virStoragePoolDef *pool,
xmlXPathContextPtr ctxt,
unsigned int flags)
@@ -1401,45 +1401,20 @@ virStorageVolDefParseXML(virStoragePoolDef *pool,
}
-virStorageVolDef *
-virStorageVolDefParseNode(virStoragePoolDef *pool,
- xmlDocPtr xml,
- xmlNodePtr root,
- unsigned int flags)
-{
- g_autoptr(xmlXPathContext) ctxt = NULL;
-
- if (!virXMLNodeNameEqual(root, "volume")) {
- virReportError(VIR_ERR_XML_ERROR,
- _("unexpected root element <%s>, "
- "expecting <volume>"),
- root->name);
- return NULL;
- }
-
- if (!(ctxt = virXMLXPathContextNew(xml)))
- return NULL;
-
- ctxt->node = root;
- return virStorageVolDefParseXML(pool, ctxt, flags);
-}
-
-
static virStorageVolDef *
virStorageVolDefParse(virStoragePoolDef *pool,
const char *xmlStr,
const char *filename,
unsigned int flags)
{
- virStorageVolDef *ret = NULL;
g_autoptr(xmlDoc) xml = NULL;
+ g_autoptr(xmlXPathContext) ctxt = NULL;
- if ((xml = virXMLParse(filename, xmlStr, _("(storage_volume_definition)"),
- NULL, NULL, NULL, false))) {
- ret = virStorageVolDefParseNode(pool, xml, xmlDocGetRootElement(xml), flags);
- }
+ if (!(xml = virXMLParse(filename, xmlStr,
_("(storage_volume_definition)"),
+ "volume", &ctxt, NULL, false)))
+ return NULL;
- return ret;
+ return virStorageVolDefParseXML(pool, ctxt, flags);
}
diff --git a/src/conf/storage_conf.h b/src/conf/storage_conf.h
index ead54ca7c6..14167af761 100644
--- a/src/conf/storage_conf.h
+++ b/src/conf/storage_conf.h
@@ -297,10 +297,9 @@ virStorageVolDefParseFile(virStoragePoolDef *pool,
unsigned int flags);
virStorageVolDef *
-virStorageVolDefParseNode(virStoragePoolDef *pool,
- xmlDocPtr xml,
- xmlNodePtr root,
- unsigned int flags);
+virStorageVolDefParseXML(virStoragePoolDef *pool,
+ xmlXPathContextPtr ctxt,
+ unsigned int flags);
char *
virStorageVolDefFormat(virStoragePoolDef *pool,
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 8fec8d9027..3191c9d5f7 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1079,8 +1079,8 @@ virStorageVolDefFindByPath;
virStorageVolDefFormat;
virStorageVolDefFree;
virStorageVolDefParseFile;
-virStorageVolDefParseNode;
virStorageVolDefParseString;
+virStorageVolDefParseXML;
virStorageVolDefRefreshAllocationTypeFromString;
virStorageVolDefRefreshAllocationTypeToString;
virStorageVolTypeFromString;
diff --git a/src/test/test_driver.c b/src/test/test_driver.c
index 4245b32c15..943c0834cd 100644
--- a/src/test/test_driver.c
+++ b/src/test/test_driver.c
@@ -1147,6 +1147,7 @@ testOpenVolumesForPool(const char *file,
xmlXPathContextPtr ctxt,
virStoragePoolObj *obj)
{
+ VIR_XPATH_NODE_AUTORESTORE(ctxt)
virStoragePoolDef *def = virStoragePoolObjGetDef(obj);
size_t i;
int num;
@@ -1158,11 +1159,10 @@ testOpenVolumesForPool(const char *file,
return -1;
for (i = 0; i < num; i++) {
- xmlNodePtr node = testParseXMLDocFromFile(nodes[i], file);
- if (!node)
+ if (!(ctxt->node = testParseXMLDocFromFile(nodes[i], file)))
return -1;
- if (!(volDef = virStorageVolDefParseNode(def, ctxt->doc, node, 0)))
+ if (!(volDef = virStorageVolDefParseXML(def, ctxt, 0)))
return -1;
if (!volDef->target.path) {
--
2.37.3