aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-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