Code

libmpdclient: moved code to song.c
authorMax Kellermann <max@duempel.org>
Tue, 16 Sep 2008 17:11:39 +0000 (19:11 +0200)
committerMax Kellermann <max@duempel.org>
Tue, 16 Sep 2008 17:11:39 +0000 (19:11 +0200)
Move everything which manipulates the mpd_Song struct to song.c.
Thousands of lines of too much for libmpdclient.c!

src/Makefile.am
src/libmpdclient.c
src/libmpdclient.h
src/song.c [new file with mode: 0644]
src/song.h [new file with mode: 0644]

index 53342ff542857a1e8d07088cf5ebc1ea3c747f65..857c97cc21304883a51d22d4cdcb7955758f15a2 100644 (file)
@@ -14,6 +14,7 @@ ncmpc_LDADD = \
 
 ncmpc_headers = \
   libmpdclient.h\
+       song.h \
   mpdclient.h\
   easy_download.h\
   options.h\
@@ -41,6 +42,7 @@ lyr_src=${lyr_src_fixed}
 
 ncmpc_SOURCES = \
   libmpdclient.c\
+       song.c \
   main.c\
   mpdclient.c\
   options.c\
index 248d8ea2f974d1e7ffcd8ea1610ca85114879b04..ae4bd9c24134933a90936854bb49bea9ffd6c83c 100644 (file)
@@ -911,73 +911,6 @@ void mpd_freeStats(mpd_Stats * stats) {
        free(stats);
 }
 
-static void mpd_initSong(mpd_Song * song) {
-       song->file = NULL;
-       song->artist = NULL;
-       song->album = NULL;
-       song->track = NULL;
-       song->title = NULL;
-       song->name = NULL;
-       song->date = NULL;
-       /* added by Qball */
-       song->genre = NULL;
-       song->composer = NULL;
-       song->disc = NULL;
-       song->comment = NULL;
-
-       song->time = MPD_SONG_NO_TIME;
-       song->pos = MPD_SONG_NO_NUM;
-       song->id = MPD_SONG_NO_ID;
-}
-
-static void mpd_finishSong(mpd_Song * song) {
-       if(song->file) str_pool_put(song->file);
-       if(song->artist) str_pool_put(song->artist);
-       if(song->album) str_pool_put(song->album);
-       if(song->title) str_pool_put(song->title);
-       if(song->track) str_pool_put(song->track);
-       if(song->name) str_pool_put(song->name);
-       if(song->date) str_pool_put(song->date);
-       if(song->genre) str_pool_put(song->genre);
-       if(song->composer) str_pool_put(song->composer);
-       if(song->disc) str_pool_put(song->disc);
-       if(song->comment) str_pool_put(song->comment);
-}
-
-mpd_Song * mpd_newSong(void) {
-       mpd_Song * ret = malloc(sizeof(mpd_Song));
-
-       mpd_initSong(ret);
-
-       return ret;
-}
-
-void mpd_freeSong(mpd_Song * song) {
-       mpd_finishSong(song);
-       free(song);
-}
-
-mpd_Song * mpd_songDup(const mpd_Song * song) {
-       mpd_Song * ret = mpd_newSong();
-
-       if(song->file) ret->file = str_pool_dup(song->file);
-       if(song->artist) ret->artist = str_pool_dup(song->artist);
-       if(song->album) ret->album = str_pool_dup(song->album);
-       if(song->title) ret->title = str_pool_dup(song->title);
-       if(song->track) ret->track = str_pool_dup(song->track);
-       if(song->name) ret->name = str_pool_dup(song->name);
-       if(song->date) ret->date = str_pool_dup(song->date);
-       if(song->genre) ret->genre= str_pool_dup(song->genre);
-       if(song->composer) ret->composer= str_pool_dup(song->composer);
-       if(song->disc) ret->disc = str_pool_dup(song->disc);
-       if(song->comment) ret->comment = str_pool_dup(song->comment);
-       ret->time = song->time;
-       ret->pos = song->pos;
-       ret->id = song->id;
-
-       return ret;
-}
-
 static void mpd_initDirectory(mpd_Directory * directory) {
        directory->path = NULL;
 }
index 1f044aabba362e7ffeeb707480b64a92389a194b..910699445e712edadd2ae980a7283647cd267f51 100644 (file)
@@ -33,6 +33,8 @@
 #ifndef LIBMPDCLIENT_H
 #define LIBMPDCLIENT_H
 
+#include "song.h"
+
 #ifdef WIN32
 #  define __W32API_USE_DLLIMPORT__ 1
 #endif
@@ -231,72 +233,6 @@ mpd_Stats * mpd_getStats(mpd_Connection * connection);
 
 void mpd_freeStats(mpd_Stats * stats);
 
-/* SONG STUFF */
-
-#define MPD_SONG_NO_TIME       -1
-#define MPD_SONG_NO_NUM                -1
-#define MPD_SONG_NO_ID         -1
-
-/* mpd_Song
- * for storing song info returned by mpd
- */
-typedef struct _mpd_Song {
-       /* filename of song */
-       char * file;
-       /* artist, maybe NULL if there is no tag */
-       char * artist;
-       /* title, maybe NULL if there is no tag */
-       char * title;
-       /* album, maybe NULL if there is no tag */
-       char * album;
-       /* track, maybe NULL if there is no tag */
-       char * track;
-       /* name, maybe NULL if there is no tag; it's the name of the current
-        * song, f.e. the icyName of the stream */
-       char * name;
-       /* date */
-       char *date;
-
-       /* added by qball */
-       /* Genre */
-       char *genre;
-       /* Composer */
-       char *composer;
-       /* Disc */
-       char *disc;
-       /* Comment */
-       char *comment;
-
-       /* length of song in seconds, check that it is not MPD_SONG_NO_TIME  */
-       int time;
-       /* if plchanges/playlistinfo/playlistid used, is the position of the
-        * song in the playlist */
-       int pos;
-       /* song id for a song in the playlist */
-       int id;
-} mpd_Song;
-
-/* mpd_newSong
- * use to allocate memory for a new mpd_Song
- * file, artist, etc all initialized to NULL
- * if your going to assign values to file, artist, etc
- * be sure to malloc or strdup the memory
- * use mpd_freeSong to free the memory for the mpd_Song, it will also
- * free memory for file, artist, etc, so don't do it yourself
- */
-mpd_Song * mpd_newSong(void);
-
-/* mpd_freeSong
- * use to free memory allocated by mpd_newSong
- * also it will free memory pointed to by file, artist, etc, so be careful
- */
-void mpd_freeSong(mpd_Song * song);
-
-/* mpd_songDup
- * works like strDup, but for a mpd_Song
- */
-mpd_Song * mpd_songDup(const mpd_Song * song);
-
 /* DIRECTORY STUFF */
 
 /* mpd_Directory
diff --git a/src/song.c b/src/song.c
new file mode 100644 (file)
index 0000000..2d97daf
--- /dev/null
@@ -0,0 +1,126 @@
+/* libmpdclient
+   (c)2003-2006 by Warren Dukes (warren.dukes@gmail.com)
+   This project's homepage is: http://www.musicpd.org
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+
+   - Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+   - Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+   - Neither the name of the Music Player Daemon nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "song.h"
+#include "str_pool.h"
+
+#include <stdlib.h>
+
+static void mpd_initSong(mpd_Song * song) {
+       song->file = NULL;
+       song->artist = NULL;
+       song->album = NULL;
+       song->track = NULL;
+       song->title = NULL;
+       song->name = NULL;
+       song->date = NULL;
+       /* added by Qball */
+       song->genre = NULL;
+       song->composer = NULL;
+       song->disc = NULL;
+       song->comment = NULL;
+
+       song->time = MPD_SONG_NO_TIME;
+       song->pos = MPD_SONG_NO_NUM;
+       song->id = MPD_SONG_NO_ID;
+}
+
+static void mpd_finishSong(mpd_Song * song) {
+       if (song->file)
+               str_pool_put(song->file);
+       if (song->artist)
+               str_pool_put(song->artist);
+       if (song->album)
+               str_pool_put(song->album);
+       if (song->title)
+               str_pool_put(song->title);
+       if (song->track)
+               str_pool_put(song->track);
+       if (song->name)
+               str_pool_put(song->name);
+       if (song->date)
+               str_pool_put(song->date);
+       if (song->genre)
+               str_pool_put(song->genre);
+       if (song->composer)
+               str_pool_put(song->composer);
+       if (song->disc)
+               str_pool_put(song->disc);
+       if (song->comment)
+               str_pool_put(song->comment);
+}
+
+mpd_Song * mpd_newSong(void) {
+       mpd_Song * ret = malloc(sizeof(mpd_Song));
+
+       mpd_initSong(ret);
+
+       return ret;
+}
+
+void mpd_freeSong(mpd_Song * song) {
+       mpd_finishSong(song);
+       free(song);
+}
+
+mpd_Song * mpd_songDup(const mpd_Song * song) {
+       mpd_Song * ret = mpd_newSong();
+
+       if (song->file)
+               ret->file = str_pool_dup(song->file);
+       if (song->artist)
+               ret->artist = str_pool_dup(song->artist);
+       if (song->album)
+               ret->album = str_pool_dup(song->album);
+       if (song->title)
+               ret->title = str_pool_dup(song->title);
+       if (song->track)
+               ret->track = str_pool_dup(song->track);
+       if (song->name)
+               ret->name = str_pool_dup(song->name);
+       if (song->date)
+               ret->date = str_pool_dup(song->date);
+       if (song->genre)
+               ret->genre= str_pool_dup(song->genre);
+       if (song->composer)
+               ret->composer= str_pool_dup(song->composer);
+       if (song->disc)
+               ret->disc = str_pool_dup(song->disc);
+       if (song->comment)
+               ret->comment = str_pool_dup(song->comment);
+
+       ret->time = song->time;
+       ret->pos = song->pos;
+       ret->id = song->id;
+
+       return ret;
+}
diff --git a/src/song.h b/src/song.h
new file mode 100644 (file)
index 0000000..e618a47
--- /dev/null
@@ -0,0 +1,101 @@
+/* libmpdclient
+   (c)2003-2006 by Warren Dukes (warren.dukes@gmail.com)
+   (c) 2008 Max Kellermann <max@duempel.org>
+   This project's homepage is: http://www.musicpd.org
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+
+   - Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+   - Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+   - Neither the name of the Music Player Daemon nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef SONG_H
+#define SONG_H
+
+#define MPD_SONG_NO_TIME       -1
+#define MPD_SONG_NO_NUM                -1
+#define MPD_SONG_NO_ID         -1
+
+/* mpd_Song
+ * for storing song info returned by mpd
+ */
+typedef struct _mpd_Song {
+       /* filename of song */
+       char * file;
+       /* artist, maybe NULL if there is no tag */
+       char * artist;
+       /* title, maybe NULL if there is no tag */
+       char * title;
+       /* album, maybe NULL if there is no tag */
+       char * album;
+       /* track, maybe NULL if there is no tag */
+       char * track;
+       /* name, maybe NULL if there is no tag; it's the name of the current
+        * song, f.e. the icyName of the stream */
+       char * name;
+       /* date */
+       char *date;
+
+       /* added by qball */
+       /* Genre */
+       char *genre;
+       /* Composer */
+       char *composer;
+       /* Disc */
+       char *disc;
+       /* Comment */
+       char *comment;
+
+       /* length of song in seconds, check that it is not MPD_SONG_NO_TIME  */
+       int time;
+       /* if plchanges/playlistinfo/playlistid used, is the position of the
+        * song in the playlist */
+       int pos;
+       /* song id for a song in the playlist */
+       int id;
+} mpd_Song;
+
+/* mpd_newSong
+ * use to allocate memory for a new mpd_Song
+ * file, artist, etc all initialized to NULL
+ * if your going to assign values to file, artist, etc
+ * be sure to malloc or strdup the memory
+ * use mpd_freeSong to free the memory for the mpd_Song, it will also
+ * free memory for file, artist, etc, so don't do it yourself
+ */
+mpd_Song * mpd_newSong(void);
+
+/* mpd_freeSong
+ * use to free memory allocated by mpd_newSong
+ * also it will free memory pointed to by file, artist, etc, so be careful
+ */
+void mpd_freeSong(mpd_Song * song);
+
+/* mpd_songDup
+ * works like strDup, but for a mpd_Song
+ */
+mpd_Song * mpd_songDup(const mpd_Song * song);
+
+#endif