From 9b4e7845602683882577aa9fe52aa55f3874a341 Mon Sep 17 00:00:00 2001 From: William Wilgus Date: Mon, 14 Mar 2022 17:16:48 -0400 Subject: BUGFIX string_option parsers fix bugs introduced in the switch over to using string_option instead of if else strcmp trees, embedded album art should work again skin parser had an error for 'noborder' and 'nobar' Change-Id: I957d81e5fa8467b33bbd93d63c4428c36100acca --- apps/gui/skin_engine/skin_parser.c | 13 ++++++++----- lib/rbcodec/metadata/asf.c | 19 +++++++++++++------ lib/rbcodec/metadata/id3tags.c | 3 ++- lib/rbcodec/metadata/metadata_common.c | 28 +++++++++++++++------------- 4 files changed, 38 insertions(+), 25 deletions(-) diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index a9b1ef4706..ee32c06ace 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c @@ -1051,12 +1051,15 @@ static int parse_progressbar_tag(struct skin_element* element, enum { eINVERT = 0, eNOFILL, eNOBORDER, eNOBAR, eSLIDER, eIMAGE, - eBACKDROP, eVERTICAL, eHORIZONTAL, eNOTOUCH, eSETTING + eBACKDROP, eVERTICAL, eHORIZONTAL, eNOTOUCH, eSETTING, + e_PB_TAG_COUNT }; - static const char *pb_options[] = {"invert", "nofill", "noborder, nobar", "slider", - "image", "backdrop", "vertical", "horizontal", - "notouch", "setting", NULL}; + static const char *pb_options[e_PB_TAG_COUNT + 1] = {[eINVERT] = "invert", + [eNOFILL] = "nofill", [eNOBORDER] = "noborder", [eNOBAR] = "nobar", + [eSLIDER] = "slider", [eIMAGE] = "image", [eBACKDROP] = "backdrop", + [eVERTICAL] = "vertical", [eHORIZONTAL] = "horizontal", + [eNOTOUCH] = "notouch", [eSETTING] = "setting", [e_PB_TAG_COUNT] = NULL}; int pb_op; while (curr_param < element->params_count) @@ -1409,7 +1412,7 @@ static int parse_skinvar( struct skin_element *element, if (!isdefault(get_param(element, 2))) data->newval = get_param(element, 2)->data.number; - else if (sv_op == 0) /*touch*/ + else if (sv_op != 0) /*!touch*/ return WPS_ERROR_INVALID_PARAM; data->max = 0; if (sv_op == 1) /*set*/ diff --git a/lib/rbcodec/metadata/asf.c b/lib/rbcodec/metadata/asf.c index 82873a43a6..b578746658 100644 --- a/lib/rbcodec/metadata/asf.c +++ b/lib/rbcodec/metadata/asf.c @@ -441,13 +441,20 @@ static int asf_parse_header(int fd, struct mp3entry* id3, { eWM_TrackNumber, eWM_Genre, eWM_AlbumTitle, eWM_AlbumArtist, eWM_Composer, eWM_Year, - eWM_MusicBrainz_Track_Id, eWM_Picture + eWM_MusicBrainz_Track_Id, eWM_Picture, + eWM_COUNT_TAG_COUNT }; - - static const char *tagops[] = - { "WM/TrackNumber", "WM/Genre", "WM/AlbumTitle", - "WM/AlbumArtist", "WM/Composer", "WM/Year", - "MusicBrainz/Track Id", "WM/Picture", NULL + + static const char *tagops[eWM_COUNT_TAG_COUNT + 1] = + { [eWM_TrackNumber] = "WM/TrackNumber", + [eWM_Genre] = "WM/Genre", + [eWM_AlbumTitle] = "WM/AlbumTitle", + [eWM_AlbumArtist] = "WM/AlbumArtist", + [eWM_Composer] = "WM/Composer", + [eWM_Year] = "WM/Year", + [eWM_MusicBrainz_Track_Id]"MusicBrainz/Track Id", + [eWM_Picture]"WM/Picture", + [eWM_COUNT_TAG_COUNT] = NULL }; for (i=0; i < count; i++) { diff --git a/lib/rbcodec/metadata/id3tags.c b/lib/rbcodec/metadata/id3tags.c index 18258c73ac..ba7695d569 100644 --- a/lib/rbcodec/metadata/id3tags.c +++ b/lib/rbcodec/metadata/id3tags.c @@ -312,9 +312,10 @@ static int parsealbumart( struct mp3entry* entry, char* tag, int bufferpos ) if (memcmp(tag, "image/", 6) == 0) { - int tg_op = string_option(tag, img_options, false); /* ID3 v2.3+ */ tag += 6; + int tg_op = string_option(tag, img_options, false); + if (tg_op == 0) /*jpeg*/ { entry->albumart.type = AA_TYPE_JPG; diff --git a/lib/rbcodec/metadata/metadata_common.c b/lib/rbcodec/metadata/metadata_common.c index 59c2f01840..e38b9e4d9a 100644 --- a/lib/rbcodec/metadata/metadata_common.c +++ b/lib/rbcodec/metadata/metadata_common.c @@ -288,15 +288,21 @@ long parse_tag(const char* name, char* value, struct mp3entry* id3, eYEAR, eDATE, eTITLE, eARTIST, eALBUM, eGENRE, eCOMPOSER, eCOMMENT, eALBUMARTIST, eALBUM_ARTIST, eENSEMBLE, eGROUPING, eCONTENTGROUP, eCONTENT_GROUP, - eMUSICBRAINZ1, eMUSICBRAINZ2 + eMUSICBRAINZ1, eMUSICBRAINZ2, e_COUNT_TAG_COUNT }; - - static const char *tagops[] = - { "track", "tracknumber", "discnumber", "disc", - "year","date","title", "artist", "album", "genre" - "composer","comment","albumartist","album artist", - "ensemble","grouping","contentgroup","content group", - "musicbrainz_trackid", "http://musicbrainz.org", NULL + + static const char *tagops[e_COUNT_TAG_COUNT + 1] = + { [eTRACK] = "track", [eTRACKNUMBER] = "tracknumber", + [eDISCNUMBER] = "discnumber", [eDISC] = "disc", + [eYEAR] = "year", [eDATE] = "date", [eTITLE] = "title", + [eARTIST] = "artist", [eALBUM] = "album", [eGENRE] = "genre" + [eCOMPOSER] = "composer", [eCOMMENT] = "comment", + [eALBUMARTIST] = "albumartist", [eALBUM_ARTIST] ="album artist", + [eENSEMBLE] = "ensemble", [eGROUPING] = "grouping", + [eCONTENTGROUP] = "contentgroup", [eCONTENT_GROUP] = "content group", + [eMUSICBRAINZ1] = "musicbrainz_trackid", + [eMUSICBRAINZ2] = "http://musicbrainz.org", + [e_COUNT_TAG_COUNT] = NULL; }; int item = string_option(name, tagops, true); @@ -351,11 +357,7 @@ long parse_tag(const char* name, char* value, struct mp3entry* id3, { p = &(id3->comment); } - else if (item == eALBUMARTIST || item == eALBUM_ARTIST) - { - p = &(id3->albumartist); - } - else if (item == eENSEMBLE) + else if (item == eALBUMARTIST || item == eALBUM_ARTIST || item == eENSEMBLE) { p = &(id3->albumartist); } -- cgit v1.2.3