+static void
+vcedit_state_free (vcedit_state *state)
+{
+ free (state->oy);
+ free (state->os);
+ free (state->vc);
+ free (state->vi);
+ free (state->mainbuf);
+ free (state->bookbuf);
+ free (state->vendor);
+
+ if (state->in) {
+ fclose (state->in);
+ state->in = NULL;
+ }
+
+ free (state);
+}
+
+static bool
+vcedit_state_init (vcedit_state *state)
+{
+ state->refcount = 1;
+
+ state->oy = malloc (sizeof (ogg_sync_state));
+ if (!state->oy)
+ return false;
+
+ state->os = malloc (sizeof (ogg_stream_state));
+ if (!state->os)
+ return false;
+
+ state->vc = malloc (sizeof (vorbis_comment));
+ if (!state->vc)
+ return false;
+
+ state->vi = malloc (sizeof (vorbis_info));
+ if (!state->vi)
+ return false;
+
+ return true;
+}
+