summaryrefslogtreecommitdiff
blob: ca532f20d359d4590bad81d2d53d0012ecf6144e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
--- a/src/io.c
+++ b/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 */