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