Remove the redundant root node checking and XPath context creation by
using virXMLParse properly.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/conf/virnwfilterbindingobj.c | 65 +++++-----------------------
src/conf/virnwfilterbindingobj.h | 2 +-
src/conf/virnwfilterbindingobjlist.c | 2 +-
src/libvirt_private.syms | 2 +-
4 files changed, 14 insertions(+), 57 deletions(-)
diff --git a/src/conf/virnwfilterbindingobj.c b/src/conf/virnwfilterbindingobj.c
index cc6009d1f2..5ff53f7380 100644
--- a/src/conf/virnwfilterbindingobj.c
+++ b/src/conf/virnwfilterbindingobj.c
@@ -202,74 +202,31 @@ virNWFilterBindingObjDelete(const virNWFilterBindingObj *obj,
}
-static virNWFilterBindingObj *
-virNWFilterBindingObjParseXML(xmlDocPtr doc,
- xmlXPathContextPtr ctxt)
+virNWFilterBindingObj *
+virNWFilterBindingObjParse(const char *filename)
{
- virNWFilterBindingObj *ret;
+ g_autoptr(virNWFilterBindingObj) ret = NULL;
+ g_autoptr(xmlDoc) xml = NULL;
+ g_autoptr(xmlXPathContext) ctxt = NULL;
xmlNodePtr node;
+ if (!(xml = virXMLParse(filename, NULL, _("(nwfilterbinding_status)"),
+ "filterbindingstatus", &ctxt, NULL, false)))
+ return NULL;
+
if (!(ret = virNWFilterBindingObjNew()))
return NULL;
if (!(node = virXPathNode("./filterbinding", ctxt))) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("filter binding status missing content"));
- goto cleanup;
- }
-
- if (!(ret->def = virNWFilterBindingDefParseNode(doc, node)))
- goto cleanup;
-
- return ret;
-
- cleanup:
- virObjectUnref(ret);
- return NULL;
-}
-
-
-static virNWFilterBindingObj *
-virNWFilterBindingObjParseNode(xmlDocPtr doc,
- xmlNodePtr root)
-{
- g_autoptr(xmlXPathContext) ctxt = NULL;
-
- if (STRNEQ((const char *)root->name, "filterbindingstatus")) {
- virReportError(VIR_ERR_XML_ERROR,
- _("unknown root element '%s' for filter
binding"),
- root->name);
return NULL;
}
- if (!(ctxt = virXMLXPathContextNew(doc)))
+ if (!(ret->def = virNWFilterBindingDefParseNode(xml, node)))
return NULL;
- ctxt->node = root;
- return virNWFilterBindingObjParseXML(doc, ctxt);
-}
-
-
-static virNWFilterBindingObj *
-virNWFilterBindingObjParse(const char *xmlStr,
- const char *filename)
-{
- virNWFilterBindingObj *obj = NULL;
- g_autoptr(xmlDoc) xml = NULL;
-
- if ((xml = virXMLParse(filename, xmlStr, _("(nwfilterbinding_status)"),
- NULL, NULL, NULL, false))) {
- obj = virNWFilterBindingObjParseNode(xml, xmlDocGetRootElement(xml));
- }
-
- return obj;
-}
-
-
-virNWFilterBindingObj *
-virNWFilterBindingObjParseFile(const char *filename)
-{
- return virNWFilterBindingObjParse(NULL, filename);
+ return g_steal_pointer(&ret);
}
diff --git a/src/conf/virnwfilterbindingobj.h b/src/conf/virnwfilterbindingobj.h
index 17f855bda1..33aa575436 100644
--- a/src/conf/virnwfilterbindingobj.h
+++ b/src/conf/virnwfilterbindingobj.h
@@ -64,7 +64,7 @@ virNWFilterBindingObjDelete(const virNWFilterBindingObj *obj,
const char *statusDir);
virNWFilterBindingObj *
-virNWFilterBindingObjParseFile(const char *filename);
+virNWFilterBindingObjParse(const char *filename);
char *
virNWFilterBindingObjFormat(const virNWFilterBindingObj *obj);
diff --git a/src/conf/virnwfilterbindingobjlist.c b/src/conf/virnwfilterbindingobjlist.c
index 9a46fa06b9..a349f5c195 100644
--- a/src/conf/virnwfilterbindingobjlist.c
+++ b/src/conf/virnwfilterbindingobjlist.c
@@ -266,7 +266,7 @@ virNWFilterBindingObjListLoadStatus(virNWFilterBindingObjList
*bindings,
if ((statusFile = virNWFilterBindingObjConfigFile(statusDir, name)) == NULL)
goto error;
- if (!(obj = virNWFilterBindingObjParseFile(statusFile)))
+ if (!(obj = virNWFilterBindingObjParse(statusFile)))
goto error;
def = virNWFilterBindingObjGetDef(obj);
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 5be40dbefe..11862bb1a9 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1377,7 +1377,7 @@ virNWFilterBindingObjFormat;
virNWFilterBindingObjGetDef;
virNWFilterBindingObjGetRemoving;
virNWFilterBindingObjNew;
-virNWFilterBindingObjParseFile;
+virNWFilterBindingObjParse;
virNWFilterBindingObjSave;
virNWFilterBindingObjSetDef;
virNWFilterBindingObjSetRemoving;
--
2.37.3