diff options
author | itohy <itohy@pkgsrc.org> | 2000-01-19 08:03:00 +0000 |
---|---|---|
committer | itohy <itohy@pkgsrc.org> | 2000-01-19 08:03:00 +0000 |
commit | 03fef19591e5682e08b62963fbe4aec360b14d36 (patch) | |
tree | 52e81050c889053884deae5bb60da2b8cdbd355a /audio/cdparanoia/patches/patch-ce | |
parent | 85439348bd177f8cbaf557309257e97be90e290c (diff) | |
download | pkgsrc-03fef19591e5682e08b62963fbe4aec360b14d36.tar.gz |
An attempt to port cdparanoia-III-alpha9.7.
CD-DA extraction tool with excessive data corrections,
such as jitter, loss of data, etc.
This will soon be obsoleted by cdparanoia IV, I hope....
Most SCSI/ATAPI CD-ROM drives should work fine.
However, the ATAPI stuff is totally untested, and
if it happened to work, it was a miracle. :-)
Currently,
- the feature to search for CD-ROM device is not
implemented and the -g option is required,
- the libraries are not installed.
Diffstat (limited to 'audio/cdparanoia/patches/patch-ce')
-rw-r--r-- | audio/cdparanoia/patches/patch-ce | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/audio/cdparanoia/patches/patch-ce b/audio/cdparanoia/patches/patch-ce new file mode 100644 index 00000000000..de11aaf47db --- /dev/null +++ b/audio/cdparanoia/patches/patch-ce @@ -0,0 +1,111 @@ +$NetBSD: patch-ce,v 1.1.1.1 2000/01/19 08:03:00 itohy Exp $ + +--- interface/cooked_interface.c.orig Wed Aug 18 15:54:32 1999 ++++ interface/cooked_interface.c Mon Jan 17 23:43:14 2000 +@@ -13,6 +13,7 @@ + static int cooked_readtoc (cdrom_drive *d){ + int i; + int tracks; ++#ifdef __linux__ + struct cdrom_tochdr hdr; + struct cdrom_tocentry entry; + +@@ -52,6 +53,45 @@ + d->disc_toc[i].dwStartSector = entry.cdte_addr.lba; + + tracks=hdr.cdth_trk1+1; ++#endif ++ ++#ifdef __NetBSD__ ++ struct ioc_read_toc_entry hdr; ++ struct cd_toc_entry entries[MAXTRK + 1]; /* + 1 for leadout */ ++ ++ hdr.address_format = CD_LBA_FORMAT; ++ hdr.starting_track = 1; ++ hdr.data_len = sizeof entries; ++ hdr.data = entries; ++ memset(entries, 0, sizeof entries); ++ ++ /* get all TOC entries at once */ ++#ifndef CDIOREADTOCENTRIES ++#define CDIOREADTOCENTRIES CDIOREADTOCENTRYS ++#endif ++ if(ioctl(d->ioctl_fd, CDIOREADTOCENTRIES, &hdr)) ++ switch(errno){ ++ case EPERM: ++ cderror(d,"102: Permision denied on cdrom (ioctl) device\n"); ++ return(-102); ++ default: ++ cderror(d,"004: Unable to read table of contents header\n"); ++ return(-4); ++ } ++ ++ for(i = 0; i < MAXTRK + 1; i++) { ++ d->disc_toc[i].bFlags = (entries[i].addr_type << 4) | (entries[i].control & 0x0f); ++ d->disc_toc[i].bTrack = entries[i].track; ++ d->disc_toc[i].dwStartSector = entries[i].addr.lba; ++ if (entries[i].track == 0) { ++ cderror(d,"005: Unable to read table of contents entry\n"); ++ return(-5); ++ } ++ if (entries[i].track >= 100) ++ break; /* leadout */ ++ } ++ tracks = i; ++#endif + d->cd_extra=FixupTOC(d,tracks); + return(--tracks); /* without lead-out */ + } +@@ -60,10 +100,15 @@ + /* Set operating speed */ + static int cooked_setspeed(cdrom_drive *d, int speed) + { ++#ifdef __linux__ + if(d->ioctl_fd!=-1) + return ioctl(d->ioctl_fd, CDROM_SELECT_SPEED, speed); + else + return 0; ++#endif ++#ifdef __NetBSD__ ++ errx(1, "cooked_setspeed: not implemented"); ++#endif + } + + +@@ -72,6 +117,7 @@ + */ + + static long cooked_read (cdrom_drive *d, void *p, long begin, long sectors){ ++#ifdef __linux__ + int retry_count,err; + struct cdrom_read_audio arg; + char *buffer=(char *)p; +@@ -127,6 +173,10 @@ + } while (err); + + return(sectors); ++#endif ++#ifdef __NetBSD__ ++ errx(1, "cooked_read: not implemented"); ++#endif + } + + /* hook */ +@@ -191,6 +241,7 @@ + + /* set function pointers to use the ioctl routines */ + int cooked_init_drive (cdrom_drive *d){ ++#ifdef __linux__ + int ret; + + switch(d->drive_type){ +@@ -255,5 +306,9 @@ + if((ret=verify_read_command(d)))return(ret); + d->error_retry=1; + return(0); ++#endif ++#ifdef __NetBSD__ ++ errx(1, "cooked_init_drive: not implemented"); ++#endif + } + |