[package] cdparanoia - add patch to fix big-endian crash and rename private variable...
[openwrt/svn-archive/archive.git] / utils / cdparanoia / patches / 002-fixbecrash-private-keyword.patch
1 diff -ur cdparanoia-III-10.2/interface/cdda_interface.h cdparanoia/interface/cdda_interface.h
2 --- cdparanoia-III-10.2/interface/cdda_interface.h 2008-09-11 12:43:52.000000000 +0200
3 +++ cdparanoia/interface/cdda_interface.h 2009-01-28 18:02:11.000000000 +0100
4 @@ -84,7 +84,7 @@
5 int is_atapi;
6 int is_mmc;
7
8 - cdda_private_data_t *private;
9 + cdda_private_data_t *private_data;
10 void *reserved;
11 unsigned char inqbytes[4];
12
13 diff -ur cdparanoia-III-10.2/interface/cooked_interface.c cdparanoia/interface/cooked_interface.c
14 --- cdparanoia-III-10.2/interface/cooked_interface.c 2008-08-26 11:55:22.000000000 +0200
15 +++ cdparanoia/interface/cooked_interface.c 2009-01-28 18:02:11.000000000 +0100
16 @@ -13,13 +13,13 @@
17 static int timed_ioctl(cdrom_drive *d, int fd, int command, void *arg){
18 struct timespec tv1;
19 struct timespec tv2;
20 - int ret1=clock_gettime(d->private->clock,&tv1);
21 + int ret1=clock_gettime(d->private_data->clock,&tv1);
22 int ret2=ioctl(fd, command,arg);
23 - int ret3=clock_gettime(d->private->clock,&tv2);
24 + int ret3=clock_gettime(d->private_data->clock,&tv2);
25 if(ret1<0 || ret3<0){
26 - d->private->last_milliseconds=-1;
27 + d->private_data->last_milliseconds=-1;
28 }else{
29 - d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
30 + d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
31 }
32 return ret2;
33 }
34 diff -ur cdparanoia-III-10.2/interface/interface.c cdparanoia/interface/interface.c
35 --- cdparanoia-III-10.2/interface/interface.c 2008-09-11 12:43:52.000000000 +0200
36 +++ cdparanoia/interface/interface.c 2009-01-28 18:02:11.000000000 +0100
37 @@ -39,9 +39,9 @@
38 if(d->drive_model)free(d->drive_model);
39 if(d->cdda_fd!=-1)close(d->cdda_fd);
40 if(d->ioctl_fd!=-1 && d->ioctl_fd!=d->cdda_fd)close(d->ioctl_fd);
41 - if(d->private){
42 - if(d->private->sg_hd)free(d->private->sg_hd);
43 - free(d->private);
44 + if(d->private_data){
45 + if(d->private_data->sg_hd)free(d->private_data->sg_hd);
46 + free(d->private_data);
47 }
48
49 free(d);
50 @@ -90,11 +90,11 @@
51 }
52 }
53
54 + if(d->bigendianp==-1)d->bigendianp=data_bigendianp(d);
55 +
56 if((ret=d->enable_cdda(d,1)))
57 return(ret);
58
59 - /* d->select_speed(d,d->maxspeed); most drives are full speed by default */
60 - if(d->bigendianp==-1)d->bigendianp=data_bigendianp(d);
61 return(0);
62 }
63
64 @@ -118,7 +118,7 @@
65 if(d->bigendianp==-1) /* not determined yet */
66 d->bigendianp=data_bigendianp(d);
67
68 - if(d->bigendianp!=bigendianp()){
69 + if(buffer && d->bigendianp!=bigendianp()){
70 int i;
71 u_int16_t *p=(u_int16_t *)buffer;
72 long els=sectors*CD_FRAMESIZE_RAW/2;
73 @@ -127,7 +127,7 @@
74 }
75 }
76 }
77 - if(ms)*ms=d->private->last_milliseconds;
78 + if(ms)*ms=d->private_data->last_milliseconds;
79 return(sectors);
80 }
81
82 diff -ur cdparanoia-III-10.2/interface/scan_devices.c cdparanoia/interface/scan_devices.c
83 --- cdparanoia-III-10.2/interface/scan_devices.c 2008-08-26 11:55:22.000000000 +0200
84 +++ cdparanoia/interface/scan_devices.c 2009-01-28 18:02:11.000000000 +0100
85 @@ -264,11 +264,11 @@
86 d->interface=COOKED_IOCTL;
87 d->bigendianp=-1; /* We don't know yet... */
88 d->nsectors=-1;
89 - d->private=calloc(1,sizeof(*d->private));
90 + d->private_data=calloc(1,sizeof(*d->private_data));
91 {
92 /* goddamnit */
93 struct timespec tv;
94 - d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
95 + d->private_data->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
96 }
97 idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",description);
98 return(d);
99 @@ -674,15 +674,15 @@
100 d->bigendianp=-1; /* We don't know yet... */
101 d->nsectors=-1;
102 d->messagedest = messagedest;
103 - d->private=calloc(1,sizeof(*d->private));
104 + d->private_data=calloc(1,sizeof(*d->private_data));
105 {
106 /* goddamnit */
107 struct timespec tv;
108 - d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
109 + d->private_data->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
110 }
111 if(use_sgio){
112 d->interface=SGIO_SCSI;
113 - d->private->sg_buffer=(unsigned char *)(d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE));
114 + d->private_data->sg_buffer=(unsigned char *)(d->private_data->sg_hd=malloc(MAX_BIG_BUFF_SIZE));
115 g_fd=d->cdda_fd=dup(d->ioctl_fd);
116 }else{
117 version=verify_SG_version(d,messagedest,messages);
118 @@ -696,8 +696,8 @@
119 }
120
121 /* malloc our big buffer for scsi commands */
122 - d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE);
123 - d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF;
124 + d->private_data->sg_hd=malloc(MAX_BIG_BUFF_SIZE);
125 + d->private_data->sg_buffer=((unsigned char *)d->private_data->sg_hd)+SG_OFF;
126 }
127
128 {
129 @@ -772,9 +772,9 @@
130 if(i_fd!=-1)close(i_fd);
131 if(g_fd!=-1)close(g_fd);
132 if(d){
133 - if(d->private){
134 - if(d->private->sg_hd)free(d->private->sg_hd);
135 - free(d->private);
136 + if(d->private_data){
137 + if(d->private_data->sg_hd)free(d->private_data->sg_hd);
138 + free(d->private_data);
139 }
140 free(d);
141 }
142 @@ -821,7 +821,7 @@
143 d->interface=TEST_INTERFACE;
144 d->bigendianp=-1; /* We don't know yet... */
145 d->nsectors=-1;
146 - d->private=calloc(1,sizeof(*d->private));
147 + d->private_data=calloc(1,sizeof(*d->private_data));
148 d->drive_model=copystring("File based test interface");
149 idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",d->drive_model);
150
151 diff -ur cdparanoia-III-10.2/interface/scsi_interface.c cdparanoia/interface/scsi_interface.c
152 --- cdparanoia-III-10.2/interface/scsi_interface.c 2008-09-11 22:33:30.000000000 +0200
153 +++ cdparanoia/interface/scsi_interface.c 2009-01-28 18:02:11.000000000 +0100
154 @@ -15,13 +15,13 @@
155 static int timed_ioctl(cdrom_drive *d, int fd, int command, void *arg){
156 struct timespec tv1;
157 struct timespec tv2;
158 - int ret1=clock_gettime(d->private->clock,&tv1);
159 + int ret1=clock_gettime(d->private_data->clock,&tv1);
160 int ret2=ioctl(fd, command,arg);
161 - int ret3=clock_gettime(d->private->clock,&tv2);
162 + int ret3=clock_gettime(d->private_data->clock,&tv2);
163 if(ret1<0 || ret3<0){
164 - d->private->last_milliseconds=-1;
165 + d->private_data->last_milliseconds=-1;
166 }else{
167 - d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
168 + d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
169 }
170 return ret2;
171 }
172 @@ -96,7 +96,7 @@
173 static void clear_garbage(cdrom_drive *d){
174 fd_set fdset;
175 struct timeval tv;
176 - struct sg_header *sg_hd=d->private->sg_hd;
177 + struct sg_header *sg_hd=d->private_data->sg_hd;
178 int flag=0;
179
180 /* clear out any possibly preexisting garbage */
181 @@ -185,7 +185,7 @@
182 struct timespec tv2;
183 int tret1,tret2;
184 int status = 0;
185 - struct sg_header *sg_hd=d->private->sg_hd;
186 + struct sg_header *sg_hd=d->private_data->sg_hd;
187 long writebytes=SG_OFF+cmd_len+in_size;
188
189 /* generic scsi device services */
190 @@ -195,7 +195,7 @@
191
192 memset(sg_hd,0,sizeof(sg_hd));
193 memset(sense_buffer,0,SG_MAX_SENSE);
194 - memcpy(d->private->sg_buffer,cmd,cmd_len+in_size);
195 + memcpy(d->private_data->sg_buffer,cmd,cmd_len+in_size);
196 sg_hd->twelve_byte = cmd_len == 12;
197 sg_hd->result = 0;
198 sg_hd->reply_len = SG_OFF + out_size;
199 @@ -209,7 +209,7 @@
200 tell if the command failed. Scared yet? */
201
202 if(bytecheck && out_size>in_size){
203 - memset(d->private->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size);
204 + memset(d->private_data->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size);
205 /* the size does not remove cmd_len due to the way the kernel
206 driver copies buffers */
207 writebytes+=(out_size-in_size);
208 @@ -243,7 +243,7 @@
209 }
210
211 sigprocmask (SIG_BLOCK, &(d->sigset), NULL );
212 - tret1=clock_gettime(d->private->clock,&tv1);
213 + tret1=clock_gettime(d->private_data->clock,&tv1);
214 errno=0;
215 status = write(d->cdda_fd, sg_hd, writebytes );
216
217 @@ -289,7 +289,7 @@
218 }
219 }
220
221 - tret2=clock_gettime(d->private->clock,&tv2);
222 + tret2=clock_gettime(d->private_data->clock,&tv2);
223 errno=0;
224 status = read(d->cdda_fd, sg_hd, SG_OFF + out_size);
225 sigprocmask ( SIG_UNBLOCK, &(d->sigset), NULL );
226 @@ -313,7 +313,7 @@
227 if(bytecheck && in_size+cmd_len<out_size){
228 long i,flag=0;
229 for(i=in_size;i<out_size;i++)
230 - if(d->private->sg_buffer[i]!=bytefill){
231 + if(d->private_data->sg_buffer[i]!=bytefill){
232 flag=1;
233 break;
234 }
235 @@ -326,9 +326,9 @@
236
237 errno=0;
238 if(tret1<0 || tret2<0){
239 - d->private->last_milliseconds=-1;
240 + d->private_data->last_milliseconds=-1;
241 }else{
242 - d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000;
243 + d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000;
244 }
245 return(0);
246 }
247 @@ -347,7 +347,7 @@
248
249 memset(&hdr,0,sizeof(hdr));
250 memset(sense,0,sizeof(sense));
251 - memcpy(d->private->sg_buffer,cmd+cmd_len,in_size);
252 + memcpy(d->private_data->sg_buffer,cmd+cmd_len,in_size);
253
254 hdr.cmdp = cmd;
255 hdr.cmd_len = cmd_len;
256 @@ -355,7 +355,7 @@
257 hdr.mx_sb_len = SG_MAX_SENSE;
258 hdr.timeout = 50000;
259 hdr.interface_id = 'S';
260 - hdr.dxferp = d->private->sg_buffer;
261 + hdr.dxferp = d->private_data->sg_buffer;
262 hdr.flags = SG_FLAG_DIRECT_IO; /* direct IO if we can get it */
263
264 /* scary buffer fill hack */
265 @@ -400,7 +400,7 @@
266 if(bytecheck && in_size<out_size){
267 long i,flag=0;
268 for(i=in_size;i<out_size;i++)
269 - if(d->private->sg_buffer[i]!=bytefill){
270 + if(d->private_data->sg_buffer[i]!=bytefill){
271 flag=1;
272 break;
273 }
274 @@ -412,7 +412,7 @@
275 }
276
277 /* Can't rely on .duration because we can't be certain kernel has HZ set to something useful */
278 - /* d->private->last_milliseconds = hdr.duration; */
279 + /* d->private_data->last_milliseconds = hdr.duration; */
280
281 errno = 0;
282 return 0;
283 @@ -445,9 +445,9 @@
284
285 handle_scsi_cmd(d, cmd, 6, 0, 56, 0,0, sense);
286
287 - key = d->private->sg_buffer[2] & 0xf;
288 - ASC = d->private->sg_buffer[12];
289 - ASCQ = d->private->sg_buffer[13];
290 + key = d->private_data->sg_buffer[2] & 0xf;
291 + ASC = d->private_data->sg_buffer[12];
292 + ASCQ = d->private_data->sg_buffer[13];
293
294 if(key == 2 && ASC == 4 && ASCQ == 1) return 0;
295 return 1;
296 @@ -492,7 +492,7 @@
297 if (handle_scsi_cmd (d, cmd, 10, 0, size+4,'\377',1,sense)) return(1);
298
299 {
300 - unsigned char *b=d->private->sg_buffer;
301 + unsigned char *b=d->private_data->sg_buffer;
302 if(b[0])return(1); /* Handles only up to 256 bytes */
303 if(b[6])return(1); /* Handles only up to 256 bytes */
304
305 @@ -604,8 +604,8 @@
306 static unsigned int get_orig_sectorsize(cdrom_drive *d){
307 if(mode_sense(d,12,0x01))return(-1);
308
309 - d->orgdens = d->private->sg_buffer[4];
310 - return(d->orgsize = ((int)(d->private->sg_buffer[10])<<8)+d->private->sg_buffer[11]);
311 + d->orgdens = d->private_data->sg_buffer[4];
312 + return(d->orgsize = ((int)(d->private_data->sg_buffer[10])<<8)+d->private_data->sg_buffer[11]);
313 }
314
315 /* switch CDROM scsi drives to given sector size */
316 @@ -664,8 +664,8 @@
317 return(-4);
318 }
319
320 - first=d->private->sg_buffer[2];
321 - last=d->private->sg_buffer[3];
322 + first=d->private_data->sg_buffer[2];
323 + last=d->private_data->sg_buffer[3];
324 tracks=last-first+1;
325
326 if (last > MAXTRK || first > MAXTRK || last<0 || first<0) {
327 @@ -683,7 +683,7 @@
328 return(-5);
329 }
330 {
331 - scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4);
332 + scsi_TOC *toc=(scsi_TOC *)(d->private_data->sg_buffer+4);
333
334 d->disc_toc[i-first].bFlags=toc->bFlags;
335 d->disc_toc[i-first].bTrack=i;
336 @@ -704,7 +704,7 @@
337 return(-2);
338 }
339 {
340 - scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4);
341 + scsi_TOC *toc=(scsi_TOC *)(d->private_data->sg_buffer+4);
342
343 d->disc_toc[i-first].bFlags=toc->bFlags;
344 d->disc_toc[i-first].bTrack=0xAA;
345 @@ -738,7 +738,7 @@
346 }
347
348 /* copy to our structure and convert start sector */
349 - tracks = d->private->sg_buffer[1];
350 + tracks = d->private_data->sg_buffer[1];
351 if (tracks > MAXTRK) {
352 cderror(d,"003: CDROM reporting illegal number of tracks\n");
353 return(-3);
354 @@ -754,33 +754,33 @@
355 return(-5);
356 }
357
358 - d->disc_toc[i].bFlags = d->private->sg_buffer[10];
359 + d->disc_toc[i].bFlags = d->private_data->sg_buffer[10];
360 d->disc_toc[i].bTrack = i + 1;
361
362 d->disc_toc[i].dwStartSector= d->adjust_ssize *
363 - (((signed char)(d->private->sg_buffer[2])<<24) |
364 - (d->private->sg_buffer[3]<<16)|
365 - (d->private->sg_buffer[4]<<8)|
366 - (d->private->sg_buffer[5]));
367 + (((signed char)(d->private_data->sg_buffer[2])<<24) |
368 + (d->private_data->sg_buffer[3]<<16)|
369 + (d->private_data->sg_buffer[4]<<8)|
370 + (d->private_data->sg_buffer[5]));
371 }
372
373 d->disc_toc[i].bFlags = 0;
374 d->disc_toc[i].bTrack = i + 1;
375 - memcpy (&foo, d->private->sg_buffer+2, 4);
376 - memcpy (&bar, d->private->sg_buffer+6, 4);
377 + memcpy (&foo, d->private_data->sg_buffer+2, 4);
378 + memcpy (&bar, d->private_data->sg_buffer+6, 4);
379 d->disc_toc[i].dwStartSector = d->adjust_ssize * (be32_to_cpu(foo) +
380 be32_to_cpu(bar));
381
382 d->disc_toc[i].dwStartSector= d->adjust_ssize *
383 - ((((signed char)(d->private->sg_buffer[2])<<24) |
384 - (d->private->sg_buffer[3]<<16)|
385 - (d->private->sg_buffer[4]<<8)|
386 - (d->private->sg_buffer[5]))+
387 + ((((signed char)(d->private_data->sg_buffer[2])<<24) |
388 + (d->private_data->sg_buffer[3]<<16)|
389 + (d->private_data->sg_buffer[4]<<8)|
390 + (d->private_data->sg_buffer[5]))+
391
392 - ((((signed char)(d->private->sg_buffer[6])<<24) |
393 - (d->private->sg_buffer[7]<<16)|
394 - (d->private->sg_buffer[8]<<8)|
395 - (d->private->sg_buffer[9]))));
396 + ((((signed char)(d->private_data->sg_buffer[6])<<24) |
397 + (d->private_data->sg_buffer[7]<<16)|
398 + (d->private_data->sg_buffer[8]<<8)|
399 + (d->private_data->sg_buffer[9]))));
400
401
402 d->cd_extra = FixupTOC(d,tracks+1);
403 @@ -817,7 +817,7 @@
404 cmd[8] = sectors;
405 if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
406 return(ret);
407 - if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
408 + if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
409 return(0);
410 }
411
412 @@ -836,7 +836,7 @@
413 cmd[9] = sectors;
414 if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
415 return(ret);
416 - if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
417 + if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
418 return(0);
419 }
420
421 @@ -854,7 +854,7 @@
422 cmd[8] = sectors;
423 if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
424 return(ret);
425 - if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
426 + if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
427 return(0);
428 }
429
430 @@ -872,7 +872,7 @@
431 cmd[9] = sectors;
432 if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
433 return(ret);
434 - if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
435 + if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
436 return(0);
437 }
438
439 @@ -890,7 +890,7 @@
440 cmd[8] = sectors;
441 if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
442 return(ret);
443 - if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
444 + if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
445 return(0);
446 }
447
448 @@ -908,7 +908,7 @@
449 cmd[9] = sectors;
450 if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
451 return(ret);
452 - if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
453 + if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
454 return(0);
455 }
456
457 @@ -922,7 +922,7 @@
458 cmd[8] = sectors;
459 if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
460 return(ret);
461 - if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
462 + if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
463 return(0);
464 }
465
466 @@ -936,7 +936,7 @@
467 cmd[8] = sectors;
468 if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
469 return(ret);
470 - if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
471 + if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
472 return(0);
473 }
474
475 @@ -950,7 +950,7 @@
476 cmd[8] = sectors;
477 if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
478 return(ret);
479 - if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
480 + if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
481 return(0);
482 }
483
484 @@ -964,7 +964,7 @@
485 cmd[8] = sectors;
486 if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
487 return(ret);
488 - if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
489 + if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
490 return(0);
491 }
492
493 @@ -978,7 +978,7 @@
494 cmd[8] = sectors;
495 if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
496 return(ret);
497 - if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
498 + if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
499 return(0);
500 }
501
502 @@ -992,7 +992,7 @@
503 cmd[8] = sectors;
504 if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
505 return(ret);
506 - if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
507 + if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
508 return(0);
509 }
510
511 @@ -1026,7 +1026,7 @@
512
513 if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
514 return(ret);
515 - if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
516 + if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
517 return(0);
518 }
519
520 @@ -1039,7 +1039,7 @@
521
522 if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
523 return(ret);
524 - if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
525 + if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
526 return(0);
527 }
528
529 @@ -1052,7 +1052,7 @@
530
531 if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
532 return(ret);
533 - if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
534 + if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
535 return(0);
536 }
537
538 @@ -1275,7 +1275,7 @@
539 static int count_2352_bytes(cdrom_drive *d){
540 long i;
541 for(i=2351;i>=0;i--)
542 - if(d->private->sg_buffer[i]!=(unsigned char)'\177')
543 + if(d->private_data->sg_buffer[i]!=(unsigned char)'\177')
544 return(((i+3)>>2)<<2);
545
546 return(0);
547 @@ -1284,7 +1284,7 @@
548 static int verify_nonzero(cdrom_drive *d){
549 long i,flag=0;
550 for(i=0;i<2352;i++)
551 - if(d->private->sg_buffer[i]!=0){
552 + if(d->private_data->sg_buffer[i]!=0){
553 flag=1;
554 break;
555 }
556 @@ -1298,7 +1298,7 @@
557
558 static int verify_read_command(cdrom_drive *d){
559 int i,j,k;
560 - int audioflag=0;
561 + int audioflag=1;
562
563 int (*enablecommand) (struct cdrom_drive *d, int speed);
564 long (*readcommand) (struct cdrom_drive *d, void *p, long begin,
565 @@ -1313,7 +1313,7 @@
566 for data */
567
568 if(d->enable_cdda(d,1)==0){
569 -
570 + audioflag=0;
571 for(i=1;i<=d->tracks;i++){
572 if(cdda_track_audiop(d,i)==1){
573 long firstsector=cdda_track_firstsector(d,i);
574 @@ -1358,115 +1358,111 @@
575 /* NEC test must come before sony; the nec drive expects d8 to be
576 10 bytes, and a 12 byte verson (Sony) crashes the drive */
577
578 - for(j=0;j<15;j++){
579 - int densitypossible=1;
580 -
581 - switch(j){
582 + for(i=0;i<5;i++){
583 + switch(i){
584 case 0:
585 - d->read_audio=scsi_read_28;
586 - rs="28 0x,00";
587 + d->density=0;
588 + d->enable_cdda=Dummy;
589 + es="none ";
590 break;
591 case 1:
592 - d->read_audio=scsi_read_A8;
593 - rs="a8 0x,00";
594 + d->density=0;
595 + d->enable_cdda=scsi_enable_cdda;
596 + es="yes/0x00";
597 break;
598 -
599 case 2:
600 - d->read_audio=scsi_read_mmcB;
601 - rs="be 02,10";
602 - densitypossible=0;
603 + d->density=0x04;
604 + d->enable_cdda=scsi_enable_cdda;
605 + es="yes/0x04";
606 break;
607 case 3:
608 - d->read_audio=scsi_read_mmc2B;
609 - rs="be 02,f8";
610 - densitypossible=0;
611 + d->density=0x82;
612 + d->enable_cdda=scsi_enable_cdda;
613 + es="yes/0x82";
614 break;
615 case 4:
616 - d->read_audio=scsi_read_mmc3B;
617 - rs="be 06,f8";
618 - densitypossible=0;
619 - break;
620 -
621 - case 5:
622 - d->read_audio=scsi_read_mmc;
623 - rs="be 00,10";
624 - densitypossible=0;
625 - break;
626 - case 6:
627 - d->read_audio=scsi_read_mmc2;
628 - rs="be 00,f8";
629 - densitypossible=0;
630 - break;
631 - case 7:
632 - d->read_audio=scsi_read_mmc3;
633 - rs="be 04,f8";
634 - densitypossible=0;
635 - break;
636 -
637 - case 8:
638 - d->read_audio=scsi_read_msf;
639 - rs="b9 00,10";
640 - densitypossible=0;
641 - break;
642 - case 9:
643 - d->read_audio=scsi_read_msf2;
644 - rs="b9 00,f8";
645 - densitypossible=0;
646 - break;
647 - case 10:
648 - d->read_audio=scsi_read_msf3;
649 - rs="b9 04,f8";
650 - densitypossible=0;
651 - break;
652 -
653 - case 11:
654 - d->read_audio=scsi_read_D4_10;
655 - rs="d4(10)0x";
656 - break;
657 - case 12:
658 - d->read_audio=scsi_read_D4_12;
659 - rs="d4(12)0x";
660 - break;
661 - case 13:
662 - d->read_audio=scsi_read_D5;
663 - rs="d5 0x,00";
664 - break;
665 - case 14:
666 - d->read_audio=scsi_read_D8;
667 - rs="d8 0x,00";
668 + d->density=0x81;
669 + d->enable_cdda=scsi_enable_cdda;
670 + es="yes/0x81";
671 break;
672 }
673 -
674 - for(i=0;i<5;i++){
675 - switch(i){
676 +
677 + for(j=0;j<15;j++){
678 +
679 + switch(j){
680 case 0:
681 - d->density=0;
682 - d->enable_cdda=Dummy;
683 - es="none ";
684 - if(!densitypossible)i=5; /* short circuit MMC style commands */
685 + d->read_audio=scsi_read_28;
686 + rs="28 0x,00";
687 break;
688 case 1:
689 - d->density=0;
690 - d->enable_cdda=scsi_enable_cdda;
691 - es="yes/0x00";
692 + d->read_audio=scsi_read_A8;
693 + rs="a8 0x,00";
694 break;
695 +
696 + /* 2 through 10 do not allow/require density */
697 case 2:
698 - d->density=0x04;
699 - d->enable_cdda=scsi_enable_cdda;
700 - es="yes/0x04";
701 - break;
702 + d->read_audio=scsi_read_mmcB;
703 + rs="be 02,10";
704 + if(i==0)break;
705 case 3:
706 - d->density=0x82;
707 - d->enable_cdda=scsi_enable_cdda;
708 - es="yes/0x82";
709 - break;
710 + j=3;
711 + d->read_audio=scsi_read_mmc2B;
712 + rs="be 02,f8";
713 + if(i==0)break;
714 case 4:
715 - d->density=0x81;
716 - d->enable_cdda=scsi_enable_cdda;
717 - es="yes/0x81";
718 + j=4;
719 + d->read_audio=scsi_read_mmc3B;
720 + rs="be 06,f8";
721 + if(i==0)break;
722 + case 5:
723 + j=5;
724 + d->read_audio=scsi_read_mmc;
725 + rs="be 00,10";
726 + if(i==0)break;
727 + case 6:
728 + j=6;
729 + d->read_audio=scsi_read_mmc2;
730 + rs="be 00,f8";
731 + if(i==0)break;
732 + case 7:
733 + j=7;
734 + d->read_audio=scsi_read_mmc3;
735 + rs="be 04,f8";
736 + if(i==0)break;
737 + case 8:
738 + j=8;
739 + d->read_audio=scsi_read_msf;
740 + rs="b9 00,10";
741 + if(i==0)break;
742 + case 9:
743 + j=9;
744 + d->read_audio=scsi_read_msf2;
745 + rs="b9 00,f8";
746 + if(i==0)break;
747 + case 10:
748 + j=10;
749 + d->read_audio=scsi_read_msf3;
750 + rs="b9 04,f8";
751 + if(i==0)break;
752 +
753 + case 11:
754 + d->read_audio=scsi_read_D4_10;
755 + rs="d4(10)0x";
756 + break;
757 + case 12:
758 + d->read_audio=scsi_read_D4_12;
759 + rs="d4(12)0x";
760 + break;
761 + case 13:
762 + d->read_audio=scsi_read_D5;
763 + rs="d5 0x,00";
764 + break;
765 + case 14:
766 + d->read_audio=scsi_read_D8;
767 + rs="d8 0x,00";
768 break;
769 }
770 -
771 +
772 cdmessage(d,"\ttest -> density: [");
773 cdmessage(d,es);
774 cdmessage(d,"] command: [");
775 @@ -1525,21 +1521,21 @@
776 if(zeroflag){
777 char buffer[256];
778 sprintf(buffer,"\t\tDrive returned %d packet(s), but contents\n"
779 - "\t\twere entirely zero\n",zeroflag);
780 + "\t\twere entirely zero\n",zeroflag);
781 cdmessage(d,buffer);
782 }
783 }
784 }
785 }
786 -
787 +
788 /* D'oh. */
789 d->density=density;
790 d->read_audio=readcommand;
791 d->enable_cdda=enablecommand;
792 -
793 +
794 cdmessage(d,"\tUnable to find any suitable command set from probe;\n"
795 "\tdrive probably not CDDA capable.\n");
796 -
797 +
798 cderror(d,"006: Could not read any data from drive\n");
799
800 }
801 @@ -1625,7 +1621,7 @@
802 d->is_mmc=0;
803 if(mode_sense(d,22,0x2A)==0){
804
805 - b=d->private->sg_buffer;
806 + b=d->private_data->sg_buffer;
807 b+=b[3]+4;
808
809 if((b[0]&0x3F)==0x2A){
810 @@ -1673,7 +1669,7 @@
811 cderror(d,"008: Unable to identify CDROM model\n");
812 return(NULL);
813 }
814 - return (d->private->sg_buffer);
815 + return (d->private_data->sg_buffer);
816 }
817
818 int scsi_init_drive(cdrom_drive *d){
819 @@ -1690,33 +1686,20 @@
820 if(d->is_atapi)d->lun=0; /* it should already be; just to make sure */
821
822 if(d->is_mmc){
823 -
824 d->read_audio = scsi_read_mmc2B;
825 d->bigendianp=0;
826 -
827 check_exceptions(d,mmc_list);
828 -
829 }else{
830 -
831 if(d->is_atapi){
832 /* Not MMC maybe still uses 0xbe */
833 -
834 d->read_audio = scsi_read_mmc2B;
835 d->bigendianp=0;
836 -
837 check_exceptions(d,atapi_list);
838 -
839 }else{
840 -
841 check_exceptions(d,scsi_list);
842 -
843 }
844 }
845
846 - if(!d->is_atapi)set_sectorsize(d,2048); /* we really do want the
847 - sector size at 2048 to begin.*/
848 - d->enable_cdda(d,0);
849 -
850 d->read_toc = (!memcmp(d->drive_model, "IMS", 3) && !d->is_atapi) ? scsi_read_toc2 :
851 scsi_read_toc;
852 d->set_speed = scsi_set_speed;
853 @@ -1742,8 +1725,8 @@
854 check_cache(d);
855
856 d->error_retry=1;
857 - d->private->sg_hd=realloc(d->private->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128);
858 - d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF;
859 + d->private_data->sg_hd=realloc(d->private_data->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128);
860 + d->private_data->sg_buffer=((unsigned char *)d->private_data->sg_hd)+SG_OFF;
861 d->report_all=1;
862 return(0);
863 }
864 diff -ur cdparanoia-III-10.2/interface/test_interface.c cdparanoia/interface/test_interface.c
865 --- cdparanoia-III-10.2/interface/test_interface.c 2008-09-11 22:33:30.000000000 +0200
866 +++ cdparanoia/interface/test_interface.c 2009-01-28 18:02:11.000000000 +0100
867 @@ -66,9 +66,9 @@
868 if(!fd)fd=fdopen(d->cdda_fd,"r");
869
870 if(begin<lastread)
871 - d->private->last_milliseconds=20;
872 + d->private_data->last_milliseconds=20;
873 else
874 - d->private->last_milliseconds=sectors;
875 + d->private_data->last_milliseconds=sectors;
876
877 #ifdef CDDA_TEST_UNDERRUN
878 sectors-=1;
879 diff -ur cdparanoia-III-10.2/main.c cdparanoia/main.c
880 --- cdparanoia-III-10.2/main.c 2008-09-11 23:11:02.000000000 +0200
881 +++ cdparanoia/main.c 2009-01-28 18:02:11.000000000 +0100
882 @@ -746,7 +746,7 @@
883 break;
884 case 'p':
885 output_type=0;
886 - output_endian=-1;
887 + output_endian=bigendianp();
888 break;
889 case 'r':
890 output_type=0;
891 diff -ur cdparanoia-III-10.2/version.h cdparanoia/version.h
892 --- cdparanoia-III-10.2/version.h 2008-09-11 22:33:30.000000000 +0200
893 +++ cdparanoia/version.h 2009-01-28 18:02:11.000000000 +0100
894 @@ -1,11 +1,11 @@
895 /******************************************************************
896 * CopyPolicy: GNU Public License 2 applies
897 *
898 - * cdda_paranoia generation III release 10.2
899 + * cdda_paranoia generation III release 10.3
900 * Copyright (C) 2008 Monty monty@xiph.org
901 *
902 ******************************************************************/
903
904
905 -#define VERSIONNUM "10.2"
906 -#define VERSION "cdparanoia III release " VERSIONNUM " (September 11, 2008)\n"
907 +#define VERSIONNUM "10.3pre"
908 +#define VERSION "cdparanoia III release " VERSIONNUM " (September 16, 2008)\n"