X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=dump.c;h=5534255cd5ac341c1a1233a5e4000d0e2046d851;hb=51d95c9973523ae12125692ae7e9d08b647fd63d;hp=3f8e8aaa54d7e5f3681bf632f5139aa422172a93;hpb=a0f46ae7d2a495bf490c7455c987e92372ec5024;p=pspp diff --git a/dump.c b/dump.c index 3f8e8aaa54..5534255cd5 100644 --- a/dump.c +++ b/dump.c @@ -227,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)) { @@ -257,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)) { @@ -275,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)) { @@ -289,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)) @@ -318,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(); @@ -327,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 @@ -362,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 @@ -560,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(); @@ -632,23 +562,8 @@ dump_title_value(int level) match_byte (0); match_byte (0); match_byte (0); - match_byte (0); - if (match_byte (3)) - { - get_string(); - dump_value_31(); - 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_value_31(); @@ -657,63 +572,6 @@ dump_title_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_value_31(); - 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_value_31(); @@ -752,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) { @@ -816,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)) @@ -833,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); @@ -903,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'); } }