diff options
-rw-r--r-- | src/main.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/main.c b/src/main.c index 4e8e7e952..a0981fea4 100644 --- a/src/main.c +++ b/src/main.c @@ -1951,7 +1951,7 @@ void dump(const char *text, /* without the hex output, we can fit more on screen */ width = 0x40; - fprintf(stream, "%s %d (0x%x) bytes\n", text, size, size); + fprintf(stream, "%s, %d bytes (0x%x)\n", text, size, size); for(i=0; i<size; i+= width) { @@ -1965,12 +1965,22 @@ void dump(const char *text, else fputs(" ", stream); } - for(c = 0; (c < width) && (i+c < size); c++) + + for(c = 0; (c < width) && (i+c < size); c++) { + /* check for 0D0A; if found, skip past and start a new line of output */ + if (nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) { + i+=(c+2-width); + break; + } fprintf(stream, "%c", (ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.'); - + /* check again for 0D0A, to avoid an extra \n if it's at width */ + if (nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) { + i+=(c+3-width); + break; + } + } fputc('\n', stream); /* newline */ - } } |