From ea99a318d10eb1bb9c2ce48532149c6fa4a97c66 Mon Sep 17 00:00:00 2001 From: Adam Sutton Date: Mon, 10 Sep 2012 16:33:53 +0100 Subject: [PATCH] DEBUG: extra func in hexdump. --- src/utils.c | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/utils.c b/src/utils.c index ca88294f..89ae56d4 100644 --- a/src/utils.c +++ b/src/utils.c @@ -117,18 +117,34 @@ rate_to_sri(int rate) /** * */ +#define HEXDUMP_WIDTH 16 void hexdump(const char *pfx, const uint8_t *data, int len) { - int i; - printf("%s: ", pfx); - for(i = 0; i < len; i++) - printf("%02x.", data[i]); - printf("\n"); + int i, j=0, l; + char str[HEXDUMP_WIDTH+1]; + l = ((len+(HEXDUMP_WIDTH-1))/HEXDUMP_WIDTH)*HEXDUMP_WIDTH; + str[0] = 0; + for (i = 0; i < l; i++) { + if (!j) printf("%s: ", pfx); + if (i < len) { + printf("%02X ", data[i]); + str[j] = data[i]; + if (str[j] < ' ' || str[j] > '~') str[j] = '.'; + } else { + printf(" "); + str[j] = ' '; + } + j++; + if (j == HEXDUMP_WIDTH) { + str[j] = 0; + printf("%s\n", str); + str[0] = 0; + j = 0; + } + } } - - /** * @file * @brief Base64 encode/decode