[PATCH 12/37] util: xml: Introduce virXMLPropUUID
Ján Tomko
jtomko at redhat.com
Wed Sep 21 14:24:15 UTC 2022
On a Monday in 2022, Peter Krempa wrote:
>The helper function extracts an UUID with semantics similar to other
*a UUID
>helpers we have.
>
>Signed-off-by: Peter Krempa <pkrempa at redhat.com>
>---
> src/libvirt_private.syms | 1 +
> src/util/virxml.c | 45 ++++++++++++++++++++++++++++++++++++++++
> src/util/virxml.h | 7 +++++++
> 3 files changed, 53 insertions(+)
>
>diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
>index 25794bc2f4..1e852902ab 100644
>diff --git a/src/util/virxml.c b/src/util/virxml.c
>index d6e2e5dd91..04a8b29ba3 100644
>--- a/src/util/virxml.c
>+++ b/src/util/virxml.c
>@@ -33,6 +33,7 @@
> #include "virfile.h"
> #include "virstring.h"
> #include "virutil.h"
>+#include "viruuid.h"
> #include "configmake.h"
>
> #define VIR_FROM_THIS VIR_FROM_XML
>@@ -808,6 +809,50 @@ virXMLPropEnumDefault(xmlNodePtr node,
> }
>
>
>+/**
>+ * virXMLPropUUID:
>+ * @node: XML dom node pointer
>+ * @name: Name of the property (attribute) to get
>+ * @flags: Bitwise or of virXMLPropFlags
In the public API we write this as "Bitwise-OR of"
>+ * @result: array of VIR_UUID_BUFLEN bytes to store the raw UUID
*Array (or lowercase the description of the two options above)
>+ *
>+ * Convenience function to fetch a XML property as UUID.
s/a XML/an XML/
s/UUID/a UUID/
>+ *
>+ * Returns 1 in case of success in which case @result is set,
>+ * or 0 if the attribute is not present,
>+ * or -1 and reports an error on failure.
>+ */
>+int
>+virXMLPropUUID(xmlNodePtr node,
>+ const char* name,
>+ virXMLPropFlags flags,
>+ unsigned char *result)
>+{
>+ g_autofree char *tmp = NULL;
>+ unsigned char val[VIR_UUID_BUFLEN];
>+
>+ if (!(tmp = virXMLPropString(node, name))) {
>+ if (!(flags & VIR_XML_PROP_REQUIRED))
>+ return 0;
>+
>+ virReportError(VIR_ERR_XML_ERROR,
>+ _("Missing required attribute '%s' in element '%s'"),
>+ name, node->name);
>+ return -1;
>+ }
>+
>+ if (virUUIDParse(tmp, val) < 0) {
>+ virReportError(VIR_ERR_XML_ERROR,
>+ _("Invalid value for attribute '%s' in element '%s': '%s'. Expected UUID"),
>+ name, node->name, tmp);
>+ return -1;
>+ }
>+
>+ memcpy(result, val, VIR_UUID_BUFLEN);
>+ return 1;
>+}
>+
>+
> /**
> * virXMLPropEnum:
> * @node: XML dom node pointer
>diff --git a/src/util/virxml.h b/src/util/virxml.h
>index 539228a9ba..dfb58ff276 100644
>--- a/src/util/virxml.h
>+++ b/src/util/virxml.h
>@@ -154,6 +154,13 @@ virXMLPropEnum(xmlNodePtr node,
> ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
> ATTRIBUTE_NONNULL(5);
>
>+int
>+virXMLPropUUID(xmlNodePtr node,
>+ const char* name,
char *name
Reviewed-by: Ján Tomko <jtomko at redhat.com>
Jano
>+ virXMLPropFlags flags,
>+ unsigned char *result)
More information about the libvir-list
mailing list