Separated vcedit_state_new() and vcedit_open() again.
authorTilman Sauerbeck <tilman@code-monkey.de>
Thu, 17 Aug 2006 15:10:43 +0000 (17:10 +0200)
committerTilman Sauerbeck <tilman@code-monkey.de>
Wed, 23 Aug 2006 17:39:15 +0000 (19:39 +0200)
ext/ext.c
ext/vcedit.c
ext/vcedit.h

index 6c640b720e1ec9cf6971eb0c3d76ca8afbc43bd3..9c433f285523c12196501363e132a8662f9907e5 100644 (file)
--- 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",
index 336ce26e94f531a299c045091016dc1bfe7d60d2..10746706f71c97fbd0c620b4ca2d95f4d8d8be9b 100644 (file)
@@ -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;
index 902d14e293af36c2ae3c4e73fb397d2ca9225a53..cdd7be513c2bca55786b7e9a5362284d6d948cf3 100644 (file)
@@ -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);