summaryrefslogtreecommitdiffstats
path: root/keximdb/src/mdbtools/libmdb/dump.c
diff options
context:
space:
mode:
Diffstat (limited to 'keximdb/src/mdbtools/libmdb/dump.c')
-rw-r--r--keximdb/src/mdbtools/libmdb/dump.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/keximdb/src/mdbtools/libmdb/dump.c b/keximdb/src/mdbtools/libmdb/dump.c
new file mode 100644
index 0000000..ffd9c11
--- /dev/null
+++ b/keximdb/src/mdbtools/libmdb/dump.c
@@ -0,0 +1,40 @@
+#include <ctype.h>
+#include <string.h>
+#include <stdio.h>
+
+#ifdef DMALLOC
+#include "dmalloc.h"
+#endif
+
+void buffer_dump(const void* buf, int start, size_t len)
+{
+ char asc[20];
+ int j, k;
+
+ memset(asc, 0, sizeof(asc));
+ k = 0;
+ for (j=start; (size_t)j<(start+len); j++) {
+ int c = ((const unsigned char *)(buf))[j];
+ if (k == 0) {
+ fprintf(stdout, "%04x ", j);
+ }
+ fprintf(stdout, "%02x ", c);
+ asc[k] = isprint(c) ? c : '.';
+ k++;
+ if (k == 8) {
+ fprintf(stdout, " ");
+ }
+ if (k == 16) {
+ fprintf(stdout, " %s\n", asc);
+ memset(asc, 0, sizeof(asc));
+ k = 0;
+ }
+ }
+ for (j=k; j<16; j++) {
+ fprintf(stdout, " ");
+ }
+ if (k < 8) {
+ fprintf(stdout, " ");
+ }
+ fprintf(stdout, " %s\n", asc);
+}