Hi On Tue, Jul 31, 2018 at 4:50 PM, Jakub Jelen <jjelen@xxxxxxxxxx> wrote: > Signed-off-by: Jakub Jelen <jjelen@xxxxxxxxxx> > Reviewed-by: Robert Relyea <rrelyea@xxxxxxxxxx> This isn't used in your tree, let's not add dead code. fwiw, there are more elegant implementations we could adopt if needed, like _g_dbus_hexdump() in glib. > --- > src/common.c | 40 ++++++++++++++++++++++++++++++++++++++++ > src/common.h | 2 ++ > 2 files changed, 42 insertions(+) > > diff --git a/src/common.c b/src/common.c > index 521ef51..2e06314 100644 > --- a/src/common.c > +++ b/src/common.c > @@ -26,7 +26,9 @@ > #endif > > #include <stddef.h> > +#include <stdio.h> > > +#include "vcard.h" > #include "common.h" > > unsigned char * > @@ -46,4 +48,42 @@ lebytes2ushort(const unsigned char *buf) > return 0U; > return (unsigned short)buf[1] << 8 | (unsigned short)buf[0]; > } > + > +#define MAX_STATIC_BYTES 1024 > +static char hexdump_buffer[5*MAX_STATIC_BYTES]; > +/* > + * Creates printable representation in hexadecimal format of the data > + * provided in the buf buffer. If out buffer is provided, the data > + * will be written into it. Otherwise, static buffer will be used, which > + * can hold up to 1024 bytes (longer will get truncated). > + */ > +char * > +hex_dump(unsigned char *buf, size_t buflen, unsigned char **out, size_t outlen) > +{ > + char *p, *start; > + size_t i, expect_len = buflen*5; > + > + if (buflen <= 0) > + return NULL; > + > + if (out == NULL) { > + start = hexdump_buffer; > + buflen = MIN(buflen, MAX_STATIC_BYTES); > + } else { > + if (outlen < expect_len) { > + /* too short output buffer */ > + return NULL; > + } > + start = (char *) *out; > + } > + > + p = start; > + for (i = 0; i < buflen; i++) { > + sprintf(p, "0x%02X ", buf[i]); > + p += 5; > + } > + /* terminate */ > + *--p = '\x00'; > + return start; > +} > /* vim: set ts=4 sw=4 tw=0 noet expandtab: */ > diff --git a/src/common.h b/src/common.h > index 83c8f33..e9fae67 100644 > --- a/src/common.h > +++ b/src/common.h > @@ -27,4 +27,6 @@ > unsigned char *ushort2lebytes(unsigned char *buf, unsigned short x); > unsigned short lebytes2ushort(const unsigned char *buf); > > +char *hex_dump(unsigned char *, size_t, unsigned char **, size_t); > + > #endif > -- > 2.17.1 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel -- Marc-André Lureau _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel