X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=playlist.c;h=d02ade3ba911a186f0f7e5a57f419ce9074092d0;hb=0b5c29fae8853bac16b91503df70b0e101dccca4;hp=5150d380f1de1b35e8e9bbb5b01fdf9785882ea8;hpb=2391dbc88e15dd54207f289bb4fdbaf0e801b1ca;p=paraslash.git diff --git a/playlist.c b/playlist.c index 5150d380..d02ade3b 100644 --- a/playlist.c +++ b/playlist.c @@ -57,31 +57,32 @@ static int add_playlist_entry(char *path, void *data) static int check_playlist_path(char *path, void *data) { - struct para_buffer *pb = data; + struct afs_callback_arg *aca = data; struct osl_row *aft_row; int ret = aft_get_row_of_path(path, &aft_row); if (ret < 0) - para_printf(pb, "%s: %s\n", path, para_strerror(-ret)); + afs_error(aca, "%s: %s\n", path, para_strerror(-ret)); return 1; /* do not fail the loop on bad paths */ } static int check_playlist(struct osl_row *row, void *data) { - struct para_buffer *pb = data; + struct afs_callback_arg *aca = data; + struct para_buffer *pb = &aca->pbout; struct osl_object playlist_def; char *playlist_name; int ret = pl_get_name_and_def_by_row(row, &playlist_name, &playlist_def); if (ret < 0) { /* log error, but continue */ - para_printf(pb, "failed to get playlist data: %s\n", + afs_error(aca, "failed to get playlist data: %s\n", para_strerror(-ret)); return 1; } if (*playlist_name) { /* skip dummy row */ para_printf(pb, "checking playlist %s...\n", playlist_name); for_each_line(FELF_READ_ONLY, playlist_def.data, - playlist_def.size, check_playlist_path, pb); + playlist_def.size, check_playlist_path, aca); } osl_close_disk_object(&playlist_def); return 1; @@ -98,16 +99,12 @@ static int check_playlist(struct osl_row *row, void *data) int playlist_check_callback(struct afs_callback_arg *aca) { para_printf(&aca->pbout, "checking playlists...\n"); - return osl(osl_rbtree_loop(playlists_table, BLOBCOL_ID, &aca->pbout, + return osl(osl_rbtree_loop(playlists_table, BLOBCOL_ID, aca, check_playlist)); } -/** - * Close the current playlist. - * - * \sa \ref playlist_open(). - */ -void playlist_close(void) +/** Free all resources of the current playlist, if any. */ +void playlist_unload(void) { if (!current_playlist.name) return; @@ -124,14 +121,14 @@ void playlist_close(void) * up in the audio file table. If the path lookup succeeds, a reference to the * corresponding row of the audio file table is added to the score table. * - * \param name The name of the playlist to open. + * \param name The name of the playlist to load. * \param msg Error message or playlist info is returned here. * * \return The length of the loaded playlist on success, negative error code * else. Files which are listed in the playlist, but are not contained in the * database are ignored. This is not considered an error. */ -int playlist_open(const char *name, char **msg) +int playlist_load(const char *name, char **msg) { int ret; struct playlist_instance *playlist = ¤t_playlist; @@ -142,7 +139,7 @@ int playlist_open(const char *name, char **msg) *msg = make_message("could not read playlist %s\n", name); return ret; } - playlist_close(); + playlist_unload(); ret = for_each_line(FELF_READ_ONLY, playlist_def.data, playlist_def.size, add_playlist_entry, playlist); osl_close_disk_object(&playlist_def);