virStringFormatHex converts an input byte array into hex string and
returns it.

Signed-off-by: Praveen K Paladugu <praveenkpalad...@gmail.com>
---
 src/libvirt_private.syms |  1 +
 src/util/virstring.c     | 19 +++++++++++++++++++
 src/util/virstring.h     |  1 +
 3 files changed, 21 insertions(+)

diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 6888f6b599..df2f425ef6 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -3460,6 +3460,7 @@ virSkipToDigit;
 virStrcpy;
 virStringBufferIsPrintable;
 virStringFilterChars;
+virStringFormatHex;
 virStringHasCaseSuffix;
 virStringHasChars;
 virStringHasControlChars;
diff --git a/src/util/virstring.c b/src/util/virstring.c
index 15c3f7bdd1..49b52ce018 100644
--- a/src/util/virstring.c
+++ b/src/util/virstring.c
@@ -1092,3 +1092,22 @@ virStringListRemoveDuplicates(char ***list)
     g_free(*list);
     *list = g_renew(char *, unique, n + 1);
 }
+
+/**
+ * virStringFormatHex:
+ * @buf: buffer to format
+ * @len: length of the buffer
+ *
+ * Format a byte array into a hexadecimal string and return it.
+ */
+char *
+virStringFormatHex(uint8_t *buf, size_t len)
+{
+    char *hex = g_new0(char, len * 2 + 1);
+    size_t i;
+
+    for (i = 0; i < len; i++)
+        g_snprintf(hex + i * 2, 3, "%02x", buf[i]);
+
+    return g_steal_pointer(&hex);
+}
diff --git a/src/util/virstring.h b/src/util/virstring.h
index 31a404e106..f5dfbf5387 100644
--- a/src/util/virstring.h
+++ b/src/util/virstring.h
@@ -140,3 +140,4 @@ int virStringParseVersion(unsigned long long *version,
                           bool allowMissing);
 
 void virStringListRemoveDuplicates(char ***list);
+char *virStringFormatHex(uint8_t *buf, size_t len);
-- 
2.47.0

Reply via email to