+ 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);
+ }
+
+ 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;
+}
+
+
+static void process_node (struct ods_reader *or, struct state_data *r);