Make the cdrom device probe work properly under NetBSD, instead of

messily hardwiring it to /dev/rcd0[cd]; the latter apparently breaks
in some circumstances. Uses as a starting point a patch from Kimura
Fuyuki in PR 34008. PKGREVISION++ (to 7).
This commit is contained in:
dholland 2009-05-17 21:29:33 +00:00
parent db8aca7c27
commit acb232a004
6 changed files with 105 additions and 91 deletions

View file

@ -1,9 +1,9 @@
# $NetBSD: Makefile,v 1.25 2007/02/22 19:26:05 wiz Exp $
# $NetBSD: Makefile,v 1.26 2009/05/17 21:29:33 dholland Exp $
#
DISTNAME= cdparanoia-III-alpha9.8
PKGNAME= cdparanoia-3.0.9.8
PKGREVISION= 6
PKGREVISION= 7
CATEGORIES= audio
MASTER_SITES= http://www.xiph.org/paranoia/download/
EXTRACT_SUFX= .src.tgz

View file

@ -1,20 +1,20 @@
$NetBSD: distinfo,v 1.20 2007/10/09 21:26:11 heinz Exp $
$NetBSD: distinfo,v 1.21 2009/05/17 21:29:33 dholland Exp $
SHA1 (cdparanoia-III-alpha9.8.src.tgz) = 04cc33a7d22d6255f6239e3e74195506b3bdde06
RMD160 (cdparanoia-III-alpha9.8.src.tgz) = d9225165f83b5386c58db263d6918a7006df1481
Size (cdparanoia-III-alpha9.8.src.tgz) = 116591 bytes
SHA1 (patch-aa) = 29fd5767b37360fe804013bb171fc7e5f4d8311f
SHA1 (patch-ab) = 7b3d4b325c4095c08425cc28033297f1ffc3ce95
SHA1 (patch-ab) = fcbeaf7f3e1318ef8bcc8742adec3a3a7efc937e
SHA1 (patch-ac) = 6bd7ad7a0e8bcd1f8354c73706cafb0e789b8252
SHA1 (patch-ad) = 9a1ea1b98b5f3810e1ccae57beb8c68b5e189716
SHA1 (patch-ae) = 6ba166c2ac73b9c03a1944989c6ffbe655d80c71
SHA1 (patch-ae) = 59d74c0392d5bcc37299326efa8ba700722d5cf4
SHA1 (patch-ba) = 51151796493c946e5bdafbd22005136ea7f27a09
SHA1 (patch-ca) = 9c35254c09a96b622cac44198443f66f7bc0e428
SHA1 (patch-ca) = 433b7ddd7d1cf0123dadfdff8e550381eaf51f22
SHA1 (patch-cb) = c19ee04017b836842bb0f2d2c77e8f35aad0f9bb
SHA1 (patch-cc) = adea4fd9682c0543e5749c6f3fe73697d8663c6c
SHA1 (patch-cd) = 81d31fb55db0f982959395cdecc3da826bf23bfb
SHA1 (patch-ce) = 3a4e9a83753e2eb6595bcb4e7a47c42b72ef5702
SHA1 (patch-cf) = d8cde95f9efa9c1941768468c30b1152c083830f
SHA1 (patch-cf) = ae8c19f7df5dbb97c258ea808834c3e13809b185
SHA1 (patch-cg) = c962cbc84f021e399b6f210d0e7a140fd7004222
SHA1 (patch-ch) = 8d16dd8c80e8f1ee35ccc299ba927d685adde01c
SHA1 (patch-ci) = 60db1d1d2e8ec9c6d446543762218b22c597d986

View file

@ -1,7 +1,7 @@
$NetBSD: patch-ab,v 1.7 2006/11/03 12:45:21 joerg Exp $
$NetBSD: patch-ab,v 1.8 2009/05/17 21:29:34 dholland Exp $
--- Makefile.in.orig 2001-03-27 22:46:58.000000000 +0000
+++ Makefile.in
--- Makefile.in.orig 2001-03-27 17:46:58.000000000 -0500
+++ Makefile.in 2009-05-17 17:21:32.000000000 -0400
@@ -3,12 +3,12 @@
# DO NOT EDIT BELOW! ##########################################################
# (unless, of course, you know what you are doing :) ##########################
@ -13,7 +13,7 @@ $NetBSD: patch-ab,v 1.7 2006/11/03 12:45:21 joerg Exp $
@SET_MAKE@
-FLAGS=@TYPESIZES@ @CFLAGS@
+FLAGS=@GETOPT_LONG@ @RAWPART@ @TYPESIZES@ @CFLAGS@
+FLAGS=@GETOPT_LONG@ @TYPESIZES@ @CFLAGS@
OPT=@OPT@ $(FLAGS)
DEBUG=@DEBUG@ $(FLAGS)
CC=@CC@

View file

@ -1,8 +1,8 @@
$NetBSD: patch-ae,v 1.5 2006/09/03 17:13:30 ben Exp $
$NetBSD: patch-ae,v 1.6 2009/05/17 21:29:34 dholland Exp $
--- main.c.orig 2001-03-25 19:44:50.000000000 -0800
+++ main.c
@@ -49,12 +49,18 @@
--- main.c.orig 2001-03-25 22:44:50.000000000 -0500
+++ main.c 2009-05-17 17:20:20.000000000 -0400
@@ -49,7 +49,9 @@
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
@ -12,16 +12,7 @@ $NetBSD: patch-ae,v 1.5 2006/09/03 17:13:30 ben Exp $
#include <errno.h>
#include <math.h>
#include <sys/time.h>
#include <sys/stat.h>
+#ifdef HAVE_GETRAWPARTITION
+#include <util.h>
+#endif
+
#include "interface/cdda_interface.h"
#include "paranoia/cdda_paranoia.h"
#include "utils.h"
@@ -231,6 +237,7 @@ VERSION"\n"
@@ -231,6 +233,7 @@ VERSION"\n"
" cdparanoia [options] <span> [outfile]\n\n"
"OPTIONS:\n"
@ -29,7 +20,7 @@ $NetBSD: patch-ae,v 1.5 2006/09/03 17:13:30 ben Exp $
" -v --verbose : extra verbose operation\n"
" -q --quiet : quiet operation\n"
" -e --stderr-progress : force output of progress information to\n"
@@ -256,9 +263,11 @@ VERSION"\n"
@@ -256,9 +259,11 @@ VERSION"\n"
" to n sectors\n"
" -o --force-search-overlap <n> : force minimum overlap search during\n"
" verification to n sectors\n"
@ -41,7 +32,7 @@ $NetBSD: patch-ae,v 1.5 2006/09/03 17:13:30 ben Exp $
" -S --force-read-speed <n> : read from device at specified speed\n"
" -t --toc-offset <n> : Add <n> sectors to the values reported\n"
" when addressing tracks. May be negative\n"
@@ -276,6 +285,52 @@ VERSION"\n"
@@ -276,6 +281,52 @@ VERSION"\n"
" -Z --disable-paranoia : disable all paranoia checking\n"
" -Y --disable-extra-paranoia : only do cdda2wav-style overlap checking\n"
" -X --abort-on-skip : abort on imperfect reads/skips\n\n"
@ -94,7 +85,7 @@ $NetBSD: patch-ae,v 1.5 2006/09/03 17:13:30 ben Exp $
"OUTPUT SMILIES:\n"
" :-) Normal operation, low/no jitter\n"
@@ -376,7 +431,7 @@ static void callback(long inpos, int fun
@@ -376,7 +427,7 @@ static void callback(long inpos, int fun
int graph=30;
char buffer[256];
static long c_sector=0,v_sector=0;
@ -103,7 +94,7 @@ $NetBSD: patch-ae,v 1.5 2006/09/03 17:13:30 ben Exp $
static int last=0;
static long lasttime=0;
long sector,osector=0;
@@ -587,6 +642,7 @@ static void callback(long inpos, int fun
@@ -587,6 +638,7 @@ static void callback(long inpos, int fun
const char *optstring = "escCn:o:O:d:g:S:prRwafvqVQhZz::YXWBi:Tt:";
@ -111,7 +102,7 @@ $NetBSD: patch-ae,v 1.5 2006/09/03 17:13:30 ben Exp $
struct option options [] = {
{"stderr-progress",no_argument,NULL,'e'},
{"search-for-drive",no_argument,NULL,'s'},
@@ -621,6 +677,7 @@ struct option options [] = {
@@ -621,6 +673,7 @@ struct option options [] = {
{NULL,0,NULL,0}
};
@ -119,7 +110,7 @@ $NetBSD: patch-ae,v 1.5 2006/09/03 17:13:30 ben Exp $
long blocking_write(int outf, char *buffer, long num){
long words=0,temp;
@@ -673,7 +730,12 @@ int main(int argc,char *argv[]){
@@ -673,7 +726,12 @@ int main(int argc,char *argv[]){
atexit(cleanup);
@ -133,7 +124,7 @@ $NetBSD: patch-ae,v 1.5 2006/09/03 17:13:30 ben Exp $
switch(c){
case 'B':
batch=1;
@@ -690,6 +752,7 @@ int main(int argc,char *argv[]){
@@ -690,6 +748,7 @@ int main(int argc,char *argv[]){
case 'o':
force_cdrom_overlap=atoi(optarg);
break;
@ -141,7 +132,7 @@ $NetBSD: patch-ae,v 1.5 2006/09/03 17:13:30 ben Exp $
case 'd':
if(force_cdrom_device)free(force_cdrom_device);
force_cdrom_device=copystring(optarg);
@@ -698,6 +761,7 @@ int main(int argc,char *argv[]){
@@ -698,6 +757,7 @@ int main(int argc,char *argv[]){
if(force_generic_device)free(force_generic_device);
force_generic_device=copystring(optarg);
break;
@ -149,7 +140,7 @@ $NetBSD: patch-ae,v 1.5 2006/09/03 17:13:30 ben Exp $
case 'S':
force_cdrom_speed=atoi(optarg);
break;
@@ -811,6 +875,30 @@ int main(int argc,char *argv[]){
@@ -811,6 +871,18 @@ int main(int argc,char *argv[]){
/* Query the cdrom/disc; we may need to override some settings */
@ -157,19 +148,7 @@ $NetBSD: patch-ae,v 1.5 2006/09/03 17:13:30 ben Exp $
+ d=cdda_find_a_cdrom(verbose,NULL);
+#else
+#ifndef __linux__ /* XXX */
+#ifdef __NetBSD__
+ if (!force_generic_device) {
+ int raw;
+ static char devstring[16];
+#ifdef HAVE_GETRAWPARTITION
+ raw = getrawpartition();
+#else
+ raw = 'c' - 'a';
+#endif
+ snprintf(devstring, sizeof(devstring) - 1, "/dev/rcd0%c", raw + 'a');
+ force_generic_device=devstring;
+ }
+#else
+#ifndef __NetBSD__ /* XXX: is this needed? */
+ if (!force_generic_device)
+ errx(1, "-g option is currently required by the NetBSD pkg version");
+#endif
@ -180,7 +159,7 @@ $NetBSD: patch-ae,v 1.5 2006/09/03 17:13:30 ben Exp $
if(force_generic_device)
d=cdda_identify_scsi(force_generic_device,force_cdrom_device,verbose,NULL);
else
@@ -841,6 +929,7 @@ int main(int argc,char *argv[]){
@@ -841,6 +913,7 @@ int main(int argc,char *argv[]){
report("");
}
}
@ -188,7 +167,7 @@ $NetBSD: patch-ae,v 1.5 2006/09/03 17:13:30 ben Exp $
if(!d){
if(!verbose)
@@ -878,7 +967,9 @@ int main(int argc,char *argv[]){
@@ -878,7 +951,9 @@ int main(int argc,char *argv[]){
"ignoring preset and autosense",force_cdrom_sectors);
report(buffer);
d->nsectors=force_cdrom_sectors;

View file

@ -1,7 +1,16 @@
$NetBSD: patch-ca,v 1.5 2006/09/03 17:13:30 ben Exp $
$NetBSD: patch-ca,v 1.6 2009/05/17 21:29:34 dholland Exp $
--- interface/Makefile.in.orig 1999-12-13 20:27:59.000000000 -0800
+++ interface/Makefile.in
--- interface/Makefile.in.orig 1999-12-13 23:27:59.000000000 -0500
+++ interface/Makefile.in 2009-05-17 17:16:52.000000000 -0400
@@ -7,7 +7,7 @@ VPATH=@srcdir@
srcdir=@srcdir@
@SET_MAKE@
-FLAGS=@SBPCD_H@ @UCDROM_H@ @TYPESIZES@ @CFLAGS@
+FLAGS=@SBPCD_H@ @UCDROM_H@ @RAWPART@ @TYPESIZES@ @CFLAGS@
OPT=@OPT@ $(FLAGS)
DEBUG=@DEBUG@ $(FLAGS) -DCDDA_TEST
CC=@CC@
@@ -18,12 +18,10 @@ RANLIB=@RANLIB@
LIBS = -lm
CPPFLAGS+=-D_REENTRANT

View file

@ -1,7 +1,7 @@
$NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
$NetBSD: patch-cf,v 1.9 2009/05/17 21:29:34 dholland Exp $
--- interface/scan_devices.c.orig 2001-03-26 07:44:01.000000000 +0200
+++ interface/scan_devices.c
--- interface/scan_devices.c.orig 2001-03-26 00:44:01.000000000 -0500
+++ interface/scan_devices.c 2009-05-17 16:47:49.000000000 -0400
@@ -1,6 +1,8 @@
/******************************************************************
* CopyPolicy: GNU Public License 2 applies
@ -11,7 +11,17 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
*
* Autoscan for or verify presence of a cdrom device
*
@@ -19,6 +21,8 @@
@@ -14,11 +16,18 @@
#include <pwd.h>
#include <sys/stat.h>
#include <sys/types.h>
+
+#ifdef HAVE_GETRAWPARTITION
+#include <util.h>
+#endif
+
#include "cdda_interface.h"
#include "low_interface.h"
#include "common_interface.h"
#include "utils.h"
@ -20,7 +30,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
#define MAX_DEV_LEN 20 /* Safe because strings only come from below */
/* must be absolute paths! */
static char *scsi_cdrom_prefixes[]={
@@ -49,11 +53,24 @@ static char *cdrom_devices[]={
@@ -49,15 +58,43 @@ static char *cdrom_devices[]={
"/dev/cm206cd",
"/dev/gscd",
"/dev/optcd",NULL};
@ -30,12 +40,16 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
+ "/dev/acd?c",
+ "/dev/wcd?c",
+ "/dev/mcd?c", NULL};
+#elif defined(__NetBSD__)
+static char *cdrom_devices[] = {
+ "/dev/rcd?c",
+ "/dev/cd?c", NULL};
+#endif
/* Functions here look for a cdrom drive; full init of a drive type
happens in interface.c */
+#if defined(__linux__) || defined(__FreeBSD__) || defined(__DragonFly__) || (defined(__APPLE__) && defined(__MACH__))
+#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || (defined(__APPLE__) && defined(__MACH__))
cdrom_drive *cdda_find_a_cdrom(int messagedest,char **messages){
+#if defined(__APPLE__) && defined(__MACH__)
+ cdrom_drive *d = calloc(1, sizeof(cdrom_drive));
@ -45,7 +59,28 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
/* Brute force... */
int i=0;
@@ -75,10 +92,12 @@ cdrom_drive *cdda_find_a_cdrom(int messa
cdrom_drive *d;
+#ifdef __NetBSD__
+ int rawpartition;
+#endif
+
+#ifdef __NetBSD__
+#ifdef HAVE_GETRAWPARTITION
+ rawpartition = getrawpartition();
+#else
+ rawpartition = 'c' - 'a';
+#endif
+#endif
while(cdrom_devices[i]!=NULL){
@@ -72,13 +109,18 @@ cdrom_drive *cdda_find_a_cdrom(int messa
/* number, then letter */
buffer[pos-(cdrom_devices[i])]=j+48;
+#ifdef __NetBSD__
+ buffer[(pos+1)-(cdrom_devices[i])]='a'+rawpartition;
+#endif
if((d=cdda_identify(buffer,messagedest,messages)))
return(d);
idmessage(messagedest,messages,"",NULL);
@ -58,7 +93,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
}
}else{
/* Name. Go for it. */
@@ -97,8 +116,20 @@ cdrom_drive *cdda_find_a_cdrom(int messa
@@ -97,8 +139,11 @@ cdrom_drive *cdda_find_a_cdrom(int messa
temp->pw_name);
}
return(NULL);
@ -66,20 +101,11 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
}
+#endif /* __linux__ */
+#ifdef __NetBSD__
+
+cdrom_drive *cdda_find_a_cdrom(int messagedest,char **messages)
+{
+ errx(1, "cdda_find_a_cdrom: not implemented");
+ /* NOTREACHED */
+}
+#endif /* __NetBSD__ */
+
+#if !(defined(__APPLE__) && defined(__MACH__))
cdrom_drive *cdda_identify(const char *device, int messagedest,char **messages){
struct stat st;
cdrom_drive *d=NULL;
@@ -117,8 +148,14 @@ cdrom_drive *cdda_identify(const char *d
@@ -117,8 +162,14 @@ cdrom_drive *cdda_identify(const char *d
}
#endif
@ -94,7 +120,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
#ifdef CDDA_TEST
if(!d)d=cdda_identify_test(device,messagedest,messages);
@@ -146,6 +183,7 @@ char *test_resolve_symlink(const char *f
@@ -146,6 +197,7 @@ char *test_resolve_symlink(const char *f
cdrom_drive *cdda_identify_cooked(const char *dev, int messagedest,
char **messages){
@ -102,7 +128,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
cdrom_drive *d=NULL;
struct stat st;
int fd=-1;
@@ -273,8 +311,60 @@ cdrom_drive *cdda_identify_cooked(const
@@ -273,8 +325,60 @@ cdrom_drive *cdda_identify_cooked(const
idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",description);
return(d);
@ -163,7 +189,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
struct sg_id {
long l1; /* target | lun << 8 | channel << 16 | low_ino << 24 */
long l2; /* Unique id */
@@ -289,12 +379,18 @@ typedef struct scsiid{
@@ -289,12 +393,18 @@ typedef struct scsiid{
/* Even *this* isn't as simple as it bloody well should be :-P */
/* SG has an easy interface, but SCSI overall does not */
static int get_scsi_id(int fd, scsiid *id){
@ -182,7 +208,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
if(ioctl(fd,SCSI_IOCTL_GET_IDLUN,&argid))return(-1);
id->bus=argid.l2; /* for now */
id->id=argid.l1&0xff;
@@ -302,6 +398,13 @@ static int get_scsi_id(int fd, scsiid *i
@@ -302,6 +412,13 @@ static int get_scsi_id(int fd, scsiid *i
if(ioctl(fd,SCSI_IOCTL_GET_BUS_NUMBER,&busarg)==0)
id->bus=busarg;
@ -196,7 +222,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
return(0);
}
@@ -390,6 +493,7 @@ matchfail:
@@ -390,6 +507,7 @@ matchfail:
if(dev!=-1)close(dev);
return(NULL);
}
@ -204,7 +230,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
void strscat(char *a,char *b,int n){
int i;
@@ -401,6 +505,7 @@ void strscat(char *a,char *b,int n){
@@ -401,6 +519,7 @@ void strscat(char *a,char *b,int n){
strcat(a," ");
}
@ -212,7 +238,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
/* At this point, we're going to punt compatability before SG2, and
allow only SG2 and SG3 */
static int verify_SG_version(cdrom_drive *d,int messagedest,
@@ -430,7 +535,9 @@ static int verify_SG_version(cdrom_drive
@@ -430,7 +549,9 @@ static int verify_SG_version(cdrom_drive
idmessage(messagedest,messages,buffer,"");
return(major);
}
@ -222,7 +248,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
cdrom_drive *cdda_identify_scsi(const char *generic_device,
const char *ioctl_device, int messagedest,
char **messages){
@@ -460,6 +567,7 @@ cdrom_drive *cdda_identify_scsi(const ch
@@ -460,6 +581,7 @@ cdrom_drive *cdda_identify_scsi(const ch
generic_device);
return(NULL);
}
@ -230,7 +256,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
if((int)(g_st.st_rdev>>8)!=SCSI_GENERIC_MAJOR){
if((int)(g_st.st_rdev>>8)!=SCSI_CDROM_MAJOR){
idmessage(messagedest,messages,"\t\t%s is not a SCSI device",
@@ -471,6 +579,7 @@ cdrom_drive *cdda_identify_scsi(const ch
@@ -471,6 +593,7 @@ cdrom_drive *cdda_identify_scsi(const ch
ioctl_device=temp;
}
}
@ -238,7 +264,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
}
if(ioctl_device){
if(stat(ioctl_device,&i_st)){
@@ -478,6 +587,7 @@ cdrom_drive *cdda_identify_scsi(const ch
@@ -478,6 +601,7 @@ cdrom_drive *cdda_identify_scsi(const ch
ioctl_device);
return(NULL);
}
@ -246,7 +272,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
if((int)(i_st.st_rdev>>8)!=SCSI_CDROM_MAJOR){
if((int)(i_st.st_rdev>>8)!=SCSI_GENERIC_MAJOR){
idmessage(messagedest,messages,"\t\t%s is not a SCSI device",
@@ -489,6 +599,7 @@ cdrom_drive *cdda_identify_scsi(const ch
@@ -489,6 +613,7 @@ cdrom_drive *cdda_identify_scsi(const ch
ioctl_device=temp;
}
}
@ -254,7 +280,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
}
/* we need to resolve any symlinks for the lookup code to work */
@@ -505,6 +616,7 @@ cdrom_drive *cdda_identify_scsi(const ch
@@ -505,6 +630,7 @@ cdrom_drive *cdda_identify_scsi(const ch
}
if(!generic_device || !ioctl_device){
@ -262,7 +288,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
if(generic_device){
ioctl_device=
scsi_match(generic_device,scsi_cdrom_prefixes,
@@ -520,6 +632,12 @@ cdrom_drive *cdda_identify_scsi(const ch
@@ -520,6 +646,12 @@ cdrom_drive *cdda_identify_scsi(const ch
if(!generic_device)
goto cdda_identify_scsi_fail;
}
@ -275,7 +301,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
}
idmessage(messagedest,messages,"\t\tgeneric device: %s",generic_device);
@@ -556,6 +674,7 @@ cdrom_drive *cdda_identify_scsi(const ch
@@ -556,6 +688,7 @@ cdrom_drive *cdda_identify_scsi(const ch
type=(int)(i_st.st_rdev>>8);
@ -283,7 +309,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
if(type==SCSI_CDROM_MAJOR){
if (!S_ISBLK(i_st.st_mode)) {
idmessage(messagedest,messages,"\t\tSCSI CDROM device %s not a "
@@ -567,8 +686,10 @@ cdrom_drive *cdda_identify_scsi(const ch
@@ -567,8 +700,10 @@ cdrom_drive *cdda_identify_scsi(const ch
"major number",ioctl_device);
goto cdda_identify_scsi_fail;
}
@ -294,7 +320,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
if((int)(g_st.st_rdev>>8)==SCSI_GENERIC_MAJOR){
if (!S_ISCHR(g_st.st_mode)) {
idmessage(messagedest,messages,"\t\tGeneric SCSI device %s not a "
@@ -580,6 +701,7 @@ cdrom_drive *cdda_identify_scsi(const ch
@@ -580,6 +715,7 @@ cdrom_drive *cdda_identify_scsi(const ch
"major number",generic_device);
goto cdda_identify_scsi_fail;
}
@ -302,7 +328,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
d=calloc(1,sizeof(cdrom_drive));
@@ -590,6 +712,7 @@ cdrom_drive *cdda_identify_scsi(const ch
@@ -590,6 +726,7 @@ cdrom_drive *cdda_identify_scsi(const ch
d->bigendianp=-1; /* We don't know yet... */
d->nsectors=-1;
@ -310,7 +336,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
version=verify_SG_version(d,messagedest,messages);
switch(version){
case -1:case 0:case 1:
@@ -599,6 +722,9 @@ cdrom_drive *cdda_identify_scsi(const ch
@@ -599,6 +736,9 @@ cdrom_drive *cdda_identify_scsi(const ch
d->interface=GENERIC_SCSI;
break;
}
@ -320,7 +346,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
/* malloc our big buffer for scsi commands */
d->sg=malloc(MAX_BIG_BUFF_SIZE);
@@ -617,7 +743,16 @@ cdrom_drive *cdda_identify_scsi(const ch
@@ -617,7 +757,16 @@ cdrom_drive *cdda_identify_scsi(const ch
/* It would seem some TOSHIBA CDROMs gets things wrong */
@ -338,7 +364,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
!strncmp (p + 16, "CD-ROM", 6) &&
p[0] == TYPE_DISK) {
p[0] = TYPE_ROM;
@@ -653,6 +788,88 @@ cdda_identify_scsi_fail:
@@ -653,6 +802,88 @@ cdda_identify_scsi_fail:
if(g_fd!=-1)close(g_fd);
return(NULL);
}
@ -427,7 +453,7 @@ $NetBSD: patch-cf,v 1.8 2007/10/09 21:26:11 heinz Exp $
#ifdef CDDA_TEST
@@ -702,3 +919,4 @@ cdrom_drive *cdda_identify_test(const ch
@@ -702,3 +933,4 @@ cdrom_drive *cdda_identify_test(const ch
}
#endif