aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2012-02-12 18:25:10 +0100
committerMax Kellermann <max@duempel.org>2012-02-12 18:40:55 +0100
commit686d8bbe6956b53000228c3754a278e7805467fc (patch)
tree29a42ec001d34f1feabb12757caefc4fcf64d4a6
parent4b36af4a349fb8840b0bb3a9fb30552abbac663f (diff)
downloadmpd-686d8bbe6956b53000228c3754a278e7805467fc.tar.gz
mpd-686d8bbe6956b53000228c3754a278e7805467fc.tar.xz
mpd-686d8bbe6956b53000228c3754a278e7805467fc.zip
tag_handler: add new handler that updates has_playlist
-rw-r--r--src/tag_handler.c17
-rw-r--r--src/tag_handler.h7
2 files changed, 24 insertions, 0 deletions
diff --git a/src/tag_handler.c b/src/tag_handler.c
index 32de7650d..316715e87 100644
--- a/src/tag_handler.c
+++ b/src/tag_handler.c
@@ -20,6 +20,8 @@
#include "config.h"
#include "tag_handler.h"
+#include <glib.h>
+
static void
add_tag_duration(unsigned seconds, void *ctx)
{
@@ -41,3 +43,18 @@ const struct tag_handler add_tag_handler = {
.tag = add_tag_tag,
};
+static void
+full_tag_pair(const char *name, G_GNUC_UNUSED const char *value, void *ctx)
+{
+ struct tag *tag = ctx;
+
+ if (g_ascii_strcasecmp(name, "cuesheet") == 0)
+ tag->has_playlist = true;
+}
+
+const struct tag_handler full_tag_handler = {
+ .duration = add_tag_duration,
+ .tag = add_tag_tag,
+ .pair = full_tag_pair,
+};
+
diff --git a/src/tag_handler.h b/src/tag_handler.h
index 653918588..7f15c2a48 100644
--- a/src/tag_handler.h
+++ b/src/tag_handler.h
@@ -91,4 +91,11 @@ tag_handler_invoke_pair(const struct tag_handler *handler, void *ctx,
*/
extern const struct tag_handler add_tag_handler;
+/**
+ * This #tag_handler implementation adds tag values to a #tag object
+ * (casted from the context pointer), and supports the has_playlist
+ * attribute.
+ */
+extern const struct tag_handler full_tag_handler;
+
#endif