#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; )
{
&& 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);
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
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)
if (match_byte(0x31))
{
/* Only one example in the corpus. */
+ match_byte(1);
match_byte(0);
match_byte(0);
match_byte(0);
get_string(); /* foreground */
get_string(); /* background */
get_string(); /* font */
- match_byte_assert(12); /* size? */
+ if (!match_byte(14))
+ match_byte_assert(12); /* size? */
+ }
+ else
+ match_byte_assert(0x58);
+ if (match_byte(0x31))
+ {
+ /* All the examples in the corpus, all from one SPV file, are
+ exactly like this. */
+ match_u32_assert(0);
+ match_u32_assert(0);
+ match_u32_assert(0);
+ match_u32_assert(0);
+ match_byte_assert(1);
+ match_byte_assert(0);
+ match_byte_assert(8);
+ match_byte_assert(0);
+ match_byte_assert(8);
+ match_byte_assert(0);
+ match_byte_assert(10);
+ match_byte_assert(0);
}
else
match_byte_assert(0x58);
- match_byte_assert(0x58);
if (pos != outer_end)
{
fprintf(stderr, "outer end discrepancy\n");
match_byte_assert(0);
if (!match_byte(0))
match_byte_assert(1);
- if (!match_byte(0x99) && !match_byte(0x98))
- match_byte_assert(0x97);
+ if (!match_byte(0x97) && !match_byte(0x98) && !match_byte(0x99))
+ match_byte_assert(0x9a);
match_byte_assert(7);
match_byte_assert(0);
match_byte_assert(0);
else
start = 0x27;
- dump_raw(stdout, start, n, "\n");
+ dump_raw(stdout, start, n);
return 0;
}