Hi On Tue, Jul 31, 2018 at 11:53 PM, Marc-André Lureau <marcandre.lureau@xxxxxxxxx> wrote: > 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. My bad, the function is called hex_dump(), that confused me (usually it's hexdump, like the command) > > fwiw, there are more elegant implementations we could adopt if needed, > like _g_dbus_hexdump() in glib. let's use your implementation for now > >> --- >> 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 -- Marc-André Lureau _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel