diff options
-rw-r--r-- | src/db_print.c | 20 | ||||
-rw-r--r-- | src/db_visitor.h | 4 | ||||
-rw-r--r-- | src/directory.c | 2 |
3 files changed, 21 insertions, 5 deletions
diff --git a/src/db_print.c b/src/db_print.c index f341ca4e8..067d1c60f 100644 --- a/src/db_print.c +++ b/src/db_print.c @@ -73,21 +73,35 @@ print_visitor_song_info(struct song *song, void *data, return true; } +static void +print_playlist_in_directory(struct client *client, + const struct directory *directory, + const char *name_utf8) +{ + if (directory_is_root(directory)) + client_printf(client, "playlist: %s\n", name_utf8); + else + client_printf(client, "playlist: %s/%s\n", + directory_get_path(directory), name_utf8); +} + static bool -print_visitor_playlist(const struct playlist_metadata *playlist, void *ctx, +print_visitor_playlist(const struct playlist_metadata *playlist, + const struct directory *directory, void *ctx, G_GNUC_UNUSED GError **error_r) { struct client *client = ctx; - client_printf(client, "playlist: %s\n", playlist->name); + print_playlist_in_directory(client, directory, playlist->name); return true; } static bool print_visitor_playlist_info(const struct playlist_metadata *playlist, + const struct directory *directory, void *ctx, G_GNUC_UNUSED GError **error_r) { struct client *client = ctx; - client_printf(client, "playlist: %s\n", playlist->name); + print_playlist_in_directory(client, directory, playlist->name); #ifndef G_OS_WIN32 struct tm tm; diff --git a/src/db_visitor.h b/src/db_visitor.h index f68054ec2..6b90c1868 100644 --- a/src/db_visitor.h +++ b/src/db_visitor.h @@ -43,9 +43,11 @@ struct db_visitor { /** * Visit a playlist. Optional method. * + * @param directory the directory the playlist resides in * @return true to continue the operation, false on error (set error_r) */ - bool (*playlist)(const struct playlist_metadata *playlist, void *ctx, + bool (*playlist)(const struct playlist_metadata *playlist, + const struct directory *directory, void *ctx, GError **error_r); }; diff --git a/src/directory.c b/src/directory.c index ebc4013eb..380232761 100644 --- a/src/directory.c +++ b/src/directory.c @@ -188,7 +188,7 @@ directory_walk(const struct directory *directory, bool recursive, const struct playlist_vector *pv = &directory->playlists; for (const struct playlist_metadata *i = pv->head; i != NULL; i = i->next) - if (!visitor->playlist(i, ctx, error_r)) + if (!visitor->playlist(i, directory, ctx, error_r)) return false; } |