From 914de38795f84f8372fadfe100f5687f412c65e5 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Mon, 14 Jan 2013 18:42:47 +0100 Subject: [PATCH] Move file_name member from sri to spreadsheet struct --- src/data/gnumeric-reader.c | 5 +++-- src/data/ods-reader.c | 5 +++-- src/data/spreadsheet-reader.h | 3 ++- src/language/data-io/get-data.c | 15 +++++++-------- src/ui/gui/page-file.c | 6 ++---- src/ui/gui/page-sheet-spec.c | 2 -- 6 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/data/gnumeric-reader.c b/src/data/gnumeric-reader.c index 9bb961a459..e6e917cf49 100644 --- a/src/data/gnumeric-reader.c +++ b/src/data/gnumeric-reader.c @@ -347,6 +347,7 @@ gnumeric_probe (const char *filename) } r->spreadsheet.type = SPREADSHEET_GNUMERIC; + r->spreadsheet.file_name = filename; return &r->spreadsheet; } @@ -522,7 +523,7 @@ gnumeric_make_reader (struct spreadsheet *spreadsheet, if ( n_var_specs == 0 ) { msg (MW, _("Selected sheet or range of spreadsheet `%s' is empty."), - gri->file_name); + spreadsheet->file_name); goto error; } @@ -553,7 +554,7 @@ gnumeric_make_reader (struct spreadsheet *spreadsheet, if (opts->cell_range == NULL) { - opts->cell_range = c_xasprintf ("%c%d:%c%d", + opts->cell_range = c_xasprintf ("%c%d:%c%ld", r->start_col + 'A', r->start_row, r->stop_col + 'A' + caseproto_get_n_widths (r->proto), diff --git a/src/data/ods-reader.c b/src/data/ods-reader.c index 2ce4e7eb9b..d12223013c 100644 --- a/src/data/ods-reader.c +++ b/src/data/ods-reader.c @@ -408,6 +408,7 @@ struct spreadsheet *ods_probe (const char *filename) ds_destroy (&errs); + r->spreadsheet.file_name = filename; return &r->spreadsheet; error: @@ -483,7 +484,7 @@ ods_make_reader (struct spreadsheet *spreadsheet, if (ret < 1) { msg (MW, _("Selected sheet or range of spreadsheet `%s' is empty."), - gri->file_name); + spreadsheet->file_name); goto error; } @@ -598,7 +599,7 @@ ods_make_reader (struct spreadsheet *spreadsheet, if ( n_var_specs == 0 ) { msg (MW, _("Selected sheet or range of spreadsheet `%s' is empty."), - gri->file_name); + spreadsheet->file_name); goto error; } diff --git a/src/data/spreadsheet-reader.h b/src/data/spreadsheet-reader.h index 77ed5ab9db..f9a30209e4 100644 --- a/src/data/spreadsheet-reader.h +++ b/src/data/spreadsheet-reader.h @@ -36,7 +36,6 @@ struct spreadsheet_read_options struct spreadsheet_read_info { - char *file_name ; /* The name of the file to open (in filename encoding) */ bool read_names ; /* True if the first row is to be used as the names of the variables */ int asw ; /* The width of string variables in the created dictionary */ }; @@ -61,6 +60,8 @@ enum spreadsheet_type struct spreadsheet { + char *file_name; + enum spreadsheet_type type; /* The total number of sheets in the "workbook" */ diff --git a/src/language/data-io/get-data.c b/src/language/data-io/get-data.c index cca86a2bd8..26de745464 100644 --- a/src/language/data-io/get-data.c +++ b/src/language/data-io/get-data.c @@ -45,7 +45,7 @@ #define _(msgid) gettext (msgid) #define N_(msgid) (msgid) -static bool parse_spreadsheet (struct lexer *lexer, struct spreadsheet_read_info *sri, +static bool parse_spreadsheet (struct lexer *lexer, char **filename, struct spreadsheet_read_info *sri, struct spreadsheet_read_options *opts); static void destroy_spreadsheet_read_info (struct spreadsheet_read_info *, struct spreadsheet_read_options *); @@ -78,22 +78,23 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds) else if (lex_match_id (lexer, "GNM") || lex_match_id (lexer, "ODS")) { + char *filename = NULL; struct casereader *reader = NULL; struct dictionary *dict = NULL; struct spreadsheet_read_info sri; struct spreadsheet_read_options opts; - if (!parse_spreadsheet (lexer, &sri, &opts)) + if (!parse_spreadsheet (lexer, &filename, &sri, &opts)) goto error; if ( 0 == strncasecmp (tok, "GNM", 3)) { - struct spreadsheet *spreadsheet = gnumeric_probe (sri.file_name); + struct spreadsheet *spreadsheet = gnumeric_probe (filename); reader = gnumeric_make_reader (spreadsheet, &sri, &opts); dict = spreadsheet->dict; } else if (0 == strncasecmp (tok, "ODS", 3)) { - struct spreadsheet *spreadsheet = ods_probe (sri.file_name); + struct spreadsheet *spreadsheet = ods_probe (filename); reader = ods_make_reader (spreadsheet, &sri, &opts); dict = spreadsheet->dict; } @@ -193,7 +194,7 @@ parse_get_psql (struct lexer *lexer, struct dataset *ds) } static bool -parse_spreadsheet (struct lexer *lexer, struct spreadsheet_read_info *sri, +parse_spreadsheet (struct lexer *lexer, char **filename, struct spreadsheet_read_info *sri, struct spreadsheet_read_options *opts) { opts->sheet_index = 1; @@ -201,7 +202,6 @@ parse_spreadsheet (struct lexer *lexer, struct spreadsheet_read_info *sri, opts->cell_range = NULL; sri->read_names = true; sri->asw = -1; - sri->file_name = NULL; lex_force_match (lexer, T_SLASH); @@ -213,7 +213,7 @@ parse_spreadsheet (struct lexer *lexer, struct spreadsheet_read_info *sri, if (!lex_force_string (lexer)) goto error; - sri->file_name = utf8_to_filename (lex_tokcstr (lexer)); + *filename = utf8_to_filename (lex_tokcstr (lexer)); lex_get (lexer); @@ -676,5 +676,4 @@ destroy_spreadsheet_read_info (struct spreadsheet_read_info *sri, { free (opts->sheet_name); free (opts->cell_range); - free (sri->file_name); } diff --git a/src/ui/gui/page-file.c b/src/ui/gui/page-file.c index d8939149c4..c52171dfa8 100644 --- a/src/ui/gui/page-file.c +++ b/src/ui/gui/page-file.c @@ -149,19 +149,17 @@ init_file (struct import_assistant *ia, GtkWindow *parent_window) opts.cell_range = NULL; opts.sheet_index = 1; - sri.file_name = file->file_name; sri.read_names = true; sri.asw = -1; if (ssp->spreadsheet == NULL) - ssp->spreadsheet = gnumeric_probe (sri.file_name); + ssp->spreadsheet = gnumeric_probe (file->file_name); if (ssp->spreadsheet == NULL) - ssp->spreadsheet = ods_probe (sri.file_name); + ssp->spreadsheet = ods_probe (file->file_name); if (ssp->spreadsheet) { - // update_assistant (ia); } else diff --git a/src/ui/gui/page-sheet-spec.c b/src/ui/gui/page-sheet-spec.c index 0a26f01d88..4ba379df42 100644 --- a/src/ui/gui/page-sheet-spec.c +++ b/src/ui/gui/page-sheet-spec.c @@ -116,7 +116,6 @@ post_sheet_spec_page (struct import_assistant *ia) GtkBuilder *builder = ia->asst.builder; - struct file *file = &ia->file; struct sheet_spec_page *ssp = ia->sheet_spec; struct casereader *creader = NULL; struct dictionary *dict = NULL; @@ -141,7 +140,6 @@ post_sheet_spec_page (struct import_assistant *ia) ssp->opts.cell_range = range; } - ssp->sri.file_name = file->file_name; ssp->sri.read_names = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (readnames_checkbox)); ssp->sri.asw = -1; -- 2.30.2