- if ( 0 == strncasecmp (tok, "GNM", 3))
- reader = gnumeric_open_reader (sri, &dict);
- else if (0 == strncasecmp (tok, "ODS", 3))
- reader = ods_open_reader (sri, &dict);
+ if ( gnm_read_support && 0 == strncasecmp (tok, "GNM", 3))
+ {
+ struct spreadsheet *spreadsheet = gnumeric_probe (filename, true);
+ if (spreadsheet == NULL)
+ goto error;
+ reader = gnumeric_make_reader (spreadsheet, &opts);
+ dict = spreadsheet->dict;
+ gnumeric_destroy (spreadsheet);
+ }
+ else if ( odf_read_support && 0 == strncasecmp (tok, "ODS", 3))
+ {
+ struct spreadsheet *spreadsheet = ods_probe (filename, true);
+ if (spreadsheet == NULL)
+ goto error;
+ reader = ods_make_reader (spreadsheet, &opts);
+ dict = spreadsheet->dict;
+ ods_destroy (spreadsheet);
+ }
+
+ free (filename);