]> www.infradead.org Git - users/dwmw2/openconnect.git/commitdiff
make dump_buf_hex() show printable characters as well
authorDaniel Lenski <dlenski@gmail.com>
Tue, 4 Jun 2019 18:09:31 +0000 (11:09 -0700)
committerDavid Woodhouse <dwmw2@infradead.org>
Fri, 7 Jun 2019 19:29:24 +0000 (20:29 +0100)
Signed-off-by: Daniel Lenski <dlenski@gmail.com>
http.c

diff --git a/http.c b/http.c
index fa85c496fb5a9df75f3a08f31d47c08132d036a5..243553e0cb56a5ae6f382e7cbdb60708d38cdcf3 100644 (file)
--- 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: