
#include "wine/debug.h"

#include <ctype.h>

/* Copyright 2004 David Hammerton */

void debug_hexdump(void *data, unsigned long len)
{
    unsigned int i;
    char *cdata = (char *)data;
    char textout[16];

    for (i = 0; i < len; i++)
    {
        if ((i % 8) == 0 && i) DPRINTF("  ");
        if ((i % 16) == 0 && i) DPRINTF("     '%.8s' '%.8s'\n", &textout[0], &textout[8]);
        textout[i % 16] = (cdata[i] && isprint(cdata[i])) ? cdata[i] : '.';
        DPRINTF("%02hhx ", cdata[i]);
    }
    if (i % 16)
    {
        unsigned int j;
        for (j = 0; j < (16 - (i % 16)); j++)
        {
            if (((16 - (i % 16)) - j) == 8) DPRINTF("  ");
            DPRINTF(".. ");
        }
        DPRINTF("       '");
        for (j = 0; j < (i % 16); j++)
        {
            DPRINTF("%c", textout[j]);
            if (j == 8) DPRINTF("' '");
        }
        DPRINTF("'\n");
    }
    DPRINTF("\n");

}

