]>
Commit | Line | Data |
---|---|---|
6ff66f50 PC |
1 | /* |
2 | * Helper to hexdump a buffer | |
3 | * | |
4 | * Copyright (c) 2013 Red Hat, Inc. | |
5 | * Copyright (c) 2013 Gerd Hoffmann <[email protected]> | |
6 | * Copyright (c) 2013 Peter Crosthwaite <[email protected]> | |
7 | * Copyright (c) 2013 Xilinx, Inc | |
8 | * | |
9 | * This work is licensed under the terms of the GNU GPL, version 2. See | |
10 | * the COPYING file in the top-level directory. | |
11 | * | |
12 | * Contributions after 2012-01-13 are licensed under the terms of the | |
13 | * GNU GPL, version 2 or (at your option) any later version. | |
14 | */ | |
15 | ||
aafd7584 | 16 | #include "qemu/osdep.h" |
6ff66f50 PC |
17 | #include "qemu-common.h" |
18 | ||
3568ac2a | 19 | void qemu_hexdump(const char *buf, FILE *fp, const char *prefix, size_t size) |
6ff66f50 | 20 | { |
a1555559 | 21 | unsigned int b, len, i, c; |
6ff66f50 | 22 | |
a1555559 IL |
23 | for (b = 0; b < size; b += 16) { |
24 | len = size - b; | |
25 | if (len > 16) { | |
26 | len = 16; | |
6ff66f50 | 27 | } |
a1555559 IL |
28 | fprintf(fp, "%s: %04x:", prefix, b); |
29 | for (i = 0; i < 16; i++) { | |
30 | if ((i % 4) == 0) { | |
31 | fprintf(fp, " "); | |
32 | } | |
33 | if (i < len) { | |
34 | fprintf(fp, " %02x", (unsigned char)buf[b + i]); | |
35 | } else { | |
36 | fprintf(fp, " "); | |
37 | } | |
6ff66f50 | 38 | } |
a1555559 IL |
39 | fprintf(fp, " "); |
40 | for (i = 0; i < len; i++) { | |
41 | c = buf[b + i]; | |
42 | if (c < ' ' || c > '~') { | |
43 | c = '.'; | |
44 | } | |
45 | fprintf(fp, "%c", c); | |
6ff66f50 | 46 | } |
6ff66f50 PC |
47 | fprintf(fp, "\n"); |
48 | } | |
49 | } |