DO REPEAT: Order PRINT output correctly.
[pspp] / src / output / journal.c
index 2dd1925843c84a595a6c247292014a9b2229fcbe..f708e6d787cb40b9090af06e552a6b79c9892dbd 100644 (file)
@@ -115,12 +115,14 @@ journal_submit (struct output_driver *driver, const struct output_item *item)
         journal_output (j, text_item_get_plain_text (item));
       break;
 
+    case OUTPUT_ITEM_GROUP:
+      for (size_t i = 0; i < item->group.n_children; i++)
+        journal_submit (driver, item->group.children[i]);
+      break;
+
     case OUTPUT_ITEM_CHART:
-    case OUTPUT_ITEM_GROUP_OPEN:
-    case OUTPUT_ITEM_GROUP_CLOSE:
     case OUTPUT_ITEM_IMAGE:
     case OUTPUT_ITEM_PAGE_BREAK:
-    case OUTPUT_ITEM_PAGE_SETUP:
     case OUTPUT_ITEM_TABLE:
       break;
     }
@@ -128,28 +130,26 @@ journal_submit (struct output_driver *driver, const struct output_item *item)
 
 static const struct output_driver_class journal_class =
   {
-    "journal",
-    journal_destroy,
-    journal_submit,
-    NULL                        /* flush */
+    .name = "journal",
+    .destroy = journal_destroy,
+    .submit = journal_submit,
   };
-
 \f
 
 /* Enables journaling. */
 void
 journal_init (void)
 {
-  /* Create journal driver. */
-  output_driver_init (&journal.driver, &journal_class, "journal",
-                     SETTINGS_DEVICE_UNFILTERED);
-  journal.file = NULL;
+  journal = (struct journal_driver) {
+    .driver = {
+      .class = &journal_class,
+      .name = xstrdup ("journal"),
+      .device_type = SETTINGS_DEVICE_UNFILTERED,
+    }
+  };
 
-  /* Register journal driver. */
   output_driver_register (&journal.driver);
-
   journal_enable ();
-  journal.destroyed = false;
 }
 
 /* Disables journaling. */