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

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,