Commit 429ed24c authored by Max Kellermann's avatar Max Kellermann

tag_ape: support multiple values

One APE tag may contain more than one value, separated by null bytes.
parent 1ab46472
......@@ -21,6 +21,7 @@ ver 0.16 (20??/??/??)
- added tags "ArtistSort", "AlbumArtistSort"
- id3: revised "performer" tag support
- ape: MusicBrainz tags
- ape: support multiple values
* decoders:
- don't try a plugin twice (MIME type & suffix)
- don't fall back to "mad" unless no plugin matches
......
......@@ -52,7 +52,21 @@ tag_ape_import_item(struct tag *tag, unsigned long flags,
if (tag == NULL)
tag = tag_new();
tag_add_item_n(tag, type, value, value_length);
const char *end = value + value_length;
while (true) {
/* multiple values are separated by null bytes */
const char *n = memchr(value, 0, end - value);
if (n != NULL) {
if (n > value)
tag_add_item_n(tag, type, value, n - value);
value = n + 1;
} else {
if (end > value)
tag_add_item_n(tag, type, value, end - value);
break;
}
}
return tag;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment