util/dump.c: Add hex pretty-print debug helper

This commit is contained in:
Tau 2018-11-08 10:22:26 -05:00
parent d791464dd0
commit f0f45a93a1
3 changed files with 74 additions and 0 deletions

57
util/dump.c Normal file
View File

@ -0,0 +1,57 @@
#ifndef NDEBUG
#include <assert.h>
#include <stddef.h>
#include "hook/iobuf.h"
#include "util/dprintf.h"
#include "util/dump.h"
void dump(const void *ptr, size_t nbytes)
{
const uint8_t *bytes;
size_t i;
assert(ptr != NULL);
if (nbytes == 0) {
dprintf("\t--- Empty ---\n");
}
bytes = ptr;
for (i = 0 ; i < nbytes ; i++) {
if (i % 16 == 0) {
dprintf("\t%08x:", i);
}
dprintf(" %02x", bytes[i]);
if (i % 16 == 15) {
dprintf("\n");
}
}
dprintf("\n");
}
void dump_iobuf(const struct iobuf *iobuf)
{
assert(iobuf != NULL);
assert(iobuf->bytes != NULL || iobuf->nbytes == 0);
assert(iobuf->pos <= iobuf->nbytes);
dump(iobuf->bytes, iobuf->pos);
}
void dump_const_iobuf(const struct const_iobuf *iobuf)
{
assert(iobuf != NULL);
assert(iobuf->bytes != NULL || iobuf->nbytes == 0);
assert(iobuf->pos <= iobuf->nbytes);
dump(&iobuf->bytes[iobuf->pos], iobuf->nbytes - iobuf->pos);
}
#endif

15
util/dump.h Normal file
View File

@ -0,0 +1,15 @@
#pragma once
#include <stddef.h>
#include "hook/iobuf.h"
#ifndef NDEBUG
void dump(const void *ptr, size_t nbytes);
void dump_iobuf(const struct iobuf *iobuf);
void dump_const_iobuf(const struct const_iobuf *iobuf);
#else
#define dump(ptr, nbytes)
#define dump_iobuf(iobuf)
#define dump_const_iobuf(iobuf)
#endif

View File

@ -11,6 +11,8 @@ util_lib = static_library(
'crc.h', 'crc.h',
'dprintf.c', 'dprintf.c',
'dprintf.h', 'dprintf.h',
'dump.c',
'dump.h',
'setupapi.c', 'setupapi.c',
'setupapi.h', 'setupapi.h',
], ],