Index: firmware/id3.c =================================================================== --- firmware/id3.c (revision 18351) +++ firmware/id3.c (working copy) @@ -350,17 +350,34 @@ } /* parse numeric value from string */ +static int parsetrackordisc( struct mp3entry* entry, char* tag, bool track ) +{ + char *s = strchr(tag, '/'); + int num = atoi(tag); + + if (s != NULL && num != 0) + *s = 0; + + if (track) + entry->tracknum = num; + else + entry->discnum = num; + + return tag - entry->id3v2buf + strlen(tag) + 1; +} + +/* parse numeric value from string */ static int parsetracknum( struct mp3entry* entry, char* tag, int bufferpos ) { - entry->tracknum = atoi( tag ); - return bufferpos; + (void) bufferpos; + return parsetrackordisc(entry, tag, true); } /* parse numeric value from string */ static int parsediscnum( struct mp3entry* entry, char* tag, int bufferpos ) { - entry->discnum = atoi( tag ); - return bufferpos; + (void) bufferpos; + return parsetrackordisc(entry, tag, false); } /* parse numeric value from string */