FreeCalypso > hg > freecalypso-tools
view rvinterf/libprint/hexdump.c @ 945:4c601097d23f
rvinterf: retire libg23 to old subdir
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 24 May 2023 07:22:32 +0000 |
parents | 65953c172f24 |
children |
line wrap: on
line source
/* * The function contained in this module implements hex dump functionality: * an arbitrary binary packet is dumped in hex, line by line, calling an output * function for each line. */ #include <sys/types.h> #include <stdio.h> #include <string.h> #include <strings.h> void packet_hex_dump(src, srclen, outfunc) u_char *src; unsigned srclen; void (*outfunc)(); { u_char *sp = src; unsigned remain = srclen; unsigned offset = 0; unsigned chunk; char line[80], *dp; int i, c; while (remain) { sprintf(line, "%04X: ", offset); dp = line + 7; chunk = remain; if (chunk > 16) chunk = 16; for (i = 0; i < 16; i++) { if (i < chunk) sprintf(dp, "%02X ", sp[i]); else strcpy(dp, " "); dp += 3; if (i == 7 || i == 15) *dp++ = ' '; } for (i = 0; i < chunk; i++) { c = sp[i]; if (c < ' ' || c > '~') c = '.'; *dp++ = c; } *dp = '\0'; outfunc(line); sp += chunk; remain -= chunk; offset += chunk; } }