From bf1f7624bee5a466b402825083190d3afbd9c28b Mon Sep 17 00:00:00 2001 From: Tilman Sauerbeck Date: Thu, 17 Aug 2006 17:10:43 +0200 Subject: [PATCH] Separated vcedit_state_new() and vcedit_open() again. --- ext/ext.c | 4 ++++ ext/vcedit.c | 19 +++++++------------ ext/vcedit.h | 1 + 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/ext/ext.c b/ext/ext.c index 6c640b7..9c433f2 100644 --- a/ext/ext.c +++ b/ext/ext.c @@ -103,6 +103,10 @@ c_init (VALUE self, VALUE filename) rb_raise (eVTError, "vcedit_new_state() failed - %s", vcedit_error (o->state)); + if (vcedit_open (o->state) < 0) + rb_raise (eVTError, "vcedit_open() failed - %s", + vcedit_error (o->state)); + vc = vcedit_comments (o->state); if (!vc) rb_raise (eVTError, "vcedit_comments() failed - %s", diff --git a/ext/vcedit.c b/ext/vcedit.c index 336ce26..1074670 100644 --- a/ext/vcedit.c +++ b/ext/vcedit.c @@ -31,8 +31,6 @@ #define CHUNKSIZE 4096 -static int vcedit_open (vcedit_state *state); - struct vcedit_state_St { int refcount; @@ -119,13 +117,6 @@ vcedit_state_new (const char *filename) snprintf (state->filename, sizeof (state->filename), "%s", filename); - state->in = fopen (state->filename, "rb"); - - if (vcedit_open (state) < 0) { - vcedit_state_free (state); - return NULL; - } - return state; } @@ -287,7 +278,7 @@ _fetch_next_packet (vcedit_state *s, ogg_packet *p, ogg_page *page) return _fetch_next_packet (s, p, page); } -static int +int vcedit_open (vcedit_state *state) { char *buffer; @@ -297,6 +288,12 @@ vcedit_open (vcedit_state *state) ogg_packet header_main, header_comments, header_codebooks; ogg_page og; + state->in = fopen (state->filename, "rb"); + if (!state->in) { + state->lasterror = "Cannot open file."; + return -1; + } + ogg_sync_init (state->oy); while (1) { @@ -603,8 +600,6 @@ cleanup: } vcedit_clear_internals (state); - - state->in = fopen (state->filename, "rb"); vcedit_open (state); return 0; diff --git a/ext/vcedit.h b/ext/vcedit.h index 902d14e..cdd7be5 100644 --- a/ext/vcedit.h +++ b/ext/vcedit.h @@ -33,6 +33,7 @@ vcedit_state *vcedit_state_new (const char *filename); void vcedit_state_ref (vcedit_state *state); void vcedit_state_unref (vcedit_state *state); vorbis_comment *vcedit_comments (vcedit_state *state); +int vcedit_open (vcedit_state *state); int vcedit_write (vcedit_state *state); const char *vcedit_error (vcedit_state *state); -- 2.30.2