From: Ben Pfaff Date: Fri, 7 Nov 2014 03:32:10 +0000 (-0800) Subject: Generalize dump_dim(). X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pspp;a=commitdiff_plain;h=596963f19809c5a1cfa8f387299570a1b6395ddd Generalize dump_dim(). --- diff --git a/dump.c b/dump.c index ff5dcfd4e2..c89fe1f493 100644 --- a/dump.c +++ b/dump.c @@ -383,7 +383,8 @@ dump_dim_value(int level) match_byte_assert (0x58); printf ("variable \"%s\"", get_string()); get_string(); - match_byte_assert (2); + if (!match_byte (2)) + match_byte_assert(3); } else if (match_byte (2)) { @@ -422,12 +423,16 @@ dump_dim_value(int level) int subn; match_byte (0); - match_byte_assert (0x31); - match_u32_assert (0); - match_u32_assert (0); - subn = get_u32 (); - printf ("nested %d bytes", subn); - pos += subn; + if (match_byte (0x31)) + { + match_u32_assert (0); + match_u32_assert (0); + subn = get_u32 (); + printf ("nested %d bytes", subn); + pos += subn; + } + else + match_byte_assert(0x58); printf ("; \"%s\", substitutions:", get_string()); int total_subs = get_u32(); int x = get_u32(); @@ -500,61 +505,8 @@ dump_dim(void) printf("string \"%s\": ", get_string()); match_byte(1) || match_byte(0); } - else if (match_byte(5)) - { - match_byte_assert(0x58); - printf("variable \"%s\": ", get_string()); - get_string(); - if (!match_byte(2)) - match_byte_assert(3); - } - else if (match_byte(0x31)) - { - int subn; - int total_subs = 1; - - match_u32_assert (0); - match_u32_assert (0); - subn = get_u32 (); - printf ("nested %d bytes", subn); - pos += subn; - printf ("; \"%s\", substitutions:", get_string()); - for (;;) - { - int n_subst = get_u32(); - if (!n_subst) - break; - printf (" %d", n_subst); - total_subs *= n_subst; - } - - for (int i = 0; i < total_subs; i++) - { - putc ('\n', stdout); - dump_dim_value (0); - } - } else - { - int total_subs = 1; - - match_byte_assert (0x58); - printf ("\"%s\" with substitutions:", get_string()); - for (;;) - { - int n_subst = get_u32(); - if (!n_subst) - break; - printf (" %d", n_subst); - total_subs *= n_subst; - } - - for (int i = 0; i < total_subs; i++) - { - putc ('\n', stdout); - dump_dim_value (0); - } - } + dump_dim_value(0); /* This byte is usually 0x02 but 0x00 and 0x75 (!) have also been spotted. */ pos++;