From a59708316ee33b84feeedb8226fd74bb8f969fc6 Mon Sep 17 00:00:00 2001 From: Daniel Lenski Date: Tue, 4 Jun 2019 11:09:31 -0700 Subject: [PATCH] make dump_buf_hex() show printable characters as well Signed-off-by: Daniel Lenski --- http.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/http.c b/http.c index fa85c496..243553e0 100644 --- a/http.c +++ b/http.c @@ -798,17 +798,22 @@ void dump_buf(struct openconnect_info *vpninfo, char prefix, char *buf) 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: -- 2.49.0