summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-cdr/xcdroast/files/fix_cddb_hidden_tracks.patch')
-rw-r--r--app-cdr/xcdroast/files/fix_cddb_hidden_tracks.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/app-cdr/xcdroast/files/fix_cddb_hidden_tracks.patch b/app-cdr/xcdroast/files/fix_cddb_hidden_tracks.patch
new file mode 100644
index 000000000000..d2e15ef54c69
--- /dev/null
+++ b/app-cdr/xcdroast/files/fix_cddb_hidden_tracks.patch
@@ -0,0 +1,45 @@
+--- 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 */
+