diff options
Diffstat (limited to 'qcom/rmtfs/util.c')
-rw-r--r-- | qcom/rmtfs/util.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/qcom/rmtfs/util.c b/qcom/rmtfs/util.c new file mode 100644 index 0000000..5ca5bba --- /dev/null +++ b/qcom/rmtfs/util.c @@ -0,0 +1,48 @@ +#include <ctype.h> +#include <stdint.h> +#include <stdio.h> +#include "util.h" + +static uint8_t to_hex(uint8_t ch) +{ + ch &= 0xf; + return ch <= 9 ? '0' + ch : 'a' + ch - 10; +} + +void print_hex_dump(const char *prefix, const void *buf, size_t len) +{ + const uint8_t *ptr = buf; + size_t linelen; + uint8_t ch; + char line[16 * 3 + 16 + 1]; + int li; + int i; + int j; + + for (i = 0; i < len; i += 16) { + linelen = MIN(16, len - i); + li = 0; + + for (j = 0; j < linelen; j++) { + ch = ptr[i + j]; + line[li++] = to_hex(ch >> 4); + line[li++] = to_hex(ch); + line[li++] = ' '; + } + + for (; j < 16; j++) { + line[li++] = ' '; + line[li++] = ' '; + line[li++] = ' '; + } + + for (j = 0; j < linelen; j++) { + ch = ptr[i + j]; + line[li++] = isprint(ch) ? ch : '.'; + } + + line[li] = '\0'; + + printf("%s %04x: %s\n", prefix, i, line); + } +} |