Fixed all of the cases with 0 1 1 0 1.
[pspp] / dump.c
diff --git a/dump.c b/dump.c
index 7dd86feb89b0a88061ea0e7f3b8106c7736e691c..952cf7336e3eb921e423a62d4ef8a6041bbb4222 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -745,6 +745,37 @@ dump_data(void)
           printf("string \"%s\"", get_string());
           match_byte (0);
         }
+      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);
+        }
+      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);
+        }
       else
         dump_value(0);
       putchar('\n');