diff -urN wine-20050930/dlls/kernel/oldconfig.c wine-20050930/dlls/kernel/oldconfig.c --- wine-20050930/dlls/kernel/oldconfig.c 2005-08-19 02:58:40.000000000 -0700 +++ wine-20050930/dlls/kernel/oldconfig.c 2007-02-25 20:32:49.000000000 -0800 @@ -287,6 +287,7 @@ static int SCSI_getprocentry( FILE * procfile, struct LinuxProcScsiDevice * dev ) { int result; + unsigned int ansirev; result = fscanf( procfile, "Host:%*1[ ]scsi%d%*1[ ]Channel:%*1[ ]%d%*1[ ]Id:%*1[ ]%d%*1[ ]Lun:%*1[ ]%d\n", @@ -316,9 +317,10 @@ } result = fscanf( procfile, - " Type:%*3[ ]%32c%*1[ ]ANSI%*1[ ]SCSI%*1[ ]revision:%*1[ ]%d\n", + " Type:%*3[ ]%32c%*1[ ]ANSI%*1[ ]SCSI%*1[ ]revision:%*1[ ]%x\n", dev->type, - &dev->ansirev ); + &ansirev ); + dev->ansirev = (ansirev > 3) ? 2 : ansirev; /* ide-scsi writes ffffffff */ if( result != 2 ) { ERR("SCSI type line scan count error\n"); diff -urN wine-20050930/dlls/ntdll/cdrom.c wine-20050930/dlls/ntdll/cdrom.c --- wine-20050930/dlls/ntdll/cdrom.c 2005-09-12 03:30:06.000000000 -0700 +++ wine-20050930/dlls/ntdll/cdrom.c 2007-02-26 21:03:08.000000000 -0800 @@ -1440,6 +1440,8 @@ scsireq_t cmd; int io; #endif + size_t i; + unsigned char *p; if (pPacket->Length < sizeof(SCSI_PASS_THROUGH_DIRECT)) return STATUS_BUFFER_TOO_SMALL; @@ -1470,6 +1472,10 @@ cmd.sbp = (unsigned char*)pPacket + pPacket->SenseInfoOffset; cmd.timeout = pPacket->TimeOutValue*1000; + TRACE("cdb[%d]: ", cmd.cmd_len); + for(i = cmd.cmd_len, p = cmd.cmdp; i != 0; i--) + TRACE("%02x ", *p++); + TRACE("\n"); switch (pPacket->DataIn) { case SCSI_IOCTL_DATA_IN: @@ -1477,6 +1483,9 @@ break; case SCSI_IOCTL_DATA_OUT: cmd.dxfer_direction = SG_DXFER_TO_DEV; + TRACE("host->device data phase: "); + for (i = cmd.dxfer_len, p = cmd.dxferp; i != 0; i--) + TRACE("%02x ", *p++); break; case SCSI_IOCTL_DATA_UNSPECIFIED: cmd.dxfer_direction = SG_DXFER_NONE; @@ -1487,10 +1496,26 @@ io = ioctl(fd, SG_IO, &cmd); + if (pPacket->DataIn == SCSI_IOCTL_DATA_IN) { + TRACE("device->host data phase: "); + for (i = cmd.dxfer_len - cmd.resid, p = cmd.dxferp; i != 0; i--) + TRACE("%02x ", *p++); + } + TRACE(" (residual = %d)\n", cmd.resid); + pPacket->ScsiStatus = cmd.status; pPacket->DataTransferLength = cmd.resid; pPacket->SenseInfoLength = cmd.sb_len_wr; + TRACE("status byte %d", cmd.status); + if (cmd.sb_len_wr != 0) { + TRACE(", sense[%d]: ", cmd.sb_len_wr); + for (i = cmd.sb_len_wr, p = cmd.sbp; i != 0; i--) + TRACE("%02x ", *p++); + } else + TRACE(", no sense requested."); + TRACE("\n"); + ret = CDROM_GetStatusCode(io); #elif defined HAVE_SCSIREQ_T_CMD