X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=playlist.c;h=9a6e4829082a4b6e772338762119f6b9525328a4;hb=9055c71be97f1095dcdbd83da305b600f204f763;hp=171a6d26e3f77f6377c70d3ce560d35964ac2ca8;hpb=11f6b66a8eb345185c4a4bc8dc8d6059835d37f0;p=paraslash.git diff --git a/playlist.c b/playlist.c index 171a6d26..9a6e4829 100644 --- a/playlist.c +++ b/playlist.c @@ -15,13 +15,13 @@ /** \file playlist.c Functions for loading and saving playlists. */ /** Structure used for adding entries to a playlist. */ -struct playlist_info { +struct playlist_instance { /** The name of the playlist. */ char *name; /** The number of entries currently in the playlist. */ unsigned length; }; -static struct playlist_info current_playlist; +static struct playlist_instance current_playlist; /** * Re-insert an audio file into the tree of admissible files. @@ -38,7 +38,7 @@ static int playlist_update_audio_file(const struct osl_row *aft_row) static int add_playlist_entry(char *path, void *data) { - struct playlist_info *playlist = data; + struct playlist_instance *playlist = data; struct osl_row *aft_row; int ret = aft_get_row_of_path(path, &aft_row); @@ -102,12 +102,8 @@ int playlist_check_callback(struct afs_callback_arg *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,27 +120,25 @@ 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 errmsg To be sent to the client (if called via select command). + * \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 **errmsg) +int playlist_load(const char *name, char **msg) { int ret; - struct playlist_info *playlist = ¤t_playlist; + struct playlist_instance *playlist = ¤t_playlist; struct osl_object playlist_def; ret = pl_get_def_by_name(name, &playlist_def); if (ret < 0) { - if (errmsg) - *errmsg = make_message("could not read playlist %s", - name); + *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); @@ -154,15 +148,13 @@ int playlist_open(const char *name, char **errmsg) if (!playlist->length) goto err; playlist->name = para_strdup(name); - PARA_NOTICE_LOG("loaded playlist %s (%u files)\n", playlist->name, + *msg = make_message("loaded playlist %s (%u files)\n", playlist->name, playlist->length); /* success */ return current_playlist.length; err: PARA_NOTICE_LOG("unable to load playlist %s\n", name); - if (errmsg) - *errmsg = make_message("unable to load playlist %s: %s\n", - name, para_strerror(-ret)); + *msg = make_message("unable to load playlist %s\n", name); return ret; }