db_print: print extra "playlist" object for embedded CUE sheets

This finally enables the new embedded CUE sheet code: when a song file
contains a playlist, it is printed in the "lsinfo" output, so clients
get to know about this.
This commit is contained in:
Max Kellermann 2012-02-12 18:41:25 +01:00
parent a7f13d841f
commit 01b0d9eb97
2 changed files with 37 additions and 18 deletions

1
NEWS
View File

@ -4,6 +4,7 @@ ver 0.17 (2011/??/??)
- "update" and "rescan" need only "CONTROL" permission
- new command "seekcur" for simpler seeking within current song
- add range parameter to command "load"
- print extra "playlist" object for embedded CUE sheets
* input:
- cdio_paranoia: new input plugin to play audio CDs
- curl: enable CURLOPT_NETRC

View File

@ -56,24 +56,6 @@ print_visitor_directory(const struct directory *directory, void *data,
return true;
}
static bool
print_visitor_song(struct song *song, void *data,
G_GNUC_UNUSED GError **error_r)
{
struct client *client = data;
song_print_uri(client, song);
return true;
}
static bool
print_visitor_song_info(struct song *song, void *data,
G_GNUC_UNUSED GError **error_r)
{
struct client *client = data;
song_print_info(client, song);
return true;
}
static void
print_playlist_in_directory(struct client *client,
const struct directory *directory,
@ -86,6 +68,42 @@ print_playlist_in_directory(struct client *client,
directory_get_path(directory), name_utf8);
}
static bool
print_visitor_song(struct song *song, void *data,
G_GNUC_UNUSED GError **error_r)
{
assert(song != NULL);
assert(song->parent != NULL);
struct client *client = data;
song_print_uri(client, song);
if (song->tag != NULL && song->tag->has_playlist)
/* this song file has an embedded CUE sheet */
print_playlist_in_directory(client, song->parent,
song->uri);
return true;
}
static bool
print_visitor_song_info(struct song *song, void *data,
G_GNUC_UNUSED GError **error_r)
{
assert(song != NULL);
assert(song->parent != NULL);
struct client *client = data;
song_print_info(client, song);
if (song->tag != NULL && song->tag->has_playlist)
/* this song file has an embedded CUE sheet */
print_playlist_in_directory(client, song->parent,
song->uri);
return true;
}
static bool
print_visitor_playlist(const struct playlist_metadata *playlist,
const struct directory *directory, void *ctx,