From 1892d29be0567486792464b0457e8afb335d9e08 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sat, 11 Feb 2012 10:51:43 +0100 Subject: decoder/{vorbis,flac}: use the tag_table library --- src/decoder/vorbis_comments.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'src/decoder/vorbis_comments.c') diff --git a/src/decoder/vorbis_comments.c b/src/decoder/vorbis_comments.c index 98b5166e..9145507d 100644 --- a/src/decoder/vorbis_comments.c +++ b/src/decoder/vorbis_comments.c @@ -20,6 +20,7 @@ #include "config.h" #include "vorbis_comments.h" #include "tag.h" +#include "tag_table.h" #include "replay_gain_info.h" #include @@ -73,9 +74,6 @@ vorbis_comments_to_replay_gain(struct replay_gain_info *rgi, char **comments) return found; } -static const char *VORBIS_COMMENT_TRACK_KEY = "tracknumber"; -static const char *VORBIS_COMMENT_DISC_KEY = "discnumber"; - /** * Check if the comment's name equals the passed name, and if so, copy * the comment value into the tag. @@ -95,18 +93,21 @@ vorbis_copy_comment(struct tag *tag, const char *comment, return false; } +static const struct tag_table vorbis_tags[] = { + { "tracknumber", TAG_TRACK }, + { "discnumber", TAG_DISC }, + { "album artist", TAG_ALBUM_ARTIST }, + { NULL, TAG_NUM_OF_ITEM_TYPES } +}; + static void vorbis_parse_comment(struct tag *tag, const char *comment) { assert(tag != NULL); - if (vorbis_copy_comment(tag, comment, VORBIS_COMMENT_TRACK_KEY, - TAG_TRACK) || - vorbis_copy_comment(tag, comment, VORBIS_COMMENT_DISC_KEY, - TAG_DISC) || - vorbis_copy_comment(tag, comment, "album artist", - TAG_ALBUM_ARTIST)) - return; + for (const struct tag_table *i = vorbis_tags; i->name != NULL; ++i) + if (vorbis_copy_comment(tag, comment, i->name, i->type)) + return; for (unsigned i = 0; i < TAG_NUM_OF_ITEM_TYPES; ++i) if (vorbis_copy_comment(tag, comment, -- cgit v1.2.3