Returns an integer count of the number of XML properties an element
has. Will be used in future patches.
---
src/libvirt_private.syms | 1 +
src/util/virxml.c | 17 +++++++++++++++++
src/util/virxml.h | 1 +
3 files changed, 19 insertions(+)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index fb24808..40b70a1 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -2550,6 +2550,7 @@ virXMLExtractNamespaceXML;
virXMLNodeToString;
virXMLParseHelper;
virXMLPickShellSafeComment;
+virXMLPropertyCount;
virXMLPropString;
virXMLSaveFile;
virXMLValidateAgainstSchema;
diff --git a/src/util/virxml.c b/src/util/virxml.c
index 489bad8..86c021c 100644
--- a/src/util/virxml.c
+++ b/src/util/virxml.c
@@ -890,6 +890,23 @@ virXMLChildElementCount(xmlNodePtr node)
return ret;
}
+/* Returns the number of node's properties, or -1 on error. */
+long
+virXMLPropertyCount(xmlNodePtr node)
+{
+ long ret = 0;
+ xmlAttrPtr cur = NULL;
+
+ if (!node || node->type != XML_ELEMENT_NODE)
+ return -1;
+ cur = node->properties;
+ while (cur) {
+ ret++;
+ cur = cur->next;
+ }
+ return ret;
+}
+
/**
* virXMLNodeToString: convert an XML node ptr to an XML string
diff --git a/src/util/virxml.h b/src/util/virxml.h
index b94de74..5cf082e 100644
--- a/src/util/virxml.h
+++ b/src/util/virxml.h
@@ -72,6 +72,7 @@ int virXPathNodeSet(const char *xpath,
char * virXMLPropString(xmlNodePtr node,
const char *name);
long virXMLChildElementCount(xmlNodePtr node);
+long virXMLPropertyCount(xmlNodePtr node);
/* Internal function; prefer the macros below. */
xmlDocPtr virXMLParseHelper(int domcode,
--
2.7.4