Move file_name member from sri to spreadsheet struct
authorJohn Darrington <john@darrington.wattle.id.au>
Mon, 14 Jan 2013 17:42:47 +0000 (18:42 +0100)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 16 Feb 2013 14:03:15 +0000 (15:03 +0100)
src/data/gnumeric-reader.c
src/data/ods-reader.c
src/data/spreadsheet-reader.h
src/language/data-io/get-data.c
src/ui/gui/page-file.c
src/ui/gui/page-sheet-spec.c

index 9bb961a45980f8f2fe75587f3957c02a8990be44..e6e917cf493c9ac8325d89fb575a71c0a3e06f7a 100644 (file)
@@ -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),
index 2ce4e7eb9ba268d188564b94a9d4dc24df0b0d42..d12223013c79367b22cdd87d717c47c57a2ffe63 100644 (file)
@@ -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;
     }
 
index 77ed5ab9dbbe6551f59126ed21a6da2c3e53575f..f9a30209e4db281975b3fa5dc16752a5aa224549 100644 (file)
@@ -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" */
index cca86a2bd838bf5b83f9f89f9e0530a83301a188..26de74546450e85d1639b876e5c2716b30e9fd0f 100644 (file)
@@ -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);
 }
index d8939149c437e394873d4679fc8229ae45aa4dae..c52171dfa863ca5ce87da334526a7bcf6250e2f3 100644 (file)
@@ -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
index 0a26f01d88924b6742774f201fabbf4fd5c29956..4ba379df4227e25f3bdb0316b9a0637f475d5ba8 100644 (file)
@@ -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;