summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2002-05-10 15:59:42 +0000
committerDaniel Stenberg <daniel@haxx.se>2002-05-10 15:59:42 +0000
commit06bdf83419b2f007fbad64d54ed0acd7effb24e7 (patch)
treeecbe60fb2c70afe365c8c46c3e7c9f8a0bdbcdfb
parent2ff2810a92c7279ff039e423767929d75d3bb751 (diff)
downloadgnurl-06bdf83419b2f007fbad64d54ed0acd7effb24e7.tar.gz
gnurl-06bdf83419b2f007fbad64d54ed0acd7effb24e7.tar.bz2
gnurl-06bdf83419b2f007fbad64d54ed0acd7effb24e7.zip
Kein Roth made --trace-ascii look even better, and make OD 0A occurances
get output as plain newlines.
-rw-r--r--src/main.c18
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 */
-
}
}