diff options
author | Max Kellermann <max@duempel.org> | 2012-02-11 19:24:51 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2012-02-12 13:41:48 +0100 |
commit | ffea273a28179d2b5bbc24f967517bcf80940c63 (patch) | |
tree | 5891ed63a60ba0eed7c2b4433ea72f566f982822 /src/decoder/vorbis_comments.c | |
parent | 1783aac4384ccc53d9ad25c237d4286ccdbccbc0 (diff) | |
download | mpd-ffea273a28179d2b5bbc24f967517bcf80940c63.tar.gz mpd-ffea273a28179d2b5bbc24f967517bcf80940c63.tar.xz mpd-ffea273a28179d2b5bbc24f967517bcf80940c63.zip |
tag_handler: handle arbitrary name/value pairs
The new method pair() receives an arbitrary name/value pair. Support
for this is being added to a few decoder plugins.
Diffstat (limited to 'src/decoder/vorbis_comments.c')
-rw-r--r-- | src/decoder/vorbis_comments.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/decoder/vorbis_comments.c b/src/decoder/vorbis_comments.c index e94ee3d0a..6c2d57b72 100644 --- a/src/decoder/vorbis_comments.c +++ b/src/decoder/vorbis_comments.c @@ -106,6 +106,19 @@ static void vorbis_scan_comment(const char *comment, const struct tag_handler *handler, void *handler_ctx) { + if (handler->pair != NULL) { + char *name = g_strdup((const char*)comment); + char *value = strchr(name, '='); + + if (value != NULL && value > name) { + *value++ = 0; + tag_handler_invoke_pair(handler, handler_ctx, + name, value); + } + + g_free(name); + } + for (const struct tag_table *i = vorbis_tags; i->name != NULL; ++i) if (vorbis_copy_comment(comment, i->name, i->type, handler, handler_ctx)) |