X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=dump.c;h=5534255cd5ac341c1a1233a5e4000d0e2046d851;hb=51d95c9973523ae12125692ae7e9d08b647fd63d;hp=e2b1aa0ff6fe0992d17026b17d9fe26c631eda63;hpb=987e600045f0f0cc99f67a860fce9d32b034979e;p=pspp diff --git a/dump.c b/dump.c index e2b1aa0ff6..5534255cd5 100644 --- a/dump.c +++ b/dump.c @@ -176,7 +176,8 @@ dump_value_31(void) printf("(special 2)"); match_byte_assert(0); match_byte_assert(0); - match_u32_assert(1); + if (!match_u32 (2)) + match_u32_assert(1); match_byte_assert(0); match_byte_assert(0); int subn = get_u32 (); @@ -226,20 +227,14 @@ dump_value(int level) match_byte (0); match_byte (1); match_byte (1); - match_byte (0); - match_byte (0); - match_byte (0); } else if (match_byte (5)) { - match_byte_assert (0x58); + dump_value_31(); printf ("variable \"%s\"", get_string()); get_string(); if (!match_byte(1) && !match_byte(2)) match_byte_assert(3); - match_byte (0); - match_byte (0); - match_byte (0); } else if (match_byte (2)) { @@ -256,9 +251,6 @@ dump_value(int level) value, format >> 16, (format >> 8) & 0xff, format & 0xff, var, vallab); if (!match_byte (1) && !match_byte(2)) match_byte_assert (3); - match_byte (0); - match_byte (0); - match_byte (0); } else if (match_byte (4)) { @@ -274,9 +266,6 @@ dump_value(int level) value = get_string (); printf ("value \"%s\" format %d(%d.%d) var \"%s\" vallab \"%s\"", value, format >> 16, (format >> 8) & 0xff, format & 0xff, var, vallab); - match_byte (0); - match_byte (0); - match_byte (0); } else if (match_byte (1)) { @@ -288,14 +277,12 @@ dump_value(int level) value = get_double (); printf ("value %g format %d(%d.%d)", value, format >> 16, (format >> 8) & 0xff, format & 0xff); match_byte (1); - match_byte (0); - match_byte (0); - match_byte (0); } else { dump_value_31(); char *base = get_string(); + int x = get_u32(); printf ("\"%s\" with %d variables:\n", base, x); if (match_u32(0)) @@ -317,6 +304,7 @@ dump_value(int level) printf("variable %d has %d values:\n", i, y); for (int j = 0; j < y; j++) { + match_byte(0); if (match_byte(3)) { char *a = get_string(); @@ -326,19 +314,22 @@ dump_value(int level) for (int k = 0; k <= level + 1; k++) printf (" "); printf ("\"%s\", \"%s\", \"%s\"", a, b, c); - match_byte(0); - match_byte(0); - match_byte(0); - match_byte(0); - match_byte(0); } else dump_value (level+1); + + match_byte(0); + match_byte(0); + match_byte(0); + match_byte(0); putchar('\n'); } } } } + match_byte(0); + match_byte(0); + match_byte(0); } static void @@ -361,61 +352,11 @@ dump_dim_value(int level) match_byte_assert (0x58); printf ("variable \"%s\"", get_string()); get_string(); - if (!match_byte (2)) + if (!match_byte (1) && !match_byte (2)) match_byte_assert(3); } - else if (match_byte (2)) - { - unsigned int format; - char *var, *vallab; - double value; - - match_byte_assert (0x58); - format = get_u32 (); - value = get_double (); - var = get_string (); - vallab = get_string (); - printf ("value %g format %d(%d.%d) var \"%s\" vallab \"%s\"", - value, format >> 16, (format >> 8) & 0xff, format & 0xff, var, vallab); - if (!match_u32 (3)) - match_u32_assert (2); - match_byte (0); - } - else if (match_byte (1)) - { - unsigned int format; - double value; - - match_byte_assert (0x58); - format = get_u32 (); - value = get_double (); - printf ("value %g format %d(%d.%d)", value, format >> 16, (format >> 8) & 0xff, format & 0xff); - match_byte (1); - match_byte (0); - match_byte (0); - match_byte (0); - match_byte (1); - } else - { - match_byte (0); - dump_value_31(); - printf ("; \"%s\", substitutions:", get_string()); - int total_subs = get_u32(); - int x = get_u32(); - if (x) - { - total_subs = (total_subs - 1) + x; - match_u32_assert (0); - } - printf (" (total %d)", total_subs); - - for (int i = 0; i < total_subs; i++) - { - putc ('\n', stdout); - dump_value (level + 1); - } - } + dump_value(level); } static void @@ -559,18 +500,8 @@ dump_data_value(void) printf ("value \"%s\" format %d(%d.%d) var \"%s\" vallab \"%s\"", value, format >> 16, (format >> 8) & 0xff, format & 0xff, var, vallab); } - else if (match_byte (5)) - { - match_byte_assert (0x58); - printf ("variable \"%s\"", get_string()); - get_string(); - if (!match_byte(1) && !match_byte(2)) - match_byte_assert(3); - match_byte (0); - match_byte (0); - match_byte (0); - match_byte (0); - } + else if (data[pos] == 5) + dump_value (0); else { dump_value_31(); @@ -621,60 +552,6 @@ dump_data(void) } } -static void -dump_title_value_31(int level) -{ - 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); - if (!match_u32(2)) - 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_title_value(int level) { @@ -685,91 +562,19 @@ dump_title_value(int level) match_byte (0); match_byte (0); match_byte (0); - match_byte (0); - if (match_byte (3)) - { - get_string(); - dump_title_value_31(level); - get_string(); - printf("string \"%s\"", get_string()); - match_byte (0); - match_byte (0); - match_byte (0); - match_byte (1); - match_byte (1); - match_byte (0); - match_byte (0); - match_byte (0); - match_byte (1); - } + if (data[pos] == 3 || data[pos] == 2 || data[pos] == 4 || data[pos] == 1) + dump_value(level); else if (match_byte (5)) { - dump_title_value_31(level); + dump_value_31(); printf ("variable \"%s\"", get_string()); get_string(); if (!match_byte(1) && !match_byte(2)) match_byte_assert(3); } - else if (match_byte (2)) - { - unsigned int format; - char *var, *vallab; - double value; - - match_byte_assert (0x58); - format = get_u32 (); - value = get_double (); - var = get_string (); - vallab = get_string (); - printf ("value %g format %d(%d.%d) var \"%s\" vallab \"%s\"", - value, format >> 16, (format >> 8) & 0xff, format & 0xff, var, vallab); - if (!match_byte (1) && !match_byte(2)) - match_byte_assert (3); - match_byte (0); - match_byte (0); - match_byte (0); - match_byte (0); - match_byte (0); - match_byte (0); - match_byte (0); - } - else if (match_byte (4)) - { - unsigned int format; - char *var, *vallab, *value; - - match_byte_assert (0x58); - format = get_u32 (); - vallab = get_string (); - var = get_string (); - if (!match_byte(1) && !match_byte(2)) - match_byte_assert (3); - value = get_string (); - printf ("value \"%s\" format %d(%d.%d) var \"%s\" vallab \"%s\"", - value, format >> 16, (format >> 8) & 0xff, format & 0xff, var, vallab); - match_byte (0); - match_byte (0); - match_byte (0); - match_byte (0); - } - else if (match_byte (1)) - { - unsigned int format; - double value; - - dump_title_value_31(level); - format = get_u32 (); - value = get_double (); - printf ("value %g format %d(%d.%d)", value, format >> 16, (format >> 8) & 0xff, format & 0xff); - match_byte (1); - match_byte (0); - match_byte (0); - match_byte (0); - match_byte (1); - } else { - dump_title_value_31(level); + dump_value_31(); char *base = get_string(); int x = get_u32(); @@ -805,60 +610,6 @@ 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) { @@ -869,10 +620,12 @@ dump_footnote_value(int level) match_byte (0); match_byte (0); match_byte (0); - if (match_byte (3)) + if (data[pos] == 2 || data[pos] == 4) + dump_value(level); + else if (match_byte (3)) { get_string(); - dump_footnote_value_31(); + dump_value_31(); get_string(); printf("string \"%s\"", get_string()); if (!match_byte (0)) @@ -886,61 +639,19 @@ dump_footnote_value(int level) if (!match_byte(1) && !match_byte(2)) match_byte_assert(3); } - else if (match_byte (2)) - { - unsigned int format; - char *var, *vallab; - double value; - - match_byte_assert (0x58); - format = get_u32 (); - value = get_double (); - var = get_string (); - vallab = get_string (); - printf ("value %g format %d(%d.%d) var \"%s\" vallab \"%s\"", - value, format >> 16, (format >> 8) & 0xff, format & 0xff, var, vallab); - if (!match_byte (1) && !match_byte(2)) - match_byte_assert (3); - match_byte (0); - match_byte (0); - match_byte (0); - match_byte (0); - match_byte (0); - match_byte (0); - match_byte (0); - } - else if (match_byte (4)) - { - unsigned int format; - char *var, *vallab, *value; - - match_byte_assert (0x58); - format = get_u32 (); - vallab = get_string (); - var = get_string (); - if (!match_byte(1) && !match_byte(2)) - match_byte_assert (3); - value = get_string (); - printf ("value \"%s\" format %d(%d.%d) var \"%s\" vallab \"%s\"", - value, format >> 16, (format >> 8) & 0xff, format & 0xff, var, vallab); - match_byte (0); - match_byte (0); - match_byte (0); - match_byte (0); - } else if (match_byte (1)) { unsigned int format; double value; - dump_footnote_value_31(); + dump_value_31(); format = get_u32 (); value = get_double (); printf ("value %g format %d(%d.%d)", value, format >> 16, (format >> 8) & 0xff, format & 0xff); } else { - dump_footnote_value_31(); + dump_value_31(); char *base = get_string(); int x = get_u32(); printf ("\"%s\"; %d variables:\n", base, x); @@ -956,20 +667,7 @@ dump_footnote_value(int level) 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); - if (!match_byte(1)) - match_byte_assert(0); - } - else - dump_footnote_value (level+1); + dump_footnote_value (level+1); putchar('\n'); } }