dump: Make raw dumps include file offsets.
authorBen Pfaff <blp@cs.stanford.edu>
Mon, 27 Jul 2015 05:02:12 +0000 (22:02 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Mon, 27 Jul 2015 05:07:11 +0000 (22:07 -0700)
dump.c

diff --git a/dump.c b/dump.c
index 8ec7e56ae1c8335ddf92ae995dba1748e4c46baf..a600e41ae772ec15b72cc18727fa5b2b9efce15f 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -107,7 +107,13 @@ match_byte_assert(uint8_t b, const char *where)
 #define match_byte_assert(b) match_byte_assert(b, WHERE)
 
 static void
-dump_raw(FILE *stream, int start, int end, const char *separator)
+newline(FILE *stream, int pos)
+{
+  fprintf(stream, "\n%08x: ", pos);
+}
+
+static void
+dump_raw(FILE *stream, int start, int end)
 {
   for (size_t i = start; i < end; )
     {
@@ -119,7 +125,8 @@ dump_raw(FILE *stream, int start, int end, const char *separator)
           && i + 4 + data[i] + data[i + 1] * 256 <= end
           && all_ascii(&data[i + 4], data[i] + data[i + 1] * 256))
         {
-          fprintf(stream, "%s\"", separator);
+          newline(stream, i);
+          fprintf(stream, "\"");
           fwrite(&data[i + 4], 1, data[i] + data[i + 1] * 256, stream);
           fputs("\" ", stream);
 
@@ -133,8 +140,9 @@ dump_raw(FILE *stream, int start, int end, const char *separator)
           double d;
 
           memcpy (&d, &data[i + 4], 8);
-          fprintf (stream, "F40.%d(%.*f)%s", data[i], data[i], d, separator);
+          fprintf (stream, "F40.%d(%.*f)", data[i], data[i], d);
           i += 12;
+          newline (stream, i);
         }
       else if (i + 12 <= end
                && data[i + 1] == 40
@@ -144,8 +152,9 @@ dump_raw(FILE *stream, int start, int end, const char *separator)
           double d;
 
           memcpy (&d, &data[i + 4], 8);
-          fprintf (stream, "PCT40.%d(%.*f)%s", data[i], data[i], d, separator);
+          fprintf (stream, "PCT40.%d(%.*f)", data[i], data[i], d);
           i += 12;
+          newline(stream, i);
         }
       else if (i + 4 <= end
                && (data[i] && data[i] != 88 && data[i] != 0x41)
@@ -871,7 +880,7 @@ main(int argc, char *argv[])
   else
     start = 0x27;
 
-  dump_raw(stdout, start, n, "\n");
+  dump_raw(stdout, start, n);
 
   return 0;
 }