diff --git a/cue_parser.y b/cue_parser.y index c648e04..585de27 100644 --- a/cue_parser.y +++ b/cue_parser.y @@ -123,6 +123,8 @@ Cd *cue_parse_string(const char*); %type rem_item %token DATE %token XXX_GENRE /* parsed in REM but stored in CD-TEXT */ +%token XXX_DISCID +%token XXX_COMPOSER %token REPLAYGAIN_ALBUM_GAIN %token REPLAYGAIN_ALBUM_PEAK %token REPLAYGAIN_TRACK_GAIN @@ -310,6 +312,8 @@ time rem : rem_item STRING '\n' { rem_set($1, $2, rem); } | XXX_GENRE STRING '\n' { cdtext_set($1, $2, cdtext); } + | XXX_DISCID STRING '\n' { cdtext_set($1, $2, cdtext); } + | XXX_COMPOSER STRING '\n' { cdtext_set($1, $2, cdtext); } ; rem_item diff --git a/cue_scanner.l b/cue_scanner.l index 7ea71d0..8fa06fa 100644 --- a/cue_scanner.l +++ b/cue_scanner.l @@ -103,6 +103,8 @@ REM { BEGIN(REM); /* exclusive rules for special exceptions */ } DATE { BEGIN(NAME); yylval.ival = REM_DATE; return DATE; } GENRE { BEGIN(NAME); yylval.ival = PTI_GENRE; return XXX_GENRE; } +DISCID { BEGIN(NAME); yylval.ival = PTI_DISC_ID; return XXX_DISCID; } +COMPOSER { BEGIN(NAME); yylval.ival = PTI_COMPOSER; return XXX_COMPOSER; } REPLAYGAIN_ALBUM_GAIN { BEGIN(RPG); yylval.ival = REM_REPLAYGAIN_ALBUM_GAIN; return REPLAYGAIN_ALBUM_GAIN; } REPLAYGAIN_ALBUM_PEAK { BEGIN(RPG); yylval.ival = REM_REPLAYGAIN_ALBUM_PEAK; diff --git a/t/standard_cue.c b/t/standard_cue.c index 4177bf9..8b73073 100644 --- a/t/standard_cue.c +++ b/t/standard_cue.c @@ -64,6 +64,10 @@ static char* cue_test() mu_assert ("error getting CD total discs", val != NULL); mu_assert ("error validating CD total discs", strcmp (val, "2") == 0); + val = cdtext_get (PTI_DISC_ID, cdtext); + mu_assert ("error getting CD disc id", val != NULL); + mu_assert ("error validating CD disc id", strcmp (val, "860B640B") == 0); + val = rem_get (REM_COMMENT, rem); mu_assert ("error getting CD comment", val != NULL); mu_assert ("error validating CD comment", strcmp (val, "ExactAudioCopy v0.95b4") == 0);