summaryrefslogtreecommitdiffabout
path: root/ui-tree.c
Side-by-side diff
Diffstat (limited to 'ui-tree.c') (more/less context) (ignore whitespace changes)
-rw-r--r--ui-tree.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/ui-tree.c b/ui-tree.c
index a37a4e5..553dbaa 100644
--- a/ui-tree.c
+++ b/ui-tree.c
@@ -27,7 +27,10 @@ static void print_text_buffer(char *buf, unsigned long size)
lineno = 0;
- htmlf(numberfmt, ++lineno);
- while(idx < size - 1) { // skip absolute last newline
- if (buf[idx] == '\n')
- htmlf(numberfmt, ++lineno);
- idx++;
+
+ if (size) {
+ htmlf(numberfmt, ++lineno);
+ while(idx < size - 1) { // skip absolute last newline
+ if (buf[idx] == '\n')
+ htmlf(numberfmt, ++lineno);
+ idx++;
+ }
}
@@ -39,2 +42,4 @@ static void print_text_buffer(char *buf, unsigned long size)
+#define ROWLEN 32
+
static void print_binary_buffer(char *buf, unsigned long size)
@@ -42,2 +47,3 @@ static void print_binary_buffer(char *buf, unsigned long size)
unsigned long ofs, idx;
+ static char ascii[ROWLEN + 1];
@@ -45,5 +51,5 @@ static void print_binary_buffer(char *buf, unsigned long size)
html("<tr><th>ofs</th><th>hex dump</th><th>ascii</th></tr>");
- for (ofs = 0; ofs < size; ofs += 32, buf += 32) {
+ for (ofs = 0; ofs < size; ofs += ROWLEN, buf += ROWLEN) {
htmlf("<tr><td class='right'>%04x</td><td class='hex'>", ofs);
- for (idx = 0; idx < 32 && ofs + idx < size; idx++)
+ for (idx = 0; idx < ROWLEN && ofs + idx < size; idx++)
htmlf("%*s%02x",
@@ -52,4 +58,6 @@ static void print_binary_buffer(char *buf, unsigned long size)
html(" </td><td class='hex'>");
- for (idx = 0; idx < 32 && ofs + idx < size; idx++)
- htmlf("%c", isgraph(buf[idx]) ? buf[idx] : '.');
+ for (idx = 0; idx < ROWLEN && ofs + idx < size; idx++)
+ ascii[idx] = isgraph(buf[idx]) ? buf[idx] : '.';
+ ascii[idx] = '\0';
+ html_txt(ascii);
html("</td></tr>\n");