aboutsummaryrefslogtreecommitdiffstats
path: root/src/playlist.c
diff options
context:
space:
mode:
authorJ. Alexander Treuman <jat@spatialrift.net>2007-02-24 02:00:03 +0000
committerJ. Alexander Treuman <jat@spatialrift.net>2007-02-24 02:00:03 +0000
commit6e64bac7b6954d13f5aa47f068dd149219dfe966 (patch)
tree32c633e43d0bf4d5018ebdff467c64c7b86ba4c3 /src/playlist.c
parent1ae3bdb7e6d5a5c4135f6046be9259d6f716498a (diff)
downloadmpd-6e64bac7b6954d13f5aa47f068dd149219dfe966.tar.gz
mpd-6e64bac7b6954d13f5aa47f068dd149219dfe966.tar.xz
mpd-6e64bac7b6954d13f5aa47f068dd149219dfe966.zip
Adding playlistfind and playlistsearch commands for searching the current
playlist. git-svn-id: https://svn.musicpd.org/mpd/trunk@5420 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to 'src/playlist.c')
-rw-r--r--src/playlist.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/playlist.c b/src/playlist.c
index 8f4b17804..9d9c2d60f 100644
--- a/src/playlist.c
+++ b/src/playlist.c
@@ -1679,3 +1679,36 @@ int loadPlaylist(int fd, char *utf8file)
{
return PlaylistIterFunc(fd, utf8file, PlaylistLoadIterFunc);
}
+
+void searchForSongsInPlaylist(int fd, int numItems, LocateTagItem * items)
+{
+ int i;
+ char **originalNeedles = xmalloc(numItems * sizeof(char *));
+
+ for (i = 0; i < numItems; i++) {
+ originalNeedles[i] = items[i].needle;
+ items[i].needle = strDupToUpper(originalNeedles[i]);
+ }
+
+ for (i = 0; i < playlist.length; i++) {
+ if (strstrSearchTags(playlist.songs[i], numItems, items))
+ printPlaylistSongInfo(fd, i);
+ }
+
+ for (i = 0; i < numItems; i++) {
+ free(items[i].needle);
+ items[i].needle = originalNeedles[i];
+ }
+
+ free(originalNeedles);
+}
+
+void findSongsInPlaylist(int fd, int numItems, LocateTagItem * items)
+{
+ int i;
+
+ for (i = 0; i < playlist.length; i++) {
+ if (tagItemsFoundAndMatches(playlist.songs[i], numItems, items))
+ printPlaylistSongInfo(fd, i);
+ }
+}