]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
util: Introduce virXMLPropTristateBoolAllowDefault()
authorAndrea Bolognani <abologna@redhat.com>
Thu, 24 Mar 2022 18:46:12 +0000 (19:46 +0100)
committerAndrea Bolognani <abologna@redhat.com>
Tue, 5 Apr 2022 11:40:24 +0000 (13:40 +0200)
We need it for a single scenario in which prop='default' has to
be treated as valid input.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/libvirt_private.syms
src/util/virxml.c
src/util/virxml.h

index 8a3e5f7f7cc2b5f36c9129f002d7fbca26280c3a..a9d7ed972fb03976dec13b562b565bef943b3075 100644 (file)
@@ -3647,6 +3647,7 @@ virXMLPropEnumDefault;
 virXMLPropInt;
 virXMLPropString;
 virXMLPropTristateBool;
+virXMLPropTristateBoolAllowDefault;
 virXMLPropTristateSwitch;
 virXMLPropUInt;
 virXMLPropULongLong;
index 8ff59e7cda5fdfb9b5853f7e87b69dfbf65f749c..e9ccb54c4177667eb5089d2d3859cb0d0222abc8 100644 (file)
@@ -552,6 +552,24 @@ virXMLPropTristateBool(xmlNodePtr node,
 }
 
 
+/* Same as virXMLPropTristateBoolAllowDefault, but will accept the
+ * value 'default' and convert it to VIR_TRISTATE_BOOL_ABSENT instead
+ * of rejecting it with an error. Should only be used for backwards
+ * compatibility reasons, and specifically to parse XML files where a
+ * property having value VIR_TRISTATE_BOOL_ABSENT has historically
+ * resulted in it being formatted with value 'default' instead of
+ * being omitted entirely */
+int
+virXMLPropTristateBoolAllowDefault(xmlNodePtr node,
+                                   const char* name,
+                                   virXMLPropFlags flags,
+                                   virTristateBool *result)
+{
+    return virXMLPropEnumInternal(node, name, virTristateBoolTypeFromString,
+                                  flags, result, VIR_TRISTATE_BOOL_ABSENT);
+}
+
+
 /**
  * virXMLPropTristateSwitch:
  * @node: XML dom node pointer
index c39eae62821bd99e4ab6264e3c8c9c40212f1f2e..05016db577f13d7c0c1567299e356343850b9bff 100644 (file)
@@ -103,6 +103,13 @@ virXMLPropTristateBool(xmlNodePtr node,
                        virTristateBool *result)
     ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(4);
 
+int
+virXMLPropTristateBoolAllowDefault(xmlNodePtr node,
+                                   const char *name,
+                                   virXMLPropFlags flags,
+                                   virTristateBool *result)
+    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(4);
+
 int
 virXMLPropTristateSwitch(xmlNodePtr node,
                          const char *name,