summaryrefslogtreecommitdiffstats
path: root/main/glib/printmem.c
blob: 5dfbea1222441566ea60603ac084e3ae7ebae304 (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
#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;
}