Allow for static initialisation.
[libeze] / ez-blob-dump.c
1 /* ez-blob.h: Serialising description and serialiser.
2
3    Copyright (C) 2019 Michael Zucchi
4
5    This program is free software: you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public License
7    as published by the Free Software Foundation, either version 3 of
8    the License, or (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13    GNU General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with this program. If not, see
17    <http://www.gnu.org/licenses/>.
18 */
19
20 #include <stdio.h>
21 #include <stdint.h>
22 #include <ctype.h>
23
24 #include "ez-blob.h"
25
26 void ez_blob_dump(const ez_blob *blob, const char *prefix) {
27         const char *data = blob->eb_data;
28         size_t size = blob->eb_size;
29         
30         for (int i=0;i<size;i+=16) {
31                 fputs(prefix, stdout);
32                 printf(" %04x:", i);
33                 for (int j=0;j<16;j++) {
34                         if (i+j<size)
35                                 printf(" %02x", data[i+j] & 0xff);
36                         else
37                                 fputs("   ", stdout);
38                 }
39                 fputs("  ", stdout);
40                 for (int j=0;j<16;j++) {
41                         if (i+j<size)
42                                 putchar(isprint(data[i+j]) ? data[i+j] : '.');
43                         else
44                                 putchar(' ');
45                 }
46                 putchar('\n');
47         }
48 }