From: Ben Pfaff Date: Fri, 7 Nov 2014 03:43:26 +0000 (-0800) Subject: Generalize dump_footnote_value(). X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=46f931ba298a3649df8b2e4616a7a9bf4fce4b8d;p=pspp Generalize dump_footnote_value(). --- diff --git a/dump.c b/dump.c index b33b824228..cdd666c07c 100644 --- a/dump.c +++ b/dump.c @@ -894,6 +894,60 @@ dump_title_value(int level) } } +static void +dump_footnote_value_31(void) +{ + if (match_byte (0x31)) + { + if (match_u32 (0)) + { + + match_u32_assert (0); + int subn = get_u32 (); + printf ("nested %d bytes", subn); + pos += subn; + } + 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 (2)) + { + printf("(special 2)"); + match_byte_assert(0); + match_byte_assert(0); + match_u32_assert(1); + match_byte_assert(0); + match_byte_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; + } + } + else + match_byte_assert (0x58); +} + static void dump_footnote_value(int level) { @@ -907,47 +961,7 @@ dump_footnote_value(int level) if (match_byte (3)) { get_string(); - if (match_byte (0x31)) - { - 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 (2)) - { - printf("(special 2)"); - match_byte_assert(0); - match_byte_assert(0); - match_u32_assert(1); - match_byte_assert(0); - match_byte_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; - } - } - else - match_byte_assert (0x58); + dump_footnote_value_31(); get_string(); printf("string \"%s\"", get_string()); if (!match_byte (0)) @@ -1008,43 +1022,14 @@ dump_footnote_value(int level) unsigned int format; double value; - if (match_byte (0x31)) - { - 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 - match_byte_assert (0x58); + dump_footnote_value_31(); format = get_u32 (); value = get_double (); printf ("value %g format %d(%d.%d)", value, format >> 16, (format >> 8) & 0xff, format & 0xff); } - 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 - { - match_u32_assert (0); - match_u32_assert (0); - int subn = get_u32 (); - printf ("nested %d bytes", subn); - pos += subn; - } + dump_footnote_value_31(); char *base = get_string(); int x = get_u32(); printf ("\"%s\"; %d variables:\n", base, x); @@ -1078,42 +1063,6 @@ dump_footnote_value(int level) } } } - else - { - - match_byte_assert (0x58); - char *base = get_string(); - int x = get_u32(); - printf ("\"%s\" with %d variables:\n", base, x); - for (int i = 0; i < x; i++) - { - int y = get_u32(); - if (!y) - y = 1; - 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_assert(0); - } - else - dump_footnote_value (level+1); - putchar('\n'); - } - } - } } static void