--- discid.c.orig Thu Dec 27 19:48:57 2001 +++ discid.c Mon Feb 23 20:18:44 2004 @@ -5,14 +5,18 @@ unsigned long discid(cd * this_cd) { - unsigned int i=0, t, n = 0; + unsigned int i=0, t, n = 0, trks=0, l=0; for (i=0; i< this_cd->tracks; i++) - n += cddb_sum((this_cd->track[T2I(i)].start_lba+CD_MSF_OFFSET)/CD_FRAMES); + if(this_cd->track[T2I(i)].type==AUDIO) { + n += cddb_sum((this_cd->track[T2I(i)].start_lba+CD_MSF_OFFSET)/CD_FRAMES); + trks++; l=i; + } - t = this_cd->track[T2I(this_cd->tracks-1)].stop_lba/CD_FRAMES; + t = (this_cd->track[T2I(l+1)].start_lba- + this_cd->track[T2I(0)].start_lba)/CD_FRAMES; - return (((n % 0xFF) << 24) | (t << 8) | this_cd->tracks); + return (((n % 0xFF) << 24) | (t << 8) | trks); }