aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am2
-rw-r--r--src/filelist.c69
-rw-r--r--src/filelist.h53
-rw-r--r--src/mpdclient.c49
-rw-r--r--src/mpdclient.h30
5 files changed, 126 insertions, 77 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index fc0160e65..a16fef521 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -16,6 +16,7 @@ ncmpc_headers = \
song.h \
mpdclient.h\
playlist.h \
+ filelist.h \
options.h\
conf.h\
command.h\
@@ -46,6 +47,7 @@ ncmpc_SOURCES = \
main.c\
mpdclient.c\
playlist.c \
+ filelist.c \
options.c\
conf.c\
command.c\
diff --git a/src/filelist.c b/src/filelist.c
new file mode 100644
index 000000000..6f938ea30
--- /dev/null
+++ b/src/filelist.c
@@ -0,0 +1,69 @@
+/*
+ * (c) 2004 by Kalle Wallin <kaw@linux.se>
+ * (c) 2008 Max Kellermann <max@duempel.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 "filelist.h"
+#include "libmpdclient.h"
+
+#include <string.h>
+
+void
+mpdclient_filelist_free(struct filelist *filelist)
+{
+ GList *list = g_list_first(filelist->list);
+
+ if (list == NULL)
+ return;
+
+ while (list != NULL) {
+ filelist_entry_t *entry = list->data;
+
+ if (entry->entity)
+ mpd_freeInfoEntity(entry->entity);
+
+ g_free(entry);
+ list = list->next;
+ }
+
+ g_list_free(filelist->list);
+ g_free(filelist->path);
+ g_free(filelist);
+}
+
+struct filelist_entry *
+mpdclient_filelist_find_song(struct filelist *fl,
+ const struct mpd_song *song)
+{
+ GList *list = g_list_first(fl->list);
+
+ while (list && song) {
+ filelist_entry_t *entry = list->data;
+ mpd_InfoEntity *entity = entry->entity;
+
+ if (entity && entity->type == MPD_INFO_ENTITY_TYPE_SONG) {
+ struct mpd_song *song2 = entity->info.song;
+
+ if (strcmp(song->file, song2->file) == 0)
+ return entry;
+ }
+
+ list = list->next;
+ }
+
+ return NULL;
+}
diff --git a/src/filelist.h b/src/filelist.h
new file mode 100644
index 000000000..81ff5a37c
--- /dev/null
+++ b/src/filelist.h
@@ -0,0 +1,53 @@
+/*
+ * (c) 2004 by Kalle Wallin <kaw@linux.se>
+ * (c) 2008 Max Kellermann <max@duempel.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 FILELIST_H
+#define FILELIST_H
+
+#include <glib.h>
+
+struct mpd_song;
+
+typedef struct filelist_entry {
+ guint flags;
+ struct mpd_InfoEntity *entity;
+} filelist_entry_t;
+
+typedef struct filelist {
+ /* path */
+ gchar *path;
+
+ /* list length */
+ guint length;
+
+ /* true if the list is updated */
+ gboolean updated;
+
+ /* the list */
+ GList *list;
+} mpdclient_filelist_t;
+
+void
+mpdclient_filelist_free(struct filelist *filelist);
+
+struct filelist_entry *
+mpdclient_filelist_find_song(struct filelist *flist,
+ const struct mpd_song *song);
+
+#endif
diff --git a/src/mpdclient.c b/src/mpdclient.c
index a2e272119..2f5591f60 100644
--- a/src/mpdclient.c
+++ b/src/mpdclient.c
@@ -736,31 +736,6 @@ mpdclient_playlist_update_changes(mpdclient_t *c)
/*** Filelist functions *****************************************************/
/****************************************************************************/
-void
-mpdclient_filelist_free(mpdclient_filelist_t *filelist)
-{
- GList *list = g_list_first(filelist->list);
-
- D("mpdclient_filelist_free()\n");
- if (list == NULL)
- return;
- while (list != NULL) {
- filelist_entry_t *entry = list->data;
-
- if (entry->entity)
- mpd_freeInfoEntity(entry->entity);
- g_free(entry);
- list=list->next;
- }
- g_list_free(filelist->list);
- g_free(filelist->path);
- filelist->path = NULL;
- filelist->list = NULL;
- filelist->length = 0;
- g_free(filelist);
-}
-
-
mpdclient_filelist_t *
mpdclient_filelist_get(mpdclient_t *c, const gchar *path)
{
@@ -874,30 +849,6 @@ mpdclient_filelist_update(mpdclient_t *c, mpdclient_filelist_t *filelist)
return NULL;
}
-filelist_entry_t *
-mpdclient_filelist_find_song(mpdclient_filelist_t *fl, struct mpd_song *song)
-{
- GList *list = g_list_first(fl->list);
-
- while( list && song)
- {
- filelist_entry_t *entry = list->data;
- mpd_InfoEntity *entity = entry->entity;
-
- if( entity && entity->type==MPD_INFO_ENTITY_TYPE_SONG )
- {
- struct mpd_song *song2 = entity->info.song;
-
- if( strcmp(song->file, song2->file) == 0 )
- {
- return entry;
- }
- }
- list = list->next;
- }
- return NULL;
-}
-
int
mpdclient_filelist_add_all(mpdclient_t *c, mpdclient_filelist_t *fl)
{
diff --git a/src/mpdclient.h b/src/mpdclient.h
index 0698cbf45..c55e15453 100644
--- a/src/mpdclient.h
+++ b/src/mpdclient.h
@@ -3,6 +3,7 @@
#include "libmpdclient.h"
#include "playlist.h"
+#include "filelist.h"
#define MPD_VERSION_EQ(c,x,y,z) (c->connection->version[0] == x && \
c->connection->version[1] == y && \
@@ -13,23 +14,6 @@
(c->connection->version[0]==x && c->connection->version[1]==y && \
c->connection->version[2]<z) )
-typedef struct filelist_entry {
- guint flags;
- mpd_InfoEntity *entity;
-} filelist_entry_t;
-
-typedef struct mpdclient_filelist {
- /* path */
- gchar *path;
- /* list length */
- guint length;
- /* true if the list is updated */
- gboolean updated;
- /* the list */
- GList *list;
-
-} mpdclient_filelist_t;
-
typedef struct mpdclient {
/* playlist */
mpdclient_playlist_t playlist;
@@ -133,7 +117,7 @@ void mpdclient_playlist_callback(mpdclient_t *c, int event, gpointer data);
/*** filelist functions ***************************************************/
-void mpdclient_filelist_free(mpdclient_filelist_t *filelist);
+
mpdclient_filelist_t *mpdclient_filelist_get(mpdclient_t *c, const gchar *path);
mpdclient_filelist_t *mpdclient_filelist_search(mpdclient_t *c,
int exact_match,
@@ -146,16 +130,6 @@ mpdclient_filelist_t *mpdclient_filelist_search_utf8(mpdclient_t *c,
mpdclient_filelist_t *mpdclient_filelist_update(mpdclient_t *c,
mpdclient_filelist_t *flist);
-#define HIGHLIGHT (0x01)
-void mpdclient_filelist_set_flags(mpdclient_filelist_t *flist,
- struct mpd_song *song,
- guint flags);
-
-void mpdclient_filelist_clear_flags(mpdclient_filelist_t *flist);
-void mpdclient_filelist_clear_flags(mpdclient_filelist_t *flist);
-filelist_entry_t *mpdclient_filelist_find_song(mpdclient_filelist_t *flist,
- struct mpd_song *song);
-
/* add all songs in filelist to the playlist */
int mpdclient_filelist_add_all(mpdclient_t *c, mpdclient_filelist_t *fl);