In the hex dump, generate the offset at the beginning of each line in
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Sat, 22 Jun 2002 00:21:38 +0000 (00:21 +0000)
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Sat, 22 Jun 2002 00:21:38 +0000 (00:21 +0000)
common code, rather than in print-format-specific code, and have
"print_hex_data_common()" put out the blank line before the dump itself
rather than relying on the print-format-specific "start printing the hex
dump" code to do it.

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@5728 f5534014-38df-0310-8fa8-9805f1628bb7

print.c
print.ps

diff --git a/print.c b/print.c
index 364fb94..536d7e5 100644 (file)
--- a/print.c
+++ b/print.c
@@ -1,7 +1,7 @@
 /* print.c
  * Routines for printing packet analysis trees.
  *
- * $Id: print.c,v 1.49 2002/06/21 23:52:47 guy Exp $
+ * $Id: print.c,v 1.50 2002/06/22 00:21:38 guy Exp $
  *
  * Gilbert Ramirez <gram@alumni.rice.edu>
  *
@@ -267,58 +267,52 @@ static
 void print_hex_data_common(FILE *fh, register const u_char *cp,
                register u_int length, char_enc encoding,
                void (*print_hex_data_start)(FILE *),
-               void (*print_hex_data_line)(FILE *, u_int, u_char *),
-               void (*print_hex_data_end)(FILE *))
+               void (*print_hex_data_line)(FILE *, u_char *))
 {
        register unsigned int ad, i, j, k;
        u_char c;
-       u_char line[50+16+1];
+       u_char line[6+50+16+1];
        static u_char binhex[16] = {
                '0', '1', '2', '3', '4', '5', '6', '7',
                '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
 
        if (print_hex_data_start != NULL)
                (*print_hex_data_start)(fh);
+       (*print_hex_data_line)(fh, "");
        ad = 0;
        j = 0;
        k = 0;
-       memset(line, ' ', sizeof line);
+       sprintf(line, "%04x  ", ad);
+       memset(line+6, ' ', sizeof line-6);
        line[sizeof (line)-1] = '\0';
        for (i=0; i<length; i++) {
                c = *cp++;
-               line[j++] = binhex[c>>4];
-               line[j++] = binhex[c&0xf];
+               line[6+j++] = binhex[c>>4];
+               line[6+j++] = binhex[c&0xf];
                j++;
                if (encoding == CHAR_EBCDIC) {
                        c = EBCDIC_to_ASCII1(c);
                }
-               line[50+k++] = c >= ' ' && c < 0x7f ? c : '.';
+               line[6+50+k++] = c >= ' ' && c < 0x7f ? c : '.';
                if ((i & 15) == 15) {
-                       (*print_hex_data_line)(fh, ad, line);
+                       (*print_hex_data_line)(fh, line);
                        ad += 16;
                        j = 0;
                        k = 0;
-                       memset(line, ' ', sizeof line);
+                       sprintf(line, "%04x  ", ad);
+                       memset(line+6, ' ', sizeof line-6);
                        line[sizeof (line)-1] = '\0';
                }
        }
 
        if (line[0] != ' ')
-               (*print_hex_data_line)(fh, ad, line);
-       if (print_hex_data_end != NULL)
-               (*print_hex_data_end)(fh);
+               (*print_hex_data_line)(fh, line);
 }
 
 static void
-print_hex_data_line_text(FILE *fh, u_int ad, u_char *line)
+print_hex_data_line_text(FILE *fh, u_char *line)
 {
-       fprintf(fh, "\n%04x  %s", ad, line);
-}
-
-static void
-print_hex_data_end_text(FILE *fh)
-{
-       fprintf(fh, "\n");
+       fprintf(fh, "%s\n", line);
 }
 
 static
@@ -326,7 +320,7 @@ void print_hex_data_text(FILE *fh, register const u_char *cp,
                register u_int length, char_enc encoding)
 {
        print_hex_data_common(fh, cp, length, encoding, NULL,
-           print_hex_data_line_text, print_hex_data_end_text);
+           print_hex_data_line_text);
 }
 
 #define MAX_LINE_LENGTH 256
@@ -406,12 +400,12 @@ void ps_clean_string(unsigned char *out, const unsigned char *in,
 }
 
 static void
-print_hex_data_line_ps(FILE *fh, u_int ad, u_char *line)
+print_hex_data_line_ps(FILE *fh, u_char *line)
 {
        u_char psline[MAX_LINE_LENGTH];
 
        ps_clean_string(psline, line, MAX_LINE_LENGTH);
-       fprintf(fh, "(%04x  %s) hexdump\n", ad, psline);
+       fprintf(fh, "(%s) hexdump\n", psline);
 }
 
 static
@@ -419,7 +413,7 @@ void print_hex_data_ps(FILE *fh, register const u_char *cp,
                register u_int length, char_enc encoding)
 {
        print_hex_data_common(fh, cp, length, encoding,
-           print_ps_hex, print_hex_data_line_ps, NULL);
+           print_ps_hex, print_hex_data_line_ps);
 }
 
 void print_line(FILE *fh, gint format, char *line)
index 1b6528a..deb99d8 100644 (file)
--- a/print.ps
+++ b/print.ps
@@ -8,7 +8,7 @@
 %!PS-Adobe-2.0
 %
 % Ethereal - Network traffic analyzer
-% By Gerald Combs <gerald@zing.org>
+% By Gerald Combs <gerald@ethereal.com>
 % Copyright 1998 Gerald Combs
 %
 %%Creator: Ethereal
@@ -126,21 +126,21 @@ pop pop           % junk
 % ---- ethereal hex start ---- %
 % Set the font to 10 point
 /Courier findfont 10 scalefont setfont
-() hexdump
 % ---- ethereal hex end ---- %
 
-(   0  cc00 0000 0000 0702 0000 0000 0000 0000   ................ ) hexdump
-(  10  0000 bd0e fe16 0100 3e00 0308 584c 2038   ........>...XL 8 ) hexdump
-(  20  3020 494d 3300 1601 0034 0016 0101 3500   0 IM3....4....5. ) hexdump
-(  30  1601 0236 0016 0103 6e00 1601 ff6f 0016   ...6....n....o.. ) hexdump
-(  40  01ff 7000 1601 ff71 0016 01ff 4800 0104   ..p....q....H... ) hexdump
-(  50  ff03 0700 2400 0101 0525 0001 0105 2600   ....$....%....&. ) hexdump
-(  60  0101 0527 0001 0105 6a00 0101 006b 0001   ...'....j....k.. ) hexdump
-(  70  0100 6c00 0101 006d 0001 0100 3d00 0102   ..l....m....=... ) hexdump
-(  80  0200 c000 0308 8000 0000 0000 0000 b400   ................ ) hexdump
-(  90  0104 c0a8 42ef 3900 1608 0505 0505 0000   ....B.9......... ) hexdump
-(  a0  0000 0003 2036 4120 5269 6e67 0000 0000   .... 6A Ring.... ) hexdump
-(  b0  0000 0000 0000                            ......           ) hexdump
+() hexdump
+(0000  cc 00 00 00 00 00 07 02 00 00 00 00 00 00 00 00   ................ ) hexdump
+(0010  00 00 bd 0e fe 16 01 00 3e 00 03 08 58 4c 20 38   ........>...XL 8 ) hexdump
+(0020  30 20 49 4d 33 00 16 01 00 34 00 16 01 01 35 00   0 IM3....4....5. ) hexdump
+(0030  16 01 02 36 00 16 01 03 6e 00 16 01 ff 6f 00 16   ...6....n....o.. ) hexdump
+(0040  01 ff 70 00 16 01 ff 71 00 16 01 ff 48 00 01 04   ..p....q....H... ) hexdump
+(0050  ff 03 07 00 24 00 01 01 05 25 00 01 01 05 26 00   ....$....%....&. ) hexdump
+(0060  01 01 05 27 00 01 01 05 6a 00 01 01 00 6b 00 01   ...'....j....k.. ) hexdump
+(0070  01 00 6c 00 01 01 00 6d 00 01 01 00 3d 00 01 02   ..l....m....=... ) hexdump
+(0080  02 00 c0 00 03 08 80 00 00 00 00 00 00 00 b4 00   ................ ) hexdump
+(0090  01 04 c0 a8 42 ef 39 00 16 08 05 05 05 05 00 00   ....B.9......... ) hexdump
+(00a0  00 00 00 03 20 36 41 20 52 69 6e 67 00 00 00 00   .... 6A Ring.... ) hexdump
+(00b0  00 00 00 00 00 00                                 ......           ) hexdump
 
 % ---- ethereal finale start ---- %
 % If this is not the first page, then print the page number