From ad71f436f467aeb25c88b0ef6fac31c31a839e11 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Thu, 6 Nov 2014 19:11:36 -0800 Subject: [PATCH] Generalize special cases in dump_title_value(). --- dump.c | 97 ++++++++++++++++++++-------------------------------------- 1 file changed, 34 insertions(+), 63 deletions(-) diff --git a/dump.c b/dump.c index 58dbd498b4..e6d2369a80 100644 --- a/dump.c +++ b/dump.c @@ -1166,75 +1166,46 @@ dump_title_value(int level) match_byte (0); match_byte (1); } - else if (match_byte (0x31)) + else { - if (match_u32 (1)) - { - printf("(footnote %d) ", get_u32()); - match_byte_assert (0); - match_byte_assert (0); - int subn = get_u32 (); - printf ("nested %d bytes", subn); - pos += subn; - } - else if (match_u32 (0)) - { - match_u32_assert (0); - int subn = get_u32 (); - printf ("nested %d bytes", subn); - pos += subn; - } - else - { - match_u32_assert(3); - printf("(special 3)"); - match_byte_assert(0); - match_byte_assert(0); - match_byte_assert(1); - match_byte_assert(0); - int subn = get_u32 (); - printf ("nested %d bytes, ", subn); - pos += subn; - subn = get_u32 (); - printf ("nested %d bytes, ", subn); - pos += subn; - } - - char *base = get_string(); - int x = get_u32(); - printf ("\"%s\"; %d variables:\n", base, x); - for (int i = 0; i < x; i++) + if (match_byte (0x31)) { - int y = get_u32(); - if (!y) - y = 1; + if (match_u32 (1)) + { + printf("(footnote %d) ", get_u32()); + match_byte_assert (0); + match_byte_assert (0); + int subn = get_u32 (); + printf ("nested %d bytes", subn); + pos += subn; + } + else if (match_u32 (0)) + { + match_u32_assert (0); + int subn = get_u32 (); + printf ("nested %d bytes", subn); + pos += subn; + } else - match_u32_assert(0); - for (int j = 0; j <= level; j++) - printf (" "); - printf("variable %d has %d values:\n", i, y); - for (int j = 0; j < y; j++) { - if (match_byte(3)) - { - char *a = get_string(); - match_byte_assert(0x58); - char *b = get_string(); - char *c = get_string(); - for (int k = 0; k <= level + 1; k++) - printf (" "); - printf ("\"%s\", \"%s\", \"%s\"", a, b, c); - match_byte(0); - } - else - dump_title_value (level+1); - putchar('\n'); + match_u32_assert(3); + printf("(special 3)"); + match_byte_assert(0); + match_byte_assert(0); + match_byte_assert(1); + match_byte_assert(0); + int subn = get_u32 (); + printf ("nested %d bytes, ", subn); + pos += subn; + subn = get_u32 (); + printf ("nested %d bytes, ", subn); + pos += subn; } + } - } - else - { - match_byte_assert (0x58); + else + match_byte_assert (0x58); + char *base = get_string(); int x = get_u32(); printf ("\"%s\" with %d variables:\n", base, x); -- 2.30.2