From ea5c4e8eb004d6414d03b65bd3407cc7ad3e2dfd Mon Sep 17 00:00:00 2001 From: John Darrington Date: Sat, 22 Feb 2014 15:07:31 +0100 Subject: [PATCH] Fixed bug importing ODS files. 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 | 3 ++ src/data/spreadsheet-reader.c | 67 +++++++++++++++++++---------------- 2 files changed, 40 insertions(+), 30 deletions(-) diff --git a/NEWS b/NEWS index 6949019e58..fba979bee6 100644 --- 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 diff --git a/src/data/spreadsheet-reader.c b/src/data/spreadsheet-reader.c index 294b93cec5..3c5de65822 100644 --- a/src/data/spreadsheet-reader.c +++ b/src/data/spreadsheet-reader.c @@ -29,22 +29,32 @@ #include #include +#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; } -- 2.30.2