FreeCalypso > hg > freecalypso-tools
annotate uptools/libcoding/hexdump.c @ 928:65953c172f24
rvinterf/lowlevel: new hex dump format
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Tue, 23 May 2023 05:23:19 +0000 |
| parents | ead4ee22ef62 |
| children |
| rev | line source |
|---|---|
|
336
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * This library module implements a simple hex dump facility. |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 */ |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 #include <sys/types.h> |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 #include <stdio.h> |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 msg_bits_hexdump(dumpbuf, dumplen) |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 u_char *dumpbuf; |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 unsigned dumplen; |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 { |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 u_char *buf = dumpbuf; |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 unsigned lineoff, linelen, i, c; |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 for (lineoff = 0; lineoff < dumplen; ) { |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 linelen = dumplen - lineoff; |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 if (linelen > 16) |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 linelen = 16; |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 printf("%02X: ", lineoff); |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 for (i = 0; i < 16; i++) { |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 if (i < linelen) |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 printf("%02X ", buf[i]); |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 else |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 fputs(" ", stdout); |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 if (i == 7 || i == 15) |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 putchar(' '); |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 } |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 for (i = 0; i < linelen; i++) { |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 c = buf[i]; |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 if (c < ' ' || c > '~') |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 c = '.'; |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 putchar(c); |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 } |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 putchar('\n'); |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 buf += linelen; |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 lineoff += linelen; |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 } |
|
ead4ee22ef62
uptools/libcoding: hex dump function implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 } |
