diff --git a/NEWS b/NEWS index 977762e0e..aa73a618b 100644 --- a/NEWS +++ b/NEWS @@ -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 diff --git a/src/db_print.c b/src/db_print.c index 297a6f3f6..4d7e3f5ef 100644 --- a/src/db_print.c +++ b/src/db_print.c @@ -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,