diff options
author | Carl Hetherington <carl@carlh.net> | 2010-05-16 20:54:50 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-05-16 20:54:50 +0000 |
commit | f1114dedeecf4279a4c19a85be0c11e9fde5610b (patch) | |
tree | 090a85771cda9f207a924e38c8f14290adbda033 /libs/evoral/src/libsmf | |
parent | 50615cd17c06a5f4c8a196182407ceee7d182635 (diff) |
Move FileManager code into libpbd. Use it for SMF read/write.
git-svn-id: svn://localhost/ardour2/branches/3.0@7108 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/evoral/src/libsmf')
-rw-r--r-- | libs/evoral/src/libsmf/smf.h | 4 | ||||
-rw-r--r-- | libs/evoral/src/libsmf/smf_load.c | 17 | ||||
-rw-r--r-- | libs/evoral/src/libsmf/smf_save.c | 29 |
3 files changed, 14 insertions, 36 deletions
diff --git a/libs/evoral/src/libsmf/smf.h b/libs/evoral/src/libsmf/smf.h index 212105c5d0..5e3e2d1859 100644 --- a/libs/evoral/src/libsmf/smf.h +++ b/libs/evoral/src/libsmf/smf.h @@ -387,11 +387,11 @@ char *smf_event_decode(const smf_event_t *event) WARN_UNUSED_RESULT; char *smf_event_extract_text(const smf_event_t *event) WARN_UNUSED_RESULT; /* Routines for loading SMF files. */ -smf_t *smf_load(const char *file_name) WARN_UNUSED_RESULT; +smf_t *smf_load(FILE *) WARN_UNUSED_RESULT; smf_t *smf_load_from_memory(const void *buffer, const size_t buffer_length) WARN_UNUSED_RESULT; /* Routine for writing SMF files. */ -int smf_save(smf_t *smf, const char *file_name) WARN_UNUSED_RESULT; +int smf_save(smf_t *smf, FILE *file) WARN_UNUSED_RESULT; /* Routines for manipulating smf_tempo_t. */ smf_tempo_t *smf_get_tempo_by_pulses(const smf_t *smf, size_t pulses) WARN_UNUSED_RESULT; 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); diff --git a/libs/evoral/src/libsmf/smf_save.c b/libs/evoral/src/libsmf/smf_save.c index 1a7a726675..b03bf90044 100644 --- a/libs/evoral/src/libsmf/smf_save.c +++ b/libs/evoral/src/libsmf/smf_save.c @@ -391,29 +391,14 @@ write_track(smf_track_t *track) * Takes smf->file_buffer and saves it to the file. */ static int -write_file(smf_t *smf, const char *file_name) +write_file(smf_t *smf, FILE* stream) { - FILE *stream; - - stream = fopen(file_name, "w+"); - if (stream == NULL) { - g_critical("Cannot open input file: %s", strerror(errno)); - - return (-1); - } - if (fwrite(smf->file_buffer, 1, smf->file_buffer_length, stream) != smf->file_buffer_length) { g_critical("fwrite(3) failed: %s", strerror(errno)); return (-2); } - if (fclose(stream)) { - g_critical("fclose(3) failed: %s", strerror(errno)); - - return (-3); - } - return (0); } @@ -593,11 +578,11 @@ assert_smf_is_identical(const smf_t *a, const smf_t *b) } static void -assert_smf_saved_correctly(const smf_t *smf, const char *file_name) +assert_smf_saved_correctly(const smf_t *smf, FILE* file) { smf_t *saved; - saved = smf_load(file_name); + saved = smf_load (file); assert(saved != NULL); assert_smf_is_identical(smf, saved); @@ -610,11 +595,11 @@ assert_smf_saved_correctly(const smf_t *smf, const char *file_name) /** * Writes the contents of SMF to the file given. * \param smf SMF. - * \param file_name Path to the file. + * \param file File descriptor. * \return 0, if saving was successfull. */ int -smf_save(smf_t *smf, const char *file_name) +smf_save(smf_t *smf, FILE* file) { int i, error; smf_track_t *track; @@ -641,7 +626,7 @@ smf_save(smf_t *smf, const char *file_name) } } - error = write_file(smf, file_name); + error = write_file(smf, file); free_buffer(smf); @@ -649,7 +634,7 @@ smf_save(smf_t *smf, const char *file_name) return (error); #ifndef NDEBUG - assert_smf_saved_correctly(smf, file_name); + assert_smf_saved_correctly(smf, file); #endif return (0); |