+void
+ods_unref (struct spreadsheet *s)
+{
+ struct ods_reader *r = (struct ods_reader *) s;
+
+ if (--s->ref_cnt == 0)
+ {
+ int i;
+
+ state_data_destroy (&r->msd);
+ for (i = 0; i < r->n_allocated_sheets; ++i)
+ {
+ xmlFree (r->sheets[i].name);
+ }
+
+ dict_destroy (r->dict);
+
+ zip_reader_destroy (r->zreader);
+ free (r->sheets);
+ free (s->file_name);
+ free (r);
+ }
+}
+
+
+
+static bool
+reading_target_sheet (const struct ods_reader *r, const struct state_data *msd)
+{
+ if (r->target_sheet_name != NULL)
+ {
+ if ( 0 == xmlStrcmp (r->target_sheet_name, msd->current_sheet_name))
+ return true;
+ }
+
+ if (r->target_sheet_index == msd->current_sheet + 1)
+ return true;
+
+ return false;
+}
+