diff options
author | Max Kellermann <max@duempel.org> | 2008-09-16 19:11:39 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-09-16 19:11:39 +0200 |
commit | 8135d7dbf86043fb5f4e960ef4d976e4908631f3 (patch) | |
tree | 5c22757916b32212d47d16b3fc4f8a595df738d9 /src/song.c | |
parent | 9653c35fe54e6c7b4a7764254d6a5283eb859039 (diff) | |
download | mpd-8135d7dbf86043fb5f4e960ef4d976e4908631f3.tar.gz mpd-8135d7dbf86043fb5f4e960ef4d976e4908631f3.tar.xz mpd-8135d7dbf86043fb5f4e960ef4d976e4908631f3.zip |
libmpdclient: moved code to song.c
Move everything which manipulates the mpd_Song struct to song.c.
Thousands of lines of too much for libmpdclient.c!
Diffstat (limited to 'src/song.c')
-rw-r--r-- | src/song.c | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/src/song.c b/src/song.c new file mode 100644 index 000000000..2d97daf7f --- /dev/null +++ b/src/song.c @@ -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; +} |