From 8afe24c1de70b69df58f1724ad5fd02c7af63ecb Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 23 Jan 2009 16:34:27 +0100 Subject: [PATCH] playlist: moved PlaylistInfo() to playlist_print.c PlaylistInfo() (notice the capital 'P') sends a stored playlist to the client. Move it to a separate library, where all the code which glues the playlist and the MPD protocol together will live. --- src/Makefile.am | 2 ++ src/command.c | 1 + src/playlist.c | 30 ------------------------- src/playlist.h | 2 -- src/playlist_print.c | 53 ++++++++++++++++++++++++++++++++++++++++++++ src/playlist_print.h | 30 +++++++++++++++++++++++++ 6 files changed, 86 insertions(+), 32 deletions(-) create mode 100644 src/playlist_print.c create mode 100644 src/playlist_print.h diff --git a/src/Makefile.am b/src/Makefile.am index 104d64264..f5738bdf4 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -91,6 +91,7 @@ mpd_headers = \ player_thread.h \ player_control.h \ playlist.h \ + playlist_print.h \ playlist_save.h \ queue.h \ queue_print.h \ @@ -176,6 +177,7 @@ mpd_SOURCES = \ player_thread.c \ player_control.c \ playlist.c \ + playlist_print.c \ playlist_save.c \ queue.c \ queue_print.c \ diff --git a/src/command.c b/src/command.c index 27d34c0a3..224c2e0f4 100644 --- a/src/command.c +++ b/src/command.c @@ -19,6 +19,7 @@ #include "command.h" #include "player_control.h" #include "playlist.h" +#include "playlist_print.h" #include "ls.h" #include "directory.h" #include "directory_print.h" diff --git a/src/playlist.c b/src/playlist.c index 5945d088b..a1743d1ed 100644 --- a/src/playlist.c +++ b/src/playlist.c @@ -24,8 +24,6 @@ #include "ls.h" #include "tag.h" #include "song.h" -#include "song_print.h" -#include "client.h" #include "conf.h" #include "database.h" #include "mapper.h" @@ -1217,34 +1215,6 @@ unsigned getPlaylistSongId(unsigned song) return queue_position_to_id(&playlist.queue, song); } -int PlaylistInfo(struct client *client, const char *utf8file, int detail) -{ - GPtrArray *list; - - if (!(list = spl_load(utf8file))) - return -1; - - for (unsigned i = 0; i < list->len; ++i) { - const char *temp = g_ptr_array_index(list, i); - int wrote = 0; - - if (detail) { - struct song *song = db_get_song(temp); - if (song) { - song_print_info(client, song); - wrote = 1; - } - } - - if (!wrote) { - client_printf(client, SONG_FILE "%s\n", temp); - } - } - - spl_free(list); - return 0; -} - enum playlist_result loadPlaylist(const char *utf8file) { GPtrArray *list; diff --git a/src/playlist.h b/src/playlist.h index c1c651a77..eaaba9647 100644 --- a/src/playlist.h +++ b/src/playlist.h @@ -174,8 +174,6 @@ int playlistChanges(struct client *client, uint32_t version); int playlistChangesPosId(struct client *client, uint32_t version); -int PlaylistInfo(struct client *client, const char *utf8file, int detail); - void searchForSongsInPlaylist(struct client *client, unsigned numItems, const LocateTagItem *items); diff --git a/src/playlist_print.c b/src/playlist_print.c new file mode 100644 index 000000000..df2c7d08c --- /dev/null +++ b/src/playlist_print.c @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2003-2009 The Music Player Daemon Project + * http://www.musicpd.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "playlist_print.h" +#include "stored_playlist.h" +#include "song_print.h" +#include "song.h" +#include "database.h" +#include "client.h" + +int +PlaylistInfo(struct client *client, const char *utf8file, int detail) +{ + GPtrArray *list; + + if (!(list = spl_load(utf8file))) + return -1; + + for (unsigned i = 0; i < list->len; ++i) { + const char *temp = g_ptr_array_index(list, i); + int wrote = 0; + + if (detail) { + struct song *song = db_get_song(temp); + if (song) { + song_print_info(client, song); + wrote = 1; + } + } + + if (!wrote) { + client_printf(client, SONG_FILE "%s\n", temp); + } + } + + spl_free(list); + return 0; +} diff --git a/src/playlist_print.h b/src/playlist_print.h new file mode 100644 index 000000000..7a633b53b --- /dev/null +++ b/src/playlist_print.h @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2003-2009 The Music Player Daemon Project + * http://www.musicpd.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PLAYLIST_PRINT_H +#define PLAYLIST_PRINT_H + +#include "playlist_print.h" +#include "stored_playlist.h" +#include "song_print.h" +#include "client.h" + +int +PlaylistInfo(struct client *client, const char *utf8file, int detail); + +#endif