[package] cdparanoia - add patch to fix big-endian crash and rename private variable name

git-svn-id: svn://svn.openwrt.org/openwrt/packages@14421 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
hcg 2009-02-06 10:42:17 +00:00
parent 5edd7c4a2a
commit eb7ba5bebb

View File

@ -0,0 +1,908 @@
diff -ur cdparanoia-III-10.2/interface/cdda_interface.h cdparanoia/interface/cdda_interface.h
--- cdparanoia-III-10.2/interface/cdda_interface.h 2008-09-11 12:43:52.000000000 +0200
+++ cdparanoia/interface/cdda_interface.h 2009-01-28 18:02:11.000000000 +0100
@@ -84,7 +84,7 @@
int is_atapi;
int is_mmc;
- cdda_private_data_t *private;
+ cdda_private_data_t *private_data;
void *reserved;
unsigned char inqbytes[4];
diff -ur cdparanoia-III-10.2/interface/cooked_interface.c cdparanoia/interface/cooked_interface.c
--- cdparanoia-III-10.2/interface/cooked_interface.c 2008-08-26 11:55:22.000000000 +0200
+++ cdparanoia/interface/cooked_interface.c 2009-01-28 18:02:11.000000000 +0100
@@ -13,13 +13,13 @@
static int timed_ioctl(cdrom_drive *d, int fd, int command, void *arg){
struct timespec tv1;
struct timespec tv2;
- int ret1=clock_gettime(d->private->clock,&tv1);
+ int ret1=clock_gettime(d->private_data->clock,&tv1);
int ret2=ioctl(fd, command,arg);
- int ret3=clock_gettime(d->private->clock,&tv2);
+ int ret3=clock_gettime(d->private_data->clock,&tv2);
if(ret1<0 || ret3<0){
- d->private->last_milliseconds=-1;
+ d->private_data->last_milliseconds=-1;
}else{
- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
+ d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
}
return ret2;
}
diff -ur cdparanoia-III-10.2/interface/interface.c cdparanoia/interface/interface.c
--- cdparanoia-III-10.2/interface/interface.c 2008-09-11 12:43:52.000000000 +0200
+++ cdparanoia/interface/interface.c 2009-01-28 18:02:11.000000000 +0100
@@ -39,9 +39,9 @@
if(d->drive_model)free(d->drive_model);
if(d->cdda_fd!=-1)close(d->cdda_fd);
if(d->ioctl_fd!=-1 && d->ioctl_fd!=d->cdda_fd)close(d->ioctl_fd);
- if(d->private){
- if(d->private->sg_hd)free(d->private->sg_hd);
- free(d->private);
+ if(d->private_data){
+ if(d->private_data->sg_hd)free(d->private_data->sg_hd);
+ free(d->private_data);
}
free(d);
@@ -90,11 +90,11 @@
}
}
+ if(d->bigendianp==-1)d->bigendianp=data_bigendianp(d);
+
if((ret=d->enable_cdda(d,1)))
return(ret);
- /* d->select_speed(d,d->maxspeed); most drives are full speed by default */
- if(d->bigendianp==-1)d->bigendianp=data_bigendianp(d);
return(0);
}
@@ -118,7 +118,7 @@
if(d->bigendianp==-1) /* not determined yet */
d->bigendianp=data_bigendianp(d);
- if(d->bigendianp!=bigendianp()){
+ if(buffer && d->bigendianp!=bigendianp()){
int i;
u_int16_t *p=(u_int16_t *)buffer;
long els=sectors*CD_FRAMESIZE_RAW/2;
@@ -127,7 +127,7 @@
}
}
}
- if(ms)*ms=d->private->last_milliseconds;
+ if(ms)*ms=d->private_data->last_milliseconds;
return(sectors);
}
diff -ur cdparanoia-III-10.2/interface/scan_devices.c cdparanoia/interface/scan_devices.c
--- cdparanoia-III-10.2/interface/scan_devices.c 2008-08-26 11:55:22.000000000 +0200
+++ cdparanoia/interface/scan_devices.c 2009-01-28 18:02:11.000000000 +0100
@@ -264,11 +264,11 @@
d->interface=COOKED_IOCTL;
d->bigendianp=-1; /* We don't know yet... */
d->nsectors=-1;
- d->private=calloc(1,sizeof(*d->private));
+ d->private_data=calloc(1,sizeof(*d->private_data));
{
/* goddamnit */
struct timespec tv;
- d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
+ d->private_data->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
}
idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",description);
return(d);
@@ -674,15 +674,15 @@
d->bigendianp=-1; /* We don't know yet... */
d->nsectors=-1;
d->messagedest = messagedest;
- d->private=calloc(1,sizeof(*d->private));
+ d->private_data=calloc(1,sizeof(*d->private_data));
{
/* goddamnit */
struct timespec tv;
- d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
+ d->private_data->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
}
if(use_sgio){
d->interface=SGIO_SCSI;
- d->private->sg_buffer=(unsigned char *)(d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE));
+ d->private_data->sg_buffer=(unsigned char *)(d->private_data->sg_hd=malloc(MAX_BIG_BUFF_SIZE));
g_fd=d->cdda_fd=dup(d->ioctl_fd);
}else{
version=verify_SG_version(d,messagedest,messages);
@@ -696,8 +696,8 @@
}
/* malloc our big buffer for scsi commands */
- d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE);
- d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF;
+ d->private_data->sg_hd=malloc(MAX_BIG_BUFF_SIZE);
+ d->private_data->sg_buffer=((unsigned char *)d->private_data->sg_hd)+SG_OFF;
}
{
@@ -772,9 +772,9 @@
if(i_fd!=-1)close(i_fd);
if(g_fd!=-1)close(g_fd);
if(d){
- if(d->private){
- if(d->private->sg_hd)free(d->private->sg_hd);
- free(d->private);
+ if(d->private_data){
+ if(d->private_data->sg_hd)free(d->private_data->sg_hd);
+ free(d->private_data);
}
free(d);
}
@@ -821,7 +821,7 @@
d->interface=TEST_INTERFACE;
d->bigendianp=-1; /* We don't know yet... */
d->nsectors=-1;
- d->private=calloc(1,sizeof(*d->private));
+ d->private_data=calloc(1,sizeof(*d->private_data));
d->drive_model=copystring("File based test interface");
idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",d->drive_model);
diff -ur cdparanoia-III-10.2/interface/scsi_interface.c cdparanoia/interface/scsi_interface.c
--- cdparanoia-III-10.2/interface/scsi_interface.c 2008-09-11 22:33:30.000000000 +0200
+++ cdparanoia/interface/scsi_interface.c 2009-01-28 18:02:11.000000000 +0100
@@ -15,13 +15,13 @@
static int timed_ioctl(cdrom_drive *d, int fd, int command, void *arg){
struct timespec tv1;
struct timespec tv2;
- int ret1=clock_gettime(d->private->clock,&tv1);
+ int ret1=clock_gettime(d->private_data->clock,&tv1);
int ret2=ioctl(fd, command,arg);
- int ret3=clock_gettime(d->private->clock,&tv2);
+ int ret3=clock_gettime(d->private_data->clock,&tv2);
if(ret1<0 || ret3<0){
- d->private->last_milliseconds=-1;
+ d->private_data->last_milliseconds=-1;
}else{
- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
+ d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
}
return ret2;
}
@@ -96,7 +96,7 @@
static void clear_garbage(cdrom_drive *d){
fd_set fdset;
struct timeval tv;
- struct sg_header *sg_hd=d->private->sg_hd;
+ struct sg_header *sg_hd=d->private_data->sg_hd;
int flag=0;
/* clear out any possibly preexisting garbage */
@@ -185,7 +185,7 @@
struct timespec tv2;
int tret1,tret2;
int status = 0;
- struct sg_header *sg_hd=d->private->sg_hd;
+ struct sg_header *sg_hd=d->private_data->sg_hd;
long writebytes=SG_OFF+cmd_len+in_size;
/* generic scsi device services */
@@ -195,7 +195,7 @@
memset(sg_hd,0,sizeof(sg_hd));
memset(sense_buffer,0,SG_MAX_SENSE);
- memcpy(d->private->sg_buffer,cmd,cmd_len+in_size);
+ memcpy(d->private_data->sg_buffer,cmd,cmd_len+in_size);
sg_hd->twelve_byte = cmd_len == 12;
sg_hd->result = 0;
sg_hd->reply_len = SG_OFF + out_size;
@@ -209,7 +209,7 @@
tell if the command failed. Scared yet? */
if(bytecheck && out_size>in_size){
- memset(d->private->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size);
+ memset(d->private_data->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size);
/* the size does not remove cmd_len due to the way the kernel
driver copies buffers */
writebytes+=(out_size-in_size);
@@ -243,7 +243,7 @@
}
sigprocmask (SIG_BLOCK, &(d->sigset), NULL );
- tret1=clock_gettime(d->private->clock,&tv1);
+ tret1=clock_gettime(d->private_data->clock,&tv1);
errno=0;
status = write(d->cdda_fd, sg_hd, writebytes );
@@ -289,7 +289,7 @@
}
}
- tret2=clock_gettime(d->private->clock,&tv2);
+ tret2=clock_gettime(d->private_data->clock,&tv2);
errno=0;
status = read(d->cdda_fd, sg_hd, SG_OFF + out_size);
sigprocmask ( SIG_UNBLOCK, &(d->sigset), NULL );
@@ -313,7 +313,7 @@
if(bytecheck && in_size+cmd_len<out_size){
long i,flag=0;
for(i=in_size;i<out_size;i++)
- if(d->private->sg_buffer[i]!=bytefill){
+ if(d->private_data->sg_buffer[i]!=bytefill){
flag=1;
break;
}
@@ -326,9 +326,9 @@
errno=0;
if(tret1<0 || tret2<0){
- d->private->last_milliseconds=-1;
+ d->private_data->last_milliseconds=-1;
}else{
- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000;
+ d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000;
}
return(0);
}
@@ -347,7 +347,7 @@
memset(&hdr,0,sizeof(hdr));
memset(sense,0,sizeof(sense));
- memcpy(d->private->sg_buffer,cmd+cmd_len,in_size);
+ memcpy(d->private_data->sg_buffer,cmd+cmd_len,in_size);
hdr.cmdp = cmd;
hdr.cmd_len = cmd_len;
@@ -355,7 +355,7 @@
hdr.mx_sb_len = SG_MAX_SENSE;
hdr.timeout = 50000;
hdr.interface_id = 'S';
- hdr.dxferp = d->private->sg_buffer;
+ hdr.dxferp = d->private_data->sg_buffer;
hdr.flags = SG_FLAG_DIRECT_IO; /* direct IO if we can get it */
/* scary buffer fill hack */
@@ -400,7 +400,7 @@
if(bytecheck && in_size<out_size){
long i,flag=0;
for(i=in_size;i<out_size;i++)
- if(d->private->sg_buffer[i]!=bytefill){
+ if(d->private_data->sg_buffer[i]!=bytefill){
flag=1;
break;
}
@@ -412,7 +412,7 @@
}
/* Can't rely on .duration because we can't be certain kernel has HZ set to something useful */
- /* d->private->last_milliseconds = hdr.duration; */
+ /* d->private_data->last_milliseconds = hdr.duration; */
errno = 0;
return 0;
@@ -445,9 +445,9 @@
handle_scsi_cmd(d, cmd, 6, 0, 56, 0,0, sense);
- key = d->private->sg_buffer[2] & 0xf;
- ASC = d->private->sg_buffer[12];
- ASCQ = d->private->sg_buffer[13];
+ key = d->private_data->sg_buffer[2] & 0xf;
+ ASC = d->private_data->sg_buffer[12];
+ ASCQ = d->private_data->sg_buffer[13];
if(key == 2 && ASC == 4 && ASCQ == 1) return 0;
return 1;
@@ -492,7 +492,7 @@
if (handle_scsi_cmd (d, cmd, 10, 0, size+4,'\377',1,sense)) return(1);
{
- unsigned char *b=d->private->sg_buffer;
+ unsigned char *b=d->private_data->sg_buffer;
if(b[0])return(1); /* Handles only up to 256 bytes */
if(b[6])return(1); /* Handles only up to 256 bytes */
@@ -604,8 +604,8 @@
static unsigned int get_orig_sectorsize(cdrom_drive *d){
if(mode_sense(d,12,0x01))return(-1);
- d->orgdens = d->private->sg_buffer[4];
- return(d->orgsize = ((int)(d->private->sg_buffer[10])<<8)+d->private->sg_buffer[11]);
+ d->orgdens = d->private_data->sg_buffer[4];
+ return(d->orgsize = ((int)(d->private_data->sg_buffer[10])<<8)+d->private_data->sg_buffer[11]);
}
/* switch CDROM scsi drives to given sector size */
@@ -664,8 +664,8 @@
return(-4);
}
- first=d->private->sg_buffer[2];
- last=d->private->sg_buffer[3];
+ first=d->private_data->sg_buffer[2];
+ last=d->private_data->sg_buffer[3];
tracks=last-first+1;
if (last > MAXTRK || first > MAXTRK || last<0 || first<0) {
@@ -683,7 +683,7 @@
return(-5);
}
{
- scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4);
+ scsi_TOC *toc=(scsi_TOC *)(d->private_data->sg_buffer+4);
d->disc_toc[i-first].bFlags=toc->bFlags;
d->disc_toc[i-first].bTrack=i;
@@ -704,7 +704,7 @@
return(-2);
}
{
- scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4);
+ scsi_TOC *toc=(scsi_TOC *)(d->private_data->sg_buffer+4);
d->disc_toc[i-first].bFlags=toc->bFlags;
d->disc_toc[i-first].bTrack=0xAA;
@@ -738,7 +738,7 @@
}
/* copy to our structure and convert start sector */
- tracks = d->private->sg_buffer[1];
+ tracks = d->private_data->sg_buffer[1];
if (tracks > MAXTRK) {
cderror(d,"003: CDROM reporting illegal number of tracks\n");
return(-3);
@@ -754,33 +754,33 @@
return(-5);
}
- d->disc_toc[i].bFlags = d->private->sg_buffer[10];
+ d->disc_toc[i].bFlags = d->private_data->sg_buffer[10];
d->disc_toc[i].bTrack = i + 1;
d->disc_toc[i].dwStartSector= d->adjust_ssize *
- (((signed char)(d->private->sg_buffer[2])<<24) |
- (d->private->sg_buffer[3]<<16)|
- (d->private->sg_buffer[4]<<8)|
- (d->private->sg_buffer[5]));
+ (((signed char)(d->private_data->sg_buffer[2])<<24) |
+ (d->private_data->sg_buffer[3]<<16)|
+ (d->private_data->sg_buffer[4]<<8)|
+ (d->private_data->sg_buffer[5]));
}
d->disc_toc[i].bFlags = 0;
d->disc_toc[i].bTrack = i + 1;
- memcpy (&foo, d->private->sg_buffer+2, 4);
- memcpy (&bar, d->private->sg_buffer+6, 4);
+ memcpy (&foo, d->private_data->sg_buffer+2, 4);
+ memcpy (&bar, d->private_data->sg_buffer+6, 4);
d->disc_toc[i].dwStartSector = d->adjust_ssize * (be32_to_cpu(foo) +
be32_to_cpu(bar));
d->disc_toc[i].dwStartSector= d->adjust_ssize *
- ((((signed char)(d->private->sg_buffer[2])<<24) |
- (d->private->sg_buffer[3]<<16)|
- (d->private->sg_buffer[4]<<8)|
- (d->private->sg_buffer[5]))+
+ ((((signed char)(d->private_data->sg_buffer[2])<<24) |
+ (d->private_data->sg_buffer[3]<<16)|
+ (d->private_data->sg_buffer[4]<<8)|
+ (d->private_data->sg_buffer[5]))+
- ((((signed char)(d->private->sg_buffer[6])<<24) |
- (d->private->sg_buffer[7]<<16)|
- (d->private->sg_buffer[8]<<8)|
- (d->private->sg_buffer[9]))));
+ ((((signed char)(d->private_data->sg_buffer[6])<<24) |
+ (d->private_data->sg_buffer[7]<<16)|
+ (d->private_data->sg_buffer[8]<<8)|
+ (d->private_data->sg_buffer[9]))));
d->cd_extra = FixupTOC(d,tracks+1);
@@ -817,7 +817,7 @@
cmd[8] = sectors;
if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
return(ret);
- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
return(0);
}
@@ -836,7 +836,7 @@
cmd[9] = sectors;
if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
return(ret);
- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
return(0);
}
@@ -854,7 +854,7 @@
cmd[8] = sectors;
if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
return(ret);
- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
return(0);
}
@@ -872,7 +872,7 @@
cmd[9] = sectors;
if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
return(ret);
- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
return(0);
}
@@ -890,7 +890,7 @@
cmd[8] = sectors;
if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
return(ret);
- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
return(0);
}
@@ -908,7 +908,7 @@
cmd[9] = sectors;
if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
return(ret);
- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
return(0);
}
@@ -922,7 +922,7 @@
cmd[8] = sectors;
if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
return(ret);
- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
return(0);
}
@@ -936,7 +936,7 @@
cmd[8] = sectors;
if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
return(ret);
- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
return(0);
}
@@ -950,7 +950,7 @@
cmd[8] = sectors;
if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
return(ret);
- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
return(0);
}
@@ -964,7 +964,7 @@
cmd[8] = sectors;
if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
return(ret);
- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
return(0);
}
@@ -978,7 +978,7 @@
cmd[8] = sectors;
if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
return(ret);
- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
return(0);
}
@@ -992,7 +992,7 @@
cmd[8] = sectors;
if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
return(ret);
- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
return(0);
}
@@ -1026,7 +1026,7 @@
if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
return(ret);
- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
return(0);
}
@@ -1039,7 +1039,7 @@
if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
return(ret);
- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
return(0);
}
@@ -1052,7 +1052,7 @@
if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
return(ret);
- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
return(0);
}
@@ -1275,7 +1275,7 @@
static int count_2352_bytes(cdrom_drive *d){
long i;
for(i=2351;i>=0;i--)
- if(d->private->sg_buffer[i]!=(unsigned char)'\177')
+ if(d->private_data->sg_buffer[i]!=(unsigned char)'\177')
return(((i+3)>>2)<<2);
return(0);
@@ -1284,7 +1284,7 @@
static int verify_nonzero(cdrom_drive *d){
long i,flag=0;
for(i=0;i<2352;i++)
- if(d->private->sg_buffer[i]!=0){
+ if(d->private_data->sg_buffer[i]!=0){
flag=1;
break;
}
@@ -1298,7 +1298,7 @@
static int verify_read_command(cdrom_drive *d){
int i,j,k;
- int audioflag=0;
+ int audioflag=1;
int (*enablecommand) (struct cdrom_drive *d, int speed);
long (*readcommand) (struct cdrom_drive *d, void *p, long begin,
@@ -1313,7 +1313,7 @@
for data */
if(d->enable_cdda(d,1)==0){
-
+ audioflag=0;
for(i=1;i<=d->tracks;i++){
if(cdda_track_audiop(d,i)==1){
long firstsector=cdda_track_firstsector(d,i);
@@ -1358,115 +1358,111 @@
/* NEC test must come before sony; the nec drive expects d8 to be
10 bytes, and a 12 byte verson (Sony) crashes the drive */
- for(j=0;j<15;j++){
- int densitypossible=1;
-
- switch(j){
+ for(i=0;i<5;i++){
+ switch(i){
case 0:
- d->read_audio=scsi_read_28;
- rs="28 0x,00";
+ d->density=0;
+ d->enable_cdda=Dummy;
+ es="none ";
break;
case 1:
- d->read_audio=scsi_read_A8;
- rs="a8 0x,00";
+ d->density=0;
+ d->enable_cdda=scsi_enable_cdda;
+ es="yes/0x00";
break;
-
case 2:
- d->read_audio=scsi_read_mmcB;
- rs="be 02,10";
- densitypossible=0;
+ d->density=0x04;
+ d->enable_cdda=scsi_enable_cdda;
+ es="yes/0x04";
break;
case 3:
- d->read_audio=scsi_read_mmc2B;
- rs="be 02,f8";
- densitypossible=0;
+ d->density=0x82;
+ d->enable_cdda=scsi_enable_cdda;
+ es="yes/0x82";
break;
case 4:
- d->read_audio=scsi_read_mmc3B;
- rs="be 06,f8";
- densitypossible=0;
- break;
-
- case 5:
- d->read_audio=scsi_read_mmc;
- rs="be 00,10";
- densitypossible=0;
- break;
- case 6:
- d->read_audio=scsi_read_mmc2;
- rs="be 00,f8";
- densitypossible=0;
- break;
- case 7:
- d->read_audio=scsi_read_mmc3;
- rs="be 04,f8";
- densitypossible=0;
- break;
-
- case 8:
- d->read_audio=scsi_read_msf;
- rs="b9 00,10";
- densitypossible=0;
- break;
- case 9:
- d->read_audio=scsi_read_msf2;
- rs="b9 00,f8";
- densitypossible=0;
- break;
- case 10:
- d->read_audio=scsi_read_msf3;
- rs="b9 04,f8";
- densitypossible=0;
- break;
-
- case 11:
- d->read_audio=scsi_read_D4_10;
- rs="d4(10)0x";
- break;
- case 12:
- d->read_audio=scsi_read_D4_12;
- rs="d4(12)0x";
- break;
- case 13:
- d->read_audio=scsi_read_D5;
- rs="d5 0x,00";
- break;
- case 14:
- d->read_audio=scsi_read_D8;
- rs="d8 0x,00";
+ d->density=0x81;
+ d->enable_cdda=scsi_enable_cdda;
+ es="yes/0x81";
break;
}
-
- for(i=0;i<5;i++){
- switch(i){
+
+ for(j=0;j<15;j++){
+
+ switch(j){
case 0:
- d->density=0;
- d->enable_cdda=Dummy;
- es="none ";
- if(!densitypossible)i=5; /* short circuit MMC style commands */
+ d->read_audio=scsi_read_28;
+ rs="28 0x,00";
break;
case 1:
- d->density=0;
- d->enable_cdda=scsi_enable_cdda;
- es="yes/0x00";
+ d->read_audio=scsi_read_A8;
+ rs="a8 0x,00";
break;
+
+ /* 2 through 10 do not allow/require density */
case 2:
- d->density=0x04;
- d->enable_cdda=scsi_enable_cdda;
- es="yes/0x04";
- break;
+ d->read_audio=scsi_read_mmcB;
+ rs="be 02,10";
+ if(i==0)break;
case 3:
- d->density=0x82;
- d->enable_cdda=scsi_enable_cdda;
- es="yes/0x82";
- break;
+ j=3;
+ d->read_audio=scsi_read_mmc2B;
+ rs="be 02,f8";
+ if(i==0)break;
case 4:
- d->density=0x81;
- d->enable_cdda=scsi_enable_cdda;
- es="yes/0x81";
+ j=4;
+ d->read_audio=scsi_read_mmc3B;
+ rs="be 06,f8";
+ if(i==0)break;
+ case 5:
+ j=5;
+ d->read_audio=scsi_read_mmc;
+ rs="be 00,10";
+ if(i==0)break;
+ case 6:
+ j=6;
+ d->read_audio=scsi_read_mmc2;
+ rs="be 00,f8";
+ if(i==0)break;
+ case 7:
+ j=7;
+ d->read_audio=scsi_read_mmc3;
+ rs="be 04,f8";
+ if(i==0)break;
+ case 8:
+ j=8;
+ d->read_audio=scsi_read_msf;
+ rs="b9 00,10";
+ if(i==0)break;
+ case 9:
+ j=9;
+ d->read_audio=scsi_read_msf2;
+ rs="b9 00,f8";
+ if(i==0)break;
+ case 10:
+ j=10;
+ d->read_audio=scsi_read_msf3;
+ rs="b9 04,f8";
+ if(i==0)break;
+
+ case 11:
+ d->read_audio=scsi_read_D4_10;
+ rs="d4(10)0x";
+ break;
+ case 12:
+ d->read_audio=scsi_read_D4_12;
+ rs="d4(12)0x";
+ break;
+ case 13:
+ d->read_audio=scsi_read_D5;
+ rs="d5 0x,00";
+ break;
+ case 14:
+ d->read_audio=scsi_read_D8;
+ rs="d8 0x,00";
break;
}
-
+
cdmessage(d,"\ttest -> density: [");
cdmessage(d,es);
cdmessage(d,"] command: [");
@@ -1525,21 +1521,21 @@
if(zeroflag){
char buffer[256];
sprintf(buffer,"\t\tDrive returned %d packet(s), but contents\n"
- "\t\twere entirely zero\n",zeroflag);
+ "\t\twere entirely zero\n",zeroflag);
cdmessage(d,buffer);
}
}
}
}
-
+
/* D'oh. */
d->density=density;
d->read_audio=readcommand;
d->enable_cdda=enablecommand;
-
+
cdmessage(d,"\tUnable to find any suitable command set from probe;\n"
"\tdrive probably not CDDA capable.\n");
-
+
cderror(d,"006: Could not read any data from drive\n");
}
@@ -1625,7 +1621,7 @@
d->is_mmc=0;
if(mode_sense(d,22,0x2A)==0){
- b=d->private->sg_buffer;
+ b=d->private_data->sg_buffer;
b+=b[3]+4;
if((b[0]&0x3F)==0x2A){
@@ -1673,7 +1669,7 @@
cderror(d,"008: Unable to identify CDROM model\n");
return(NULL);
}
- return (d->private->sg_buffer);
+ return (d->private_data->sg_buffer);
}
int scsi_init_drive(cdrom_drive *d){
@@ -1690,33 +1686,20 @@
if(d->is_atapi)d->lun=0; /* it should already be; just to make sure */
if(d->is_mmc){
-
d->read_audio = scsi_read_mmc2B;
d->bigendianp=0;
-
check_exceptions(d,mmc_list);
-
}else{
-
if(d->is_atapi){
/* Not MMC maybe still uses 0xbe */
-
d->read_audio = scsi_read_mmc2B;
d->bigendianp=0;
-
check_exceptions(d,atapi_list);
-
}else{
-
check_exceptions(d,scsi_list);
-
}
}
- if(!d->is_atapi)set_sectorsize(d,2048); /* we really do want the
- sector size at 2048 to begin.*/
- d->enable_cdda(d,0);
-
d->read_toc = (!memcmp(d->drive_model, "IMS", 3) && !d->is_atapi) ? scsi_read_toc2 :
scsi_read_toc;
d->set_speed = scsi_set_speed;
@@ -1742,8 +1725,8 @@
check_cache(d);
d->error_retry=1;
- d->private->sg_hd=realloc(d->private->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128);
- d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF;
+ d->private_data->sg_hd=realloc(d->private_data->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128);
+ d->private_data->sg_buffer=((unsigned char *)d->private_data->sg_hd)+SG_OFF;
d->report_all=1;
return(0);
}
diff -ur cdparanoia-III-10.2/interface/test_interface.c cdparanoia/interface/test_interface.c
--- cdparanoia-III-10.2/interface/test_interface.c 2008-09-11 22:33:30.000000000 +0200
+++ cdparanoia/interface/test_interface.c 2009-01-28 18:02:11.000000000 +0100
@@ -66,9 +66,9 @@
if(!fd)fd=fdopen(d->cdda_fd,"r");
if(begin<lastread)
- d->private->last_milliseconds=20;
+ d->private_data->last_milliseconds=20;
else
- d->private->last_milliseconds=sectors;
+ d->private_data->last_milliseconds=sectors;
#ifdef CDDA_TEST_UNDERRUN
sectors-=1;
diff -ur cdparanoia-III-10.2/main.c cdparanoia/main.c
--- cdparanoia-III-10.2/main.c 2008-09-11 23:11:02.000000000 +0200
+++ cdparanoia/main.c 2009-01-28 18:02:11.000000000 +0100
@@ -746,7 +746,7 @@
break;
case 'p':
output_type=0;
- output_endian=-1;
+ output_endian=bigendianp();
break;
case 'r':
output_type=0;
diff -ur cdparanoia-III-10.2/version.h cdparanoia/version.h
--- cdparanoia-III-10.2/version.h 2008-09-11 22:33:30.000000000 +0200
+++ cdparanoia/version.h 2009-01-28 18:02:11.000000000 +0100
@@ -1,11 +1,11 @@
/******************************************************************
* CopyPolicy: GNU Public License 2 applies
*
- * cdda_paranoia generation III release 10.2
+ * cdda_paranoia generation III release 10.3
* Copyright (C) 2008 Monty monty@xiph.org
*
******************************************************************/
-#define VERSIONNUM "10.2"
-#define VERSION "cdparanoia III release " VERSIONNUM " (September 11, 2008)\n"
+#define VERSIONNUM "10.3pre"
+#define VERSION "cdparanoia III release " VERSIONNUM " (September 16, 2008)\n"