shell: fix printing hex when size is larger than 16

tags/0.1.0
S.J.R. van Schaik 9 years ago
parent 2c4e097f64
commit 99ab4bae75
  1. 10
      shell.c

@ -57,19 +57,21 @@ static void parse_hex(FILE *fp, char *buf, size_t len)
static void print_hex_ascii(FILE *fp, const char *buf, size_t len) static void print_hex_ascii(FILE *fp, const char *buf, size_t len)
{ {
size_t i, j; size_t n, i;
char c; char c;
for (j = 0; j < len; j += 16, buf += 16) { for (; len; buf += n, len -= n) {
n = min(len, 16);
for (i = 0; i < 16; ++i) { for (i = 0; i < 16; ++i) {
c = (i < len) ? buf[i] : 0; c = (i < n) ? buf[i] : 0;
fprintf(fp, "%02x", c); fprintf(fp, "%02x", c);
} }
fprintf(fp, " "); fprintf(fp, " ");
for (i = 0; i < 16; ++i) { for (i = 0; i < 16; ++i) {
c = (i < len) ? buf[i] : 0; c = (i < n) ? buf[i] : 0;
fprintf(fp, "%c", isalnum(c) ? c : '.'); fprintf(fp, "%c", isalnum(c) ? c : '.');
} }

Loading…
Cancel
Save