FreeCalypso > hg > freecalypso-tools
annotate uptools/libcoding/hexdump.c @ 535:88962b111edc
fc-xram: print a newline after the dots
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 19 Jun 2019 21:23:08 +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 } |