[PATCH] CDROMPLAYTRKIND was broken

Peter Samuelson (peter@wire.cadcamlab.org)
Mon, 20 Dec 1999 04:22:48 -0600 (CST)


Jens, *,

A fencepost error in drivers/cdrom/cdrom.c was causing CDs to play one
track less than you asked for (with the CDROMPLAYTRKIND ioctl). Then
in 2.3.31 or so it broke entirely. The following seems to make it work
again. NOTE: I only tested ide-cd since that's all I have.

Peter

--- 2.3.34pre2/drivers/cdrom/cdrom.c~ Sun Dec 19 22:59:58 1999
+++ 2.3.34pre2/drivers/cdrom/cdrom.c Mon Dec 20 04:04:14 1999
@@ -1931,7 +1931,7 @@
/* get toc entry for start and end track */
if (cdo->audio_ioctl(cdi, CDROMREADTOCHDR, &tochdr))
return -EINVAL;
- entry.cdte_track = ti.cdti_trk1 + 1;
+ entry.cdte_track = ti.cdti_trk0;
if (entry.cdte_track > tochdr.cdth_trk1)
return -EINVAL;
if (cdo->audio_ioctl(cdi, CDROMREADTOCENTRY, &entry))
@@ -1941,7 +1941,11 @@
cgc.cmd[4] = entry.cdte_addr.msf.second;
cgc.cmd[5] = entry.cdte_addr.msf.frame;

- entry.cdte_track = ti.cdti_trk1;
+ entry.cdte_track = ti.cdti_trk1 + 1;
+ if (entry.cdte_track > tochdr.cdth_trk1 + 1)
+ return -EINVAL;
+ if (entry.cdte_track == tochdr.cdth_trk1 + 1)
+ entry.cdte_track = CDROM_LEADOUT;
if (cdo->audio_ioctl(cdi, CDROMREADTOCENTRY, &entry))
return -EINVAL;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/