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/flac_metadata.c | 21 ++++++++++----------- src/decoder/vorbis_comments.c | 21 +++++++++++---------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/decoder/flac_metadata.c b/src/decoder/flac_metadata.c index a19220572..30dedda37 100644 --- a/src/decoder/flac_metadata.c +++ b/src/decoder/flac_metadata.c @@ -21,6 +21,7 @@ #include "flac_metadata.h" #include "replay_gain_info.h" #include "tag.h" +#include "tag_table.h" #include @@ -180,10 +181,12 @@ flac_copy_comment(struct tag *tag, return false; } -/* tracknumber is used in VCs, MPD uses "track" ..., all the other - * tag names match */ -static const char *VORBIS_COMMENT_TRACK_KEY = "tracknumber"; -static const char *VORBIS_COMMENT_DISC_KEY = "discnumber"; +static const struct tag_table flac_tags[] = { + { "tracknumber", TAG_TRACK }, + { "discnumber", TAG_DISC }, + { "album artist", TAG_ALBUM_ARTIST }, + { NULL, TAG_NUM_OF_ITEM_TYPES } +}; static void flac_parse_comment(struct tag *tag, const char *char_tnum, @@ -191,13 +194,9 @@ flac_parse_comment(struct tag *tag, const char *char_tnum, { assert(tag != NULL); - if (flac_copy_comment(tag, entry, VORBIS_COMMENT_TRACK_KEY, - TAG_TRACK, char_tnum) || - flac_copy_comment(tag, entry, VORBIS_COMMENT_DISC_KEY, - TAG_DISC, char_tnum) || - flac_copy_comment(tag, entry, "album artist", - TAG_ALBUM_ARTIST, char_tnum)) - return; + for (const struct tag_table *i = flac_tags; i->name != NULL; ++i) + if (flac_copy_comment(tag, entry, i->name, i->type, char_tnum)) + return; for (unsigned i = 0; i < TAG_NUM_OF_ITEM_TYPES; ++i) if (flac_copy_comment(tag, entry, diff --git a/src/decoder/vorbis_comments.c b/src/decoder/vorbis_comments.c index 98b5166e5..9145507dc 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