#include <debug.h>
#include <stdio.h>
#include <ctype.h>

#define NUM_COLS  (32)

int dump_hex_buffer(FILE *s, void *b, size_t len, size_t elsize)
{
    int num_nonprintable = 0;
    int i, last;
    char *pchr = (char *)b;
    fputc('\n', s);
    for (i = last = 0; i < len; i++) {
        if (!elsize) {
            if (i && !(i % 4)) fprintf(s, " ");
            if (i && !(i % 8)) fprintf(s, " ");
        }
        else {
            if (i && !(i % elsize)) fprintf(s, " ");
        }

        if (i && !(i % NUM_COLS)) {
            while (last < i) {
                if (isprint(pchr[last]))
                    fputc(pchr[last], s); 
                else {
                    fputc('.', s); 
                    num_nonprintable++;
                }
                last++;
            }
            fprintf(s, " (%d)\n", i);
        }
        fprintf(s, "%02x", (unsigned char)pchr[i]);
    }
    if (i && (i % NUM_COLS)) fputs("\n", s);
    return num_nonprintable;
}

