Add parser for DATE field to libcue and cueprint
This commit is contained in:
@@ -31,6 +31,7 @@ Cdtext *cdtext_init()
|
|||||||
{PTI_GENRE, FORMAT_BINARY, NULL},
|
{PTI_GENRE, FORMAT_BINARY, NULL},
|
||||||
{PTI_TOC_INFO1, FORMAT_BINARY, NULL},
|
{PTI_TOC_INFO1, FORMAT_BINARY, NULL},
|
||||||
{PTI_TOC_INFO2, FORMAT_BINARY, NULL},
|
{PTI_TOC_INFO2, FORMAT_BINARY, NULL},
|
||||||
|
{PTI_DATE, FORMAT_BINARY, NULL},
|
||||||
{PTI_RESERVED1, FORMAT_CHAR, NULL},
|
{PTI_RESERVED1, FORMAT_CHAR, NULL},
|
||||||
{PTI_RESERVED2, FORMAT_CHAR, NULL},
|
{PTI_RESERVED2, FORMAT_CHAR, NULL},
|
||||||
{PTI_RESERVED3, FORMAT_CHAR, NULL},
|
{PTI_RESERVED3, FORMAT_CHAR, NULL},
|
||||||
@@ -134,6 +135,9 @@ const char *cdtext_get_key(int pti, int istrack)
|
|||||||
case PTI_TOC_INFO2:
|
case PTI_TOC_INFO2:
|
||||||
key = "TOC_INFO1";
|
key = "TOC_INFO1";
|
||||||
break;
|
break;
|
||||||
|
case PTI_DATE:
|
||||||
|
key = "DATE";
|
||||||
|
break;
|
||||||
case PTI_RESERVED1:
|
case PTI_RESERVED1:
|
||||||
/* reserved */
|
/* reserved */
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ enum Pti {
|
|||||||
PTI_GENRE, /* (binary) genre identification and genre information */
|
PTI_GENRE, /* (binary) genre identification and genre information */
|
||||||
PTI_TOC_INFO1, /* (binary) table of contents information */
|
PTI_TOC_INFO1, /* (binary) table of contents information */
|
||||||
PTI_TOC_INFO2, /* (binary) second table of contents information */
|
PTI_TOC_INFO2, /* (binary) second table of contents information */
|
||||||
|
PTI_DATE, /* date as string of the album */
|
||||||
PTI_RESERVED1, /* reserved */
|
PTI_RESERVED1, /* reserved */
|
||||||
PTI_RESERVED2, /* reserved */
|
PTI_RESERVED2, /* reserved */
|
||||||
PTI_RESERVED3, /* reserved */
|
PTI_RESERVED3, /* reserved */
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ static char *new_filename = NULL; /* last file in this track */
|
|||||||
%token <ival> MESSAGE
|
%token <ival> MESSAGE
|
||||||
%token <ival> DISC_ID
|
%token <ival> DISC_ID
|
||||||
%token <ival> GENRE
|
%token <ival> GENRE
|
||||||
|
%token <ival> DATE
|
||||||
%token <ival> TOC_INFO1
|
%token <ival> TOC_INFO1
|
||||||
%token <ival> TOC_INFO2
|
%token <ival> TOC_INFO2
|
||||||
%token <ival> UPC_EAN
|
%token <ival> UPC_EAN
|
||||||
@@ -247,6 +248,7 @@ cdtext_item
|
|||||||
| MESSAGE
|
| MESSAGE
|
||||||
| DISC_ID
|
| DISC_ID
|
||||||
| GENRE
|
| GENRE
|
||||||
|
| DATE
|
||||||
| TOC_INFO1
|
| TOC_INFO1
|
||||||
| TOC_INFO2
|
| TOC_INFO2
|
||||||
| UPC_EAN
|
| UPC_EAN
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ ARRANGER { BEGIN(NAME); yylval.ival = PTI_ARRANGER; return ARRANGER; }
|
|||||||
MESSAGE { BEGIN(NAME); yylval.ival = PTI_MESSAGE; return MESSAGE; }
|
MESSAGE { BEGIN(NAME); yylval.ival = PTI_MESSAGE; return MESSAGE; }
|
||||||
DISC_ID { BEGIN(NAME); yylval.ival = PTI_DISC_ID; return DISC_ID; }
|
DISC_ID { BEGIN(NAME); yylval.ival = PTI_DISC_ID; return DISC_ID; }
|
||||||
GENRE { BEGIN(NAME); yylval.ival = PTI_GENRE; return GENRE; }
|
GENRE { BEGIN(NAME); yylval.ival = PTI_GENRE; return GENRE; }
|
||||||
|
DATE { BEGIN(NAME); yylval.ival = PTI_DATE; return DATE; }
|
||||||
TOC_INFO1 { BEGIN(NAME); yylval.ival = PTI_TOC_INFO1; return TOC_INFO1; }
|
TOC_INFO1 { BEGIN(NAME); yylval.ival = PTI_TOC_INFO1; return TOC_INFO1; }
|
||||||
TOC_INFO2 { BEGIN(NAME); yylval.ival = PTI_TOC_INFO2; return TOC_INFO2; }
|
TOC_INFO2 { BEGIN(NAME); yylval.ival = PTI_TOC_INFO2; return TOC_INFO2; }
|
||||||
UPC_EAN { BEGIN(NAME); yylval.ival = PTI_UPC_ISRC; return UPC_EAN; }
|
UPC_EAN { BEGIN(NAME); yylval.ival = PTI_UPC_ISRC; return UPC_EAN; }
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ message: %M\n\
|
|||||||
no. of tracks: %N\n\
|
no. of tracks: %N\n\
|
||||||
performer: %P\n\
|
performer: %P\n\
|
||||||
songwriter: %S\n\
|
songwriter: %S\n\
|
||||||
|
date: %D\n\
|
||||||
title: %T\n\
|
title: %T\n\
|
||||||
UPC/EAN: %U\n\
|
UPC/EAN: %U\n\
|
||||||
"
|
"
|
||||||
@@ -39,6 +40,7 @@ Track %n Information\n\
|
|||||||
arranger: %a\n\
|
arranger: %a\n\
|
||||||
composer: %c\n\
|
composer: %c\n\
|
||||||
genre: %g\n\
|
genre: %g\n\
|
||||||
|
date: %d\n\
|
||||||
ISRC: %i\n\
|
ISRC: %i\n\
|
||||||
message: %m\n\
|
message: %m\n\
|
||||||
track number: %n\n\
|
track number: %n\n\
|
||||||
@@ -155,6 +157,10 @@ void disc_field(char *conv, int length, Cd *cd, Value *value)
|
|||||||
value->sval = cdtext_get(PTI_UPC_ISRC, cdtext);
|
value->sval = cdtext_get(PTI_UPC_ISRC, cdtext);
|
||||||
*c = 's';
|
*c = 's';
|
||||||
break;
|
break;
|
||||||
|
case 'D':
|
||||||
|
value->sval = cdtext_get(PTI_DATE, cdtext);
|
||||||
|
*c = 's';
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
value->cval = *c;
|
value->cval = *c;
|
||||||
*c = 'c';
|
*c = 'c';
|
||||||
@@ -191,6 +197,10 @@ void track_field(char *conv, int length, Cd *cd, int trackno, Value *value)
|
|||||||
value->sval = cdtext_get(PTI_GENRE, cdtext);
|
value->sval = cdtext_get(PTI_GENRE, cdtext);
|
||||||
*c = 's';
|
*c = 's';
|
||||||
break;
|
break;
|
||||||
|
case 'd':
|
||||||
|
value->sval = cdtext_get(PTI_DATE, cdtext);
|
||||||
|
*c = 's';
|
||||||
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
value->sval = track_get_isrc(track);
|
value->sval = track_get_isrc(track);
|
||||||
*c = 's';
|
*c = 's';
|
||||||
|
|||||||
Reference in New Issue
Block a user