Work on improving distinction between groups and categories.
[pspp] / dump.c
diff --git a/dump.c b/dump.c
index e37202000c64f310a309f872ccbbd0ae2f46cc96..65955d81995b16e50c631e430ee33fe95cf485d1 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -575,26 +575,32 @@ dump_category(int level, int *indexes, int *n_indexes, int max_indexes)
     fprintf (stdout, "    ");
   printf ("<category>\n");
   dump_value (stdout, level + 1);
+
+  int start = pos;
+  int d0 = data[pos];
   match_byte(1);
-  match_byte(0);
-  match_byte(0);
-  match_byte(0);
+  int c = 0;
+  c += match_byte(0);
+  c += match_byte(0);
+  c += match_byte(0);
 
+  int d1 = data[pos];
+  int d2 = 9;
   if (match_byte (1))
     {
-      if (!match_byte (0) && !match_byte (1))
-        match_byte_assert (2);
+      d2 = data[pos];
+      if (!match_u32 (0) && !match_u32 (1))
+        match_u32_assert (2);
     }
-  else if (!match_byte (2))
-    match_byte_assert (0);
-  match_byte_assert (0);
-  match_byte_assert (0);
-  match_byte_assert (0);
+  else
+    match_u32_assert (2);
+  int len = pos - start;
 
   int indx = get_u32();
   int n_categories = get_u32();
   if (indx != -1)
     {
+      fprintf (stderr, "category %d %d %d %d %d:", d0, c, d1, d2, len);
       if (n_categories != 0)
         {
           fprintf(stderr, "index not -1 but subcategories\n");
@@ -607,6 +613,12 @@ dump_category(int level, int *indexes, int *n_indexes, int max_indexes)
         }
       indexes[(*n_indexes)++] = indx;
     }
+  else
+    fprintf (stderr, "group    %d %d %d %d %d:", d0, c, d1, d2, len);
+  for (int i = 0; i < len; i++)
+    fprintf (stderr, " %02x", data[start + i]);
+  putc ('\n', stderr);
+
   if (n_categories == 0)
     {
       for (int i = 0; i <= level + 1; i++)