diff options
-rw-r--r-- | src/tag_id3.c | 25 | ||||
-rw-r--r-- | src/tag_table.h | 16 |
2 files changed, 26 insertions, 15 deletions
diff --git a/src/tag_id3.c b/src/tag_id3.c index 829b196b8..1facf3c18 100644 --- a/src/tag_id3.c +++ b/src/tag_id3.c @@ -19,6 +19,7 @@ #include "config.h" #include "tag_id3.h" +#include "tag_table.h" #include "tag.h" #include "riff.h" #include "aiff.h" @@ -242,23 +243,17 @@ tag_id3_import_comment(struct tag *dest, struct id3_tag *tag, const char *id, static enum tag_type tag_id3_parse_txxx_name(const char *name) { - static const struct { - enum tag_type type; - const char *name; - } musicbrainz_txxx[] = { - { TAG_ALBUM_ARTIST_SORT, "ALBUMARTISTSORT" }, - { TAG_MUSICBRAINZ_ARTISTID, "MusicBrainz Artist Id" }, - { TAG_MUSICBRAINZ_ALBUMID, "MusicBrainz Album Id" }, - { TAG_MUSICBRAINZ_ALBUMARTISTID, - "MusicBrainz Album Artist Id" }, - { TAG_MUSICBRAINZ_TRACKID, "MusicBrainz Track Id" }, + static const struct tag_table txxx_tags[] = { + { "ALBUMARTISTSORT", TAG_ALBUM_ARTIST_SORT }, + { "MusicBrainz Artist Id", TAG_MUSICBRAINZ_ARTISTID }, + { "MusicBrainz Album Id", TAG_MUSICBRAINZ_ALBUMID }, + { "MusicBrainz Album Artist Id", + TAG_MUSICBRAINZ_ALBUMARTISTID }, + { "MusicBrainz Track Id", TAG_MUSICBRAINZ_TRACKID }, + { NULL, TAG_NUM_OF_ITEM_TYPES } }; - for (unsigned i = 0; i < G_N_ELEMENTS(musicbrainz_txxx); ++i) - if (strcmp(name, musicbrainz_txxx[i].name) == 0) - return musicbrainz_txxx[i].type; - - return TAG_NUM_OF_ITEM_TYPES; + return tag_table_lookup(txxx_tags, name); } /** diff --git a/src/tag_table.h b/src/tag_table.h index ecb3805d2..d87d4869a 100644 --- a/src/tag_table.h +++ b/src/tag_table.h @@ -31,6 +31,22 @@ struct tag_table { }; /** + * Looks up a string in a tag translation table (case sensitive). + * Returns TAG_NUM_OF_ITEM_TYPES if the specified name was not found + * in the table. + */ +G_GNUC_PURE +static inline enum tag_type +tag_table_lookup(const struct tag_table *table, const char *name) +{ + for (; table->name != NULL; ++table) + if (strcmp(name, table->name) == 0) + return table->type; + + return TAG_NUM_OF_ITEM_TYPES; +} + +/** * Looks up a string in a tag translation table (case insensitive). * Returns TAG_NUM_OF_ITEM_TYPES if the specified name was not found * in the table. |