summaryrefslogtreecommitdiffstats
path: root/sys/scsi/cd.c
diff options
context:
space:
mode:
authorache <ache@FreeBSD.org>1996-02-02 23:43:40 +0000
committerache <ache@FreeBSD.org>1996-02-02 23:43:40 +0000
commita724de6de3f9d19ad0452b13b669e06fa38832c0 (patch)
tree6c911eeca076ad3b1372c42cba7c4d6b9bbedc65 /sys/scsi/cd.c
parentab6036fedfa65db827ce207c2faa4b8e31266c21 (diff)
downloadFreeBSD-src-a724de6de3f9d19ad0452b13b669e06fa38832c0.zip
FreeBSD-src-a724de6de3f9d19ad0452b13b669e06fa38832c0.tar.gz
Simplify READTOCENTRYS by removing fake leadout code,
SCSI system do it for us
Diffstat (limited to 'sys/scsi/cd.c')
-rw-r--r--sys/scsi/cd.c42
1 files changed, 5 insertions, 37 deletions
diff --git a/sys/scsi/cd.c b/sys/scsi/cd.c
index f661a85..48ebf94 100644
--- a/sys/scsi/cd.c
+++ b/sys/scsi/cd.c
@@ -14,7 +14,7 @@
*
* Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992
*
- * $Id: cd.c,v 1.63 1996/02/01 17:35:15 ache Exp $
+ * $Id: cd.c,v 1.64 1996/02/02 20:43:11 ache Exp $
*/
#include "opt_bounce.h"
@@ -769,8 +769,8 @@ cd_ioctl(dev_t dev, int cmd, caddr_t addr, int flag, struct proc *p,
struct ioc_read_toc_entry *te =
(struct ioc_read_toc_entry *) addr;
struct ioc_toc_header *th;
- u_int32 len, readlen, idx, num;
- u_int32 starting_track = te->starting_track, readtrack;
+ u_int32 len;
+ u_int32 starting_track = te->starting_track;
if ( te->data_len < sizeof(struct cd_toc_entry)
|| (te->data_len % sizeof(struct cd_toc_entry)) != 0
@@ -805,46 +805,14 @@ cd_ioctl(dev_t dev, int cmd, caddr_t addr, int flag, struct proc *p,
error = EINVAL;
break;
}
- num = len / sizeof(struct cd_toc_entry);
-
- /* calculate reading track/length without leadout entry */
- readtrack = starting_track;
- if (readtrack == th->ending_track + 1)
- readtrack--;
- readlen = (th->ending_track - readtrack + 1) *
- sizeof(struct cd_toc_entry);
- if (readlen > len)
- readlen = len;
error = cd_read_toc(unit, te->address_format,
- readtrack,
+ starting_track,
(struct cd_toc_entry *)&data,
- readlen + sizeof (*th));
+ len + sizeof (*th));
if (error)
break;
- /* make fake leadout entry if needed */
- idx = starting_track + num - 1;
- if (idx == th->ending_track + 1) {
- idx -= starting_track; /* now offset in the entries */
- if (idx > 0) {
- data.entries[idx].control = data.entries[idx-1].control;
- data.entries[idx].addr_type = data.entries[idx-1].addr_type;
- }
- data.entries[idx].track = 170; /* magic */
- switch (te->address_format) {
- case CD_MSF_FORMAT:
- lba2msf (cd->params.disksize,
- &data.entries[idx].addr.msf.minute,
- &data.entries[idx].addr.msf.second,
- &data.entries[idx].addr.msf.frame);
- break;
- case CD_LBA_FORMAT:
- data.entries[idx].addr.lba = htonl(cd->params.disksize);
- break;
- }
- }
-
error = copyout(data.entries, te->data, len);
}
break;
OpenPOWER on IntegriCloud