]> xenbits.xensource.com Git - libvirt.git/commitdiff
Introduce virXMLValidatorValidate
authorJán Tomko <jtomko@redhat.com>
Tue, 7 Jun 2016 16:58:02 +0000 (18:58 +0200)
committerJán Tomko <jtomko@redhat.com>
Wed, 8 Jun 2016 07:58:54 +0000 (09:58 +0200)
Split out the code for XML validation into a new function.

src/libvirt_private.syms
src/util/virxml.c
src/util/virxml.h

index e631c146716e98de729ed819daac0020c0f3d746..4d56d1f0af9b141c6c0bd6d95153d8a87c4d647a 100644 (file)
@@ -2567,6 +2567,7 @@ virXMLSaveFile;
 virXMLValidateAgainstSchema;
 virXMLValidatorFree;
 virXMLValidatorInit;
+virXMLValidatorValidate;
 virXPathBoolean;
 virXPathInt;
 virXPathLong;
index 19163dbb466d5d10d722c382065abe58974961f3..aa97940ab7a83d7e62acf291a02e0de9deba5d32 100644 (file)
@@ -1156,15 +1156,11 @@ virXMLValidatorInit(const char *schemafile)
 
 
 int
-virXMLValidateAgainstSchema(const char *schemafile,
-                            xmlDocPtr doc)
+virXMLValidatorValidate(virXMLValidatorPtr validator,
+                        xmlDocPtr doc)
 {
-    virXMLValidatorPtr validator = NULL;
     int ret = -1;
 
-    if (!(validator = virXMLValidatorInit(schemafile)))
-        return -1;
-
     if (xmlRelaxNGValidateDoc(validator->rngValid, doc) != 0) {
         virReportError(VIR_ERR_XML_INVALID_SCHEMA,
                        _("Unable to validate doc against %s\n%s"),
@@ -1174,7 +1170,26 @@ virXMLValidateAgainstSchema(const char *schemafile,
     }
 
     ret = 0;
+ cleanup:
+    virBufferFreeAndReset(&validator->buf);
+    return ret;
+}
+
+
+int
+virXMLValidateAgainstSchema(const char *schemafile,
+                            xmlDocPtr doc)
+{
+    virXMLValidatorPtr validator = NULL;
+    int ret = -1;
 
+    if (!(validator = virXMLValidatorInit(schemafile)))
+        return -1;
+
+    if (virXMLValidatorValidate(validator, doc) < 0)
+        goto cleanup;
+
+    ret = 0;
  cleanup:
     virXMLValidatorFree(validator);
     return ret;
index f2df6168e6df28af706b31fbbea50649e7624df9..7a89518b9a7702e41184701db1d41f65d6af79e1 100644 (file)
@@ -192,6 +192,10 @@ typedef virXMLValidator *virXMLValidatorPtr;
 virXMLValidatorPtr
 virXMLValidatorInit(const char *schemafile);
 
+int
+virXMLValidatorValidate(virXMLValidatorPtr validator,
+                        xmlDocPtr doc);
+
 int
 virXMLValidateAgainstSchema(const char *schemafile,
                             xmlDocPtr xml);