From 0fa989f51b9e9246a4bcb41a23b549401aeff5f4 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sun, 26 Jul 2015 22:02:12 -0700 Subject: [PATCH] dump: Make raw dumps include file offsets. --- dump.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/dump.c b/dump.c index 8ec7e56ae1..a600e41ae7 100644 --- 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; } -- 2.30.2