--- src/io.c +++ src/io.c @@ -2665,6 +2665,8 @@ g_error("Unexpected output in cdda2wav toc-output\n"); } trackinfo[tocnr]->track_nr = atoi(p1); + if (trackinfo[tocnr]->track_nr == 0) + cdinfo.nr_tracks++; trackinfo[tocnr]->isosize = -1; /* reststring into tmp2 - strip to remove leading spaces */ @@ -8401,6 +8403,9 @@ if (extract_quoted(tmp) != 0) return; + if (matchnr == 0 && trackinfo[matchnr]->track_nr == 0) + matchnr++; + if (mode == 0) { if (matchnr >= cdinfo.nr_tracks) { g_warning("invalid track count from cddb-server\n"); @@ -8482,14 +8487,20 @@ /* build of command line */ if (mode == 0 || mode == 2) { + gint ntr = cdinfo.nr_tracks; + + if (ntr > 0 && trackinfo[0]->track_nr == 0) + ntr--; g_snprintf(tmp,MAXLINE,"cddb query %s %d ", - cdinfo.cddb_discid, cdinfo.nr_tracks); + cdinfo.cddb_discid, ntr); for (i = 0; i < cdinfo.nr_tracks; i++) { + if (trackinfo[i]->track_nr == 0) + continue; g_snprintf(tmp2,MAXLINE,"%d ", trackinfo[i]->start_sec + 150); strcat(tmp,tmp2); } - g_snprintf(tmp2,MAXLINE,"%d",cdinfo.total_size / 75); + g_snprintf(tmp2,MAXLINE,"%d",(cdinfo.leadout + 150) / 75); strcat(tmp,tmp2); } else { /* get data from toc file */