[sizebuf] Add function to dump contents of a buffer

The usual 8-bit hex + chars (with chars wrapped into 7-bits) with
addresses block.
This commit is contained in:
Bill Currie 2020-08-17 13:07:21 +09:00
parent 92aa94d776
commit fdcdbefc05
2 changed files with 32 additions and 0 deletions

View file

@ -50,6 +50,7 @@ void SZ_Clear (sizebuf_t *buf);
void *SZ_GetSpace (sizebuf_t *buf, int length);
void SZ_Write (sizebuf_t *buf, const void *data, int length);
void SZ_Print (sizebuf_t *buf, const char *data); // strcats onto the sizebuf
void SZ_Dump (sizebuf_t *buf);
///@}

View file

@ -99,3 +99,34 @@ SZ_Print (sizebuf_t *buf, const char *data)
memcpy (SZ_GetSpace (buf, len), data, len);
}
VISIBLE void
SZ_Dump (sizebuf_t *buf)
{
int i;
char chars[17], c;
chars[16] = 0;
for (i = 0; i < buf->cursize; i++) {
if (i % 16 == 0) {
Sys_Printf ("%04x:", i);
} else if (i % 16 == 8) {
Sys_Printf (" ");
}
Sys_Printf (" %02x", buf->data[i]);
c = buf->data[i] & 0x7f;
if (c < ' ') {
c = '.';
}
chars[i % 16] = c;
if (i % 16 == 15) {
Sys_Printf (" %s\n", chars);
}
}
i %= 16;
if (i) {
chars[i] = 0;
i = 16 - i;
Sys_Printf ("%*s %s\n", i * 3 + (i > 7), "", chars);
}
}