[PATCH 19/43] conf: secret: Refactor secretXMLParseNode

Peter Krempa pkrempa at redhat.com
Tue Oct 4 08:32:53 UTC 2022


Rename it to virSecretParseXML and move the root node validation and
context fetching into the caller (by properly calling virXMLParse).

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/conf/secret_conf.c | 29 ++++++++---------------------
 1 file changed, 8 insertions(+), 21 deletions(-)

diff --git a/src/conf/secret_conf.c b/src/conf/secret_conf.c
index 02c2e38964..d41d8157cd 100644
--- a/src/conf/secret_conf.c
+++ b/src/conf/secret_conf.c
@@ -123,28 +123,15 @@ virSecretDefParseUsage(xmlXPathContextPtr ctxt,
     return 0;
 }

+
 static virSecretDef *
-secretXMLParseNode(xmlDocPtr xml, xmlNodePtr root)
+virSecretParseXML(xmlXPathContext *ctxt)
 {
-    g_autoptr(xmlXPathContext) ctxt = NULL;
     g_autoptr(virSecretDef) def = NULL;
     g_autofree char *ephemeralstr = NULL;
     g_autofree char *privatestr = NULL;
     g_autofree char *uuidstr = NULL;

-    if (!virXMLNodeNameEqual(root, "secret")) {
-        virReportError(VIR_ERR_XML_ERROR,
-                       _("unexpected root element <%s>, "
-                         "expecting <secret>"),
-                       root->name);
-        return NULL;
-    }
-
-    if (!(ctxt = virXMLXPathContextNew(xml)))
-        return NULL;
-
-    ctxt->node = root;
-
     def = g_new0(virSecretDef, 1);

     if ((ephemeralstr = virXPathString("string(./@ephemeral)", ctxt))) {
@@ -186,21 +173,21 @@ secretXMLParseNode(xmlDocPtr xml, xmlNodePtr root)
     return g_steal_pointer(&def);
 }

+
 static virSecretDef *
 virSecretDefParse(const char *xmlStr,
                   const char *filename,
                   unsigned int flags)
 {
     g_autoptr(xmlDoc) xml = NULL;
-    virSecretDef *ret = NULL;
+    g_autoptr(xmlXPathContext) ctxt = NULL;
     bool validate = flags & VIR_SECRET_DEFINE_VALIDATE;

-    if ((xml = virXMLParse(filename, xmlStr, _("(definition_of_secret)"),
-                           NULL, NULL, "secret.rng", validate))) {
-        ret = secretXMLParseNode(xml, xmlDocGetRootElement(xml));
-    }
+    if (!(xml = virXMLParse(filename, xmlStr, _("(definition_of_secret)"),
+                            "secret", &ctxt, "secret.rng", validate)))
+        return NULL;

-    return ret;
+    return virSecretParseXML(ctxt);
 }

 virSecretDef *
-- 
2.37.3



More information about the libvir-list mailing list