summaryrefslogtreecommitdiffstats
path: root/main/glib/printmem.c
blob: b7fc4f6e207290f13dc8519a54a4bb56418ffb22 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "config.h"
#include <ctype.h>
#include "genlib.h"
#include "stddefs.h"

/*  printMem():
 *  Dump a block of memory.
 */
void
printMem(uchar *base, int size, int showascii)
{
    int i, col;
    uchar *cp, *cp1;

    cp = cp1 = base;
    printf("  ");
    for(col=1,i=0; i<size; i++,col++) {
        printf("%02x ",*cp++);
        if((col == 8) || (col == 16)) {
            printf("  ");
            if(col == 16) {
                col = 0;
                if(showascii) {
                    prascii(cp1,16);
                }
                cp1 += 16;
                printf("\n  ");
            }
        }
    }
    if((showascii) && (col > 1)) {
        int space;

        space = (3 * (17 - col)) + (col <= 8 ? 4 : 2);
        while(space--) {
            putchar(' ');
        }
        prascii(cp1,col-1);
    }
    printf("\n");
    return;
}