Blob Blame History Raw
--- cdparanoia-III-alpha9.8/interface/scsi_interface.c.env	2004-09-30 11:36:29.495045730 -0400
+++ cdparanoia-III-alpha9.8/interface/scsi_interface.c	2004-09-30 11:35:52.261283378 -0400
@@ -177,8 +177,11 @@
    * "allocation, so be more conservative: 32kB max until I test more 
    * thoroughly".  We're not currently honoring that, because we should
    * always get -ENOMEM.
+   *
+   * Updated: but we don't always get -ENOMEM.  Sometimes USB drives 
+   * still fail the wrong way.  This needs some kernel-land investigation.
    */
-#if 0
+#if 1
   cur=(cur>1024*32?1024*32:cur);
 #endif
   d->nsectors=cur/CD_FRAMESIZE_RAW;
--- cdparanoia-III-alpha9.8/interface/scan_devices.c.env	2004-09-30 11:30:55.422135762 -0400
+++ cdparanoia-III-alpha9.8/interface/scan_devices.c	2004-09-30 11:34:04.815523677 -0400
@@ -104,6 +104,7 @@
 cdrom_drive *cdda_identify(const char *device, int messagedest,char **messages){
   struct stat st;
   cdrom_drive *d=NULL;
+  char *transport = getenv("CDDA_TRANSPORT");
   idmessage(messagedest,messages,"Checking %s for cdrom...",device);
 
   if(stat(device,&st)){
@@ -120,11 +121,15 @@
 #endif
 
 #ifdef SG_IO
-  d=cdda_identify_scsi(device,NULL,messagedest,messages);
-  if(!d)d=cdda_identify_cooked(device,messagedest,messages);
-#else
-  if(!d)d=cdda_identify_scsi(device,NULL,messagedest,messages);
-  d=cdda_identify_cooked(device,messagedest,messages);
+  if (transport && !strcasecmp(transport, "cooked")) {
+#endif
+    d=cdda_identify_cooked(device,messagedest,messages);
+    if(!d)d=cdda_identify_scsi(device,NULL,messagedest,messages);
+#ifdef SG_IO
+  } else {
+    d=cdda_identify_scsi(device,NULL,messagedest,messages);
+    if(!d)d=cdda_identify_cooked(device,messagedest,messages);
+  }
 #endif
 
 #ifdef CDDA_TEST