diff options
Diffstat (limited to 'libs/evoral/src/libsmf/smf_load.c')
-rw-r--r-- | libs/evoral/src/libsmf/smf_load.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/libs/evoral/src/libsmf/smf_load.c b/libs/evoral/src/libsmf/smf_load.c index 71ad02498e..cebca73b82 100644 --- a/libs/evoral/src/libsmf/smf_load.c +++ b/libs/evoral/src/libsmf/smf_load.c @@ -794,12 +794,11 @@ parse_mtrk_chunk(smf_track_t *track) } /** - * Allocate buffer of proper size and read file contents into it. Close file afterwards. + * Allocate buffer of proper size and read file contents into it. */ static int -load_file_into_buffer(void **file_buffer, size_t *file_buffer_length, const char *file_name) +load_file_into_buffer(void **file_buffer, size_t *file_buffer_length, FILE* stream) { - FILE *stream = fopen(file_name, "r"); long offset; if (stream == NULL) { @@ -841,12 +840,6 @@ load_file_into_buffer(void **file_buffer, size_t *file_buffer_length, const char return (-6); } - if (fclose(stream)) { - g_critical("fclose(3) failed: %s", strerror(errno)); - - return (-7); - } - return (0); } @@ -903,17 +896,17 @@ smf_load_from_memory(const void *buffer, const size_t buffer_length) /** * Loads SMF file. * - * \param file_name Path to the file. + * \param file Open file. * \return SMF or NULL, if loading failed. */ smf_t * -smf_load(const char *file_name) +smf_load(FILE *file) { size_t file_buffer_length; void *file_buffer; smf_t *smf; - if (load_file_into_buffer(&file_buffer, &file_buffer_length, file_name)) + if (load_file_into_buffer(&file_buffer, &file_buffer_length, file)) return (NULL); smf = smf_load_from_memory(file_buffer, file_buffer_length); |