void dump_buf_hex(struct openconnect_info *vpninfo, int loglevel, char prefix, unsigned char *buf, int len)
{
char linebuf[80];
- int i;
+ int i, j;
- for (i = 0; i < len; i++) {
- if (i % 16 == 0) {
- if (i)
- vpn_progress(vpninfo, loglevel, "%c %s\n", prefix, linebuf);
- sprintf(linebuf, "%04x:", i);
+ for (i = 0; i < len; i+=16) {
+ sprintf(linebuf, "%04x:", i);
+ for (j = i; j < i+16; j++) {
+ if (j < len)
+ sprintf(linebuf + strlen(linebuf), " %02x", buf[j]);
+ else
+ sprintf(linebuf + strlen(linebuf), " ");
}
- sprintf(linebuf + strlen(linebuf), " %02x", buf[i]);
+ sprintf(linebuf + strlen(linebuf), " |");
+ for (j = i; j < i+16 && j < len; j++)
+ sprintf(linebuf + strlen(linebuf), "%c", isprint(buf[j]) || buf[j]==' ' ? buf[j] : '.');
+ sprintf(linebuf + strlen(linebuf), "|");
+ vpn_progress(vpninfo, loglevel, "%c %s\n", prefix, linebuf);
}
- vpn_progress(vpninfo, loglevel, "%c %s\n", prefix, linebuf);
}
/* Inputs: