branch Attitude Adjustment packages
[12.09/packages.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"