Improved the autoconf test for xmllint
[pspp] / src / output / odt.c
index d0860585cd40c35219bfad9533803770e74613bd..521e5b877fd1f905681ce9f3c67cbf384f1acdaa 100644 (file)
@@ -36,6 +36,7 @@
 #include "libpspp/temp-file.h"
 #include "libpspp/version.h"
 #include "libpspp/zip-writer.h"
+#include "data/file-handle-def.h"
 #include "output/driver-provider.h"
 #include "output/message-item.h"
 #include "output/options.h"
@@ -244,7 +245,7 @@ write_meta_data (struct odt_driver *odt)
   xmlTextWriterStartElement (w, _xml ("office:meta"));
   {
     xmlTextWriterStartElement (w, _xml ("meta:generator"));
-    xmlTextWriterWriteString (w, _xml (stat_version));
+    xmlTextWriterWriteString (w, _xml (version));
     xmlTextWriterEndElement (w);
   }
 
@@ -290,12 +291,13 @@ write_meta_data (struct odt_driver *odt)
 }
 
 static struct output_driver *
-odt_create (const char *file_name, enum settings_output_devices device_type,
+odt_create (struct file_handle *fh, enum settings_output_devices device_type,
             struct string_map *o UNUSED)
 {
   struct output_driver *d;
   struct odt_driver *odt;
   struct zip_writer *zip;
+  const char *file_name = fh_get_file_name (fh);
 
   zip = zip_writer_create (file_name);
   if (zip == NULL)
@@ -303,6 +305,7 @@ odt_create (const char *file_name, enum settings_output_devices device_type,
 
   odt = xzalloc (sizeof *odt);
   d = &odt->driver;
+
   output_driver_init (d, &odt_driver_class, file_name, device_type);
 
   odt->zip = zip;
@@ -455,16 +458,17 @@ write_table (struct odt_driver *odt, const struct table_item *item)
 {
   const struct table *tab = table_item_get_table (item);
   const char *caption = table_item_get_caption (item);
+  const char *title = table_item_get_title (item);
   int r, c;
 
   /* Write a heading for the table */
-  if (caption != NULL)
+  if (title != NULL)
     {
       xmlTextWriterStartElement (odt->content_wtr, _xml("text:h"));
       xmlTextWriterWriteFormatAttribute (odt->content_wtr,
                                          _xml("text:outline-level"), "%d", 2);
       xmlTextWriterWriteString (odt->content_wtr,
-                                _xml (table_item_get_caption (item)) );
+                                _xml (table_item_get_title (item)) );
       xmlTextWriterEndElement (odt->content_wtr);
     }
 
@@ -560,6 +564,18 @@ write_table (struct odt_driver *odt, const struct table_item *item)
     }
 
   xmlTextWriterEndElement (odt->content_wtr); /* table */
+
+  /* Write a caption for the table */
+  if (caption != NULL)
+    {
+      xmlTextWriterStartElement (odt->content_wtr, _xml("text:h"));
+      xmlTextWriterWriteFormatAttribute (odt->content_wtr,
+                                         _xml("text:outline-level"), "%d", 2);
+      xmlTextWriterWriteString (odt->content_wtr,
+                                _xml (table_item_get_caption (item)) );
+      xmlTextWriterEndElement (odt->content_wtr);
+    }
+
 }
 
 static void