From 638f95aa15e068e3568f03ea2349a70dcd471221 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 19 Jan 2009 18:54:04 +0100 Subject: sticker: added song sticker library This is a wrapper for the backend sticker library. It provides several glue functions which take a song object instead of type/uri. --- src/Makefile.am | 3 ++- src/song_sticker.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/song_sticker.h | 47 +++++++++++++++++++++++++++++++++++ 3 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 src/song_sticker.c create mode 100644 src/song_sticker.h diff --git a/src/Makefile.am b/src/Makefile.am index 8b8ed7e75..b1ebe1320 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -97,6 +97,7 @@ mpd_headers = \ song.h \ song_print.h \ song_save.h \ + song_sticker.h \ songvec.h \ state_file.h \ stats.h \ @@ -194,7 +195,7 @@ mpd_SOURCES = \ timer.c if ENABLE_SQLITE -mpd_SOURCES += sticker.c +mpd_SOURCES += sticker.c song_sticker.c endif if HAVE_LIBSAMPLERATE diff --git a/src/song_sticker.c b/src/song_sticker.c new file mode 100644 index 000000000..cdd3f84c3 --- /dev/null +++ b/src/song_sticker.c @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2003-2009 The Music Player Daemon Project + * http://www.musicpd.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 "song_sticker.h" +#include "song.h" +#include "sticker.h" + +#include + +#include + +char * +sticker_song_get_value(const struct song *song, const char *name) +{ + char *uri, *value; + + assert(song != NULL); + assert(song_in_database(song)); + + uri = song_get_uri(song); + value = sticker_load_value("song", uri, name); + g_free(uri); + + return value; +} + +bool +sticker_song_set_value(const struct song *song, + const char *name, const char *value) +{ + char *uri; + bool ret; + + assert(song != NULL); + assert(song_in_database(song)); + + uri = song_get_uri(song); + ret = sticker_store_value("song", uri, name, value); + g_free(uri); + + return ret; +} + +bool +sticker_song_delete(const struct song *song) +{ + char *uri; + bool ret; + + assert(song != NULL); + assert(song_in_database(song)); + + uri = song_get_uri(song); + ret = sticker_delete("song", uri); + g_free(uri); + + return ret; +} diff --git a/src/song_sticker.h b/src/song_sticker.h new file mode 100644 index 000000000..a09279c52 --- /dev/null +++ b/src/song_sticker.h @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2003-2009 The Music Player Daemon Project + * http://www.musicpd.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 SONG_STICKER_H +#define SONG_STICKER_H + +#include + +struct song; + +/** + * Returns one value from a song's sticker record. The caller must + * free the return value with g_free(). + */ +char * +sticker_song_get_value(const struct song *song, const char *name); + +/** + * Sets a sticker value in the specified song. Overwrites existing + * values. + */ +bool +sticker_song_set_value(const struct song *song, + const char *name, const char *value); + +/** + * Deletes a sticker from the database. All values are deleted. + */ +bool +sticker_song_delete(const struct song *song); + +#endif -- cgit v1.2.3