Fixed bug importing ODS files.
authorJohn Darrington <john@darrington.wattle.id.au>
Sat, 22 Feb 2014 14:07:31 +0000 (15:07 +0100)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 22 Feb 2014 14:07:31 +0000 (15:07 +0100)
There was a typo which caused the import of ODS files in the gui to
not properly function.  This change fixes the typo, but also re-arranges
the code such that similar errors are less likely to go unnoticed in the
future.  It also brings the code more in concord with the GNU Coding
Standards (which were written that way exactly to prevent these errors).

Fixes bug #41657

NEWS
src/data/spreadsheet-reader.c

diff --git a/NEWS b/NEWS
index 6949019e585c26e5b0d736e4cf23d77a316e15e0..fba979bee65c64f26e2e7c81f0fb6923289009de 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -19,6 +19,9 @@ Changes since 0.8.2:
 
    - A problem with the Means dialog has been resolved (bug #41433).
 
+   - Several problems related to the input of spreadsheets have been
+     fixed (bug #41657, #41620
+
  * System file related improvements:
 
    - With ENCODING="DETECT", SYSFILE INFO can now help the user to
index 294b93cec5d3f5190d5bddde902ea6e0c0d273d5..3c5de65822fa5f231fa6d09d0885ba54bcffca52 100644 (file)
 #include <gl/c-xvasprintf.h>
 #include <stdlib.h>
 
+#ifdef ODF_READ_SUPPORT
+const bool ODF_READING_SUPPORTED = true;
+#else
+const bool ODF_READING_SUPPORTED = false;
+#endif
+
+#ifdef GNM_READ_SUPPORT
+const bool GNM_READING_SUPPORTED = true;
+#else
+const bool GNM_READING_SUPPORTED = false;
+#endif
 
 void 
 spreadsheet_destroy (struct spreadsheet *s)
 {
   switch (s->type)
     {
-#ifdef ODF_READ_SUPPORT
     case SPREADSHEET_ODS:
+      assert (ODF_READING_SUPPORTED);
       ods_destroy (s);
       break;
-#endif
-#ifdef GNM_READ_SUPPORT
+
     case SPREADSHEET_GNUMERIC:
+      assert (GNM_READING_SUPPORTED);
       gnumeric_destroy (s);
       break;
-#endif
     default:
       NOT_REACHED ();
       break;
@@ -53,17 +63,16 @@ spreadsheet_destroy (struct spreadsheet *s)
 
 
 struct casereader * 
-spreadsheet_make_reader (struct spreadsheet *s UNUSED,
-                         const struct spreadsheet_read_options *opts UNUSED)
+spreadsheet_make_reader (struct spreadsheet *s,
+                         const struct spreadsheet_read_options *opts)
 {
-#ifdef ODS_READ_SUPPORT
-  if ( s->type == SPREADSHEET_ODS)
-    return ods_make_reader (s, opts);
-#endif
-#ifdef GNM_READ_SUPPORT
-  if ( s->type == SPREADSHEET_GNUMERIC)
-    return gnumeric_make_reader (s, opts);
-#endif
+  if (ODF_READING_SUPPORTED)
+    if ( s->type == SPREADSHEET_ODS)
+      return ods_make_reader (s, opts);
+
+  if (GNM_READING_SUPPORTED)
+    if ( s->type == SPREADSHEET_GNUMERIC)
+      return gnumeric_make_reader (s, opts);
 
   return NULL;
 }
@@ -71,30 +80,28 @@ spreadsheet_make_reader (struct spreadsheet *s UNUSED,
 const char * 
 spreadsheet_get_sheet_name (struct spreadsheet *s, int n)
 {
-#ifdef ODF_READ_SUPPORT
-  if ( s->type == SPREADSHEET_ODS)
-    return ods_get_sheet_name (s, n);
-#endif
-#ifdef GNM_READ_SUPPORT
-  if ( s->type == SPREADSHEET_GNUMERIC)
-    return gnumeric_get_sheet_name (s, n);
-#endif
+  if (ODF_READING_SUPPORTED)
+    if ( s->type == SPREADSHEET_ODS)
+      return ods_get_sheet_name (s, n);
+
+  if (GNM_READING_SUPPORTED)
+    if ( s->type == SPREADSHEET_GNUMERIC)
+      return gnumeric_get_sheet_name (s, n);
 
   return NULL;
 }
 
+
 char * 
 spreadsheet_get_sheet_range (struct spreadsheet *s, int n)
 {
-#ifdef ODF_READ_SUPPORT
-  if ( s->type == SPREADSHEET_ODS)
-    return ods_get_sheet_range (s, n);
-#endif
+  if (ODF_READING_SUPPORTED)
+    if ( s->type == SPREADSHEET_ODS)
+      return ods_get_sheet_range (s, n);
 
-#ifdef GNM_READ_SUPPORT
-  if ( s->type == SPREADSHEET_GNUMERIC)
-    return gnumeric_get_sheet_range (s, n);
-#endif
+  if (GNM_READING_SUPPORTED)
+    if ( s->type == SPREADSHEET_GNUMERIC)
+      return gnumeric_get_sheet_range (s, n);
 
   return NULL;
 }