]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: secret: Refactor secretXMLParseNode
authorPeter Krempa <pkrempa@redhat.com>
Thu, 22 Sep 2022 15:38:36 +0000 (17:38 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 6 Oct 2022 08:54:24 +0000 (10:54 +0200)
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@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/secret_conf.c

index 02c2e38964c1ab2f1e986f5dd09d905ff413f0da..d41d8157cdab7613d48aef39230e6732569b1aeb 100644 (file)
@@ -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 *