diff options
author | Max Kellermann <max@duempel.org> | 2008-09-19 14:10:37 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-09-19 14:10:37 +0200 |
commit | b93a0bab1cfb0479c24963f649ae0de33b885289 (patch) | |
tree | d6f942d775da9c24a61fd981521c5aeaf43a84dd /src | |
parent | 4364a0bc8620e95f2fb63949f1f6f63aa233a649 (diff) | |
download | mpd-b93a0bab1cfb0479c24963f649ae0de33b885289.tar.gz mpd-b93a0bab1cfb0479c24963f649ae0de33b885289.tar.xz mpd-b93a0bab1cfb0479c24963f649ae0de33b885289.zip |
mpdclient: moved code to filelist.c
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().
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/filelist.c | 69 | ||||
-rw-r--r-- | src/filelist.h | 53 | ||||
-rw-r--r-- | src/mpdclient.c | 49 | ||||
-rw-r--r-- | src/mpdclient.h | 30 |
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); |