{
enum { MAX_LINE_LEN = 16384 }; /* Max length of an acceptable line. */
struct file *file = &ia->file;
- struct casereader *creader = NULL;
- struct dictionary *dict = NULL;
+ struct sheet_spec_page *ssp = &ia->sheet_spec;
struct spreadsheet_read_info sri;
struct spreadsheet_read_options opts;
sri.read_names = true;
sri.asw = -1;
- if (!creader)
- {
- creader = gnumeric_open_reader (&sri, &opts, &dict);
- ia->file.type = FTYPE_GNUMERIC;
- }
-
- if (!creader)
+ ssp->spreadsheet = gnumeric_probe (sri.file_name);
+
+ if (ssp->spreadsheet)
{
- creader = ods_open_reader (&sri, &opts, &dict);
- ia->file.type = FTYPE_ODS;
- }
+ struct casereader *creader = NULL;
+ struct dictionary *dict = NULL;
+
+ if (ssp->spreadsheet->type == SPREADSHEET_GNUMERIC)
+ {
+ ia->file.type = FTYPE_GNUMERIC;
+ }
+ else if (ssp->spreadsheet->type == SPREADSHEET_ODS)
+ {
+ ia->file.type = FTYPE_ODS;
+ }
+ else
+ {
+ assert (0);
+ }
- if (creader && dict)
- {
- struct sheet_spec_page *ssp = &ia->sheet_spec;
- ssp->dict = dict;
- ssp->reader = creader;
+ {
+ struct sheet_spec_page *ssp = &ia->sheet_spec;
+ ssp->dict = dict;
+ ssp->reader = creader;
+
+ update_assistant (ia);
+ }
- update_assistant (ia);
}
else
{