summaryrefslogtreecommitdiffstats
path: root/host/hexdump.c
diff options
context:
space:
mode:
Diffstat (limited to 'host/hexdump.c')
-rw-r--r--host/hexdump.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/host/hexdump.c b/host/hexdump.c
new file mode 100644
index 0000000..127faab
--- /dev/null
+++ b/host/hexdump.c
@@ -0,0 +1,60 @@
+/*
+ * hexdump.c
+ *
+ * Copyright (c) 2011 Citrix Sysmtes Inc.,
+ * All rights reserved.
+ *
+ */
+
+#include "project.h"
+
+void
+hexdump (char *prefix, void *_d, int len)
+{
+ uint8_t *d = (uint8_t *) _d;
+ int i, j, k;
+ int e;
+
+ printf ("%s %d bytes from %p\n", prefix, len, d);
+
+ if (!d || len < 0)
+ return;
+
+ e = len + 15;
+ e &= ~15;
+
+ for (i = 0; i < e; i += 16)
+ {
+ printf ("%s %05x:", prefix, i);
+ for (j = 0; j < 16; ++j)
+ {
+ k = i + j;
+
+ if (k < len)
+ printf (" %02x", d[k]);
+ else
+ printf (" ");
+
+ if (j == 7)
+ printf (" ");
+ }
+
+ printf (" ");
+ for (j = 0; j < 16; ++j)
+ {
+ k = i + j;
+ if (k < len)
+ {
+ uint8_t c = d[k];
+ if (c < 33)
+ c = '.';
+ if (c > 126)
+ c = '.';
+ printf ("%c", c);
+ }
+ if (j == 7)
+ printf (" ");
+ }
+ printf ("\n");
+ }
+}