+
+
+void debug_memdump (void *buf, int len, int L) {
+ int i;
+ unsigned char *p = buf;
+ if (L) {
+ int delta;
+ dprintf ("\t%d (0x%x) bytes:\n", len, len);
+ delta = 15 & (int) p;
+ p -= delta;
+ len += delta;
+ }
+ for (; 0 < len; p += 16, len -= 16) {
+ dputs ("\t");
+ if (L) dprintf ("%p: ", p);
+ for (i = 0; i < 16 && i < len; ++i) {
+ if (&p[i] < (unsigned char *) buf) {
+ dputs (" "); /* 3 spaces */
+ } else {
+ dprintf (
+ "%c%02.2x",
+ &p[i] != (unsigned char *) buf && i % 4 ? '.' : ' ',
+ p[i]
+ );
+ }
+ }
+ dputs ("\n");
+ }
+}
+
+#endif /* def DEBUG */
+