diff options
Diffstat (limited to 'src/directory_print.c')
-rw-r--r-- | src/directory_print.c | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/directory_print.c b/src/directory_print.c index 1c9f23d69..74ff26cb3 100644 --- a/src/directory_print.c +++ b/src/directory_print.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2009 The Music Player Daemon Project + * Copyright (C) 2003-2010 The Music Player Daemon Project * http://www.musicpd.org * * This program is free software; you can redistribute it and/or modify @@ -17,10 +17,19 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include "config.h" #include "directory_print.h" #include "directory.h" #include "client.h" #include "song_print.h" +#include "mapper.h" +#include "decoder_list.h" +#include "path.h" +#include "uri.h" +#include "input_stream.h" + +#include <sys/types.h> +#include <dirent.h> static void dirvec_print(struct client *client, const struct dirvec *dv) @@ -32,9 +41,34 @@ dirvec_print(struct client *client, const struct dirvec *dv) directory_get_path(dv->base[i])); } +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); +} + +/** + * Print a list of playlists in the specified directory. + */ +static void +directory_print_playlists(struct client *client, + const struct directory *directory) +{ + for (const struct playlist_metadata *pm = directory->playlists.head; + pm != NULL; pm = pm->next) + print_playlist_in_directory(client, directory, pm->name); +} + void directory_print(struct client *client, const struct directory *directory) { dirvec_print(client, &directory->children); songvec_print(client, &directory->songs); + directory_print_playlists(client, directory); } |