/* PSPP - a program for statistical analysis.
- Copyright (C) 2011 Free Software Foundation, Inc.
+ Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#if !ODF_READ_SUPPORT
struct casereader *
-ods_open_reader (struct spreadsheet_read_info *gri, struct dictionary **dict)
+ods_open_reader (const struct spreadsheet_read_info *gri, struct spreadsheet_read_options *opts,
+ struct dictionary **dict)
{
msg (ME, _("Support for %s files was not compiled into this installation of PSPP"), "OpenDocument");
text =
xmv->value ? CHAR_CAST (const char *, xmv->value) : CHAR_CAST (const char *, xmv->text);
- data_in (ss_cstr (text), "UTF-8",
- fmt->type,
- v,
- var_get_width (var),
- "UTF-8");
+ free (data_in (ss_cstr (text), "UTF-8",
+ fmt->type,
+ v,
+ var_get_width (var),
+ "UTF-8"));
}
}
struct casereader *
-ods_open_reader (struct spreadsheet_read_info *gri, struct dictionary **dict)
+ods_open_reader (const struct spreadsheet_read_info *gri, struct spreadsheet_read_options *opts,
+ struct dictionary **dict)
{
int ret = 0;
xmlChar *type = NULL;
goto error;
}
- if ( gri->cell_range )
+ if ( opts->cell_range )
{
- if ( ! convert_cell_ref (gri->cell_range,
+ if ( ! convert_cell_ref (opts->cell_range,
&r->start_col, &r->start_row,
&r->stop_col, &r->stop_row))
{
msg (SE, _("Invalid cell range `%s'"),
- gri->cell_range);
+ opts->cell_range);
goto error;
}
}
}
r->state = STATE_INIT;
- r->target_sheet = BAD_CAST gri->sheet_name;
- r->target_sheet_index = gri->sheet_index;
+ r->target_sheet = BAD_CAST opts->sheet_name;
+ r->target_sheet_index = opts->sheet_index;
r->row = r->col = -1;
r->sheet_index = 0;
/* If CELLRANGE was given, then we know how many variables should be read */
if ( r->stop_col != -1 )
{
+ assert (var_spec == NULL);
n_var_specs = r->stop_col - r->start_col + 1;
var_spec = xrealloc (var_spec, sizeof (*var_spec) * n_var_specs);
+ memset (var_spec, '\0', sizeof (*var_spec) * n_var_specs);
}
var_spec = xrealloc (var_spec, sizeof (*var_spec) * (idx + 1));
/* xrealloc (unlike realloc) doesn't initialise its memory to 0 */
- memset (var_spec + n_var_specs * sizeof (*var_spec),
+ memset (var_spec + n_var_specs,
0,
(n_var_specs - idx + 1) * sizeof (*var_spec));
n_var_specs = idx + 1;
free (var_spec);
+ dict_destroy (r->dict);
+ ods_file_casereader_destroy (NULL, r);
+
+
return NULL;
}