On 2/11/25 20:18, Praveen K Paladugu wrote:
virStringFormatHex converts an input byte array into hex string and
returns it.
Signed-off-by: Praveen K Paladugu <praveenkpaladugu(a)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.
Since you're documenting behavior, I'd also mention it's callers
responsibility to free returned string.
+ */
+char *
+virStringFormatHex(uint8_t *buf, size_t len)
s/uint8_t/const unsigned char/
+{
+ 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);
Michal