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@xxxxxxxxx> > --- > 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