Code

mpdclient: moved code to filelist.c
authorMax Kellermann <max@duempel.org>
Fri, 19 Sep 2008 12:10:37 +0000 (14:10 +0200)
committerMax Kellermann <max@duempel.org>
Fri, 19 Sep 2008 12:10:37 +0000 (14:10 +0200)
Move everything which is solely filelist related to filelist.c and
filelist.h.  Fix the indentation of that file, and provide the struct
name "filelist".  Don't clear data in mpdclient_filelist_free() before
calling g_free().  Constify the "song" parameter to
mpdclient_filelist_find_song().

src/Makefile.am
src/filelist.c [new file with mode: 0644]
src/filelist.h [new file with mode: 0644]
src/mpdclient.c
src/mpdclient.h

index fc0160e65c54877c97e9f650e40b61a7cda9a71c..a16fef52171ece3f1d1a9609616819519d637563 100644 (file)
@@ -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 (file)
index 0000000..6f938ea
--- /dev/null
@@ -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 (file)
index 0000000..81ff5a3
--- /dev/null
@@ -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
index a2e272119e8a13d62c172ced23d006f85a17bcc5..2f5591f609154b2c1446f7e852af1b9f6ec15f2c 100644 (file)
@@ -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)
 {
index 0698cbf452061511ae97699f827ff23b5e1f4823..c55e15453c5f8ae5e6668ae7f8267ec20fca39f5 100644 (file)
@@ -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 && \
  (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);