Separated vcedit_state_new() and vcedit_open() again.
[ruby-vorbistagger.git] / ext / vcedit.c
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;