1
0
Fork 0
forked from len0rd/rockbox

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
This commit is contained in:
William Wilgus 2022-03-14 17:16:48 -04:00
parent 6dcbf7ff77
commit 9b4e784560
4 changed files with 38 additions and 25 deletions

View file

@ -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*/

View file

@ -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++) {

View file

@ -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;

View file

@ -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);
}