From: Akihiro Sagawa <sagawa.aki(a)gmail.com> Due to insufficient testing, HAVE_SCSIREQ_T_CMD was never defined and the issue remained unnoticed for over two decades. It is better to remove the blocks than to maintain them. --- configure | 12 ----- configure.ac | 4 +- dlls/ntdll/unix/cdrom.c | 114 ---------------------------------------- include/config.h.in | 3 -- 4 files changed, 2 insertions(+), 131 deletions(-) diff --git a/configure b/configure index 750e43fb7e4..7ff3d4040a2 100755 --- a/configure +++ b/configure @@ -21558,18 +21558,6 @@ printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_UN_SUN_LEN 1" >>confdefs.h fi -ac_fn_c_check_member "$LINENO" "scsireq_t" "cmd" "ac_cv_member_scsireq_t_cmd" "#include <sys/types.h> -#ifdef HAVE_SCSI_SG_H -#include <scsi/sg.h> -#endif -" -if test "x$ac_cv_member_scsireq_t_cmd" = xyes -then : - -printf "%s\n" "#define HAVE_SCSIREQ_T_CMD 1" >>confdefs.h - - -fi ac_fn_c_check_member "$LINENO" "sg_io_hdr_t" "interface_id" "ac_cv_member_sg_io_hdr_t_interface_id" "#include <sys/types.h> #ifdef HAVE_SCSI_SG_H #include <scsi/sg.h> diff --git a/configure.ac b/configure.ac index 7481d175840..94e18f9faa1 100644 --- a/configure.ac +++ b/configure.ac @@ -2193,8 +2193,8 @@ AC_CHECK_MEMBERS([struct sockaddr_un.sun_len],,, # include <sys/un.h> #endif]) -dnl Check for scsireq_t and sg_io_hdr_t members -AC_CHECK_MEMBERS([scsireq_t.cmd, sg_io_hdr_t.interface_id],,, +dnl Check for sg_io_hdr_t members +AC_CHECK_MEMBERS([sg_io_hdr_t.interface_id],,, [#include <sys/types.h> #ifdef HAVE_SCSI_SG_H #include <scsi/sg.h> diff --git a/dlls/ntdll/unix/cdrom.c b/dlls/ntdll/unix/cdrom.c index af98aabb9f2..f4f11c8e62f 100644 --- a/dlls/ntdll/unix/cdrom.c +++ b/dlls/ntdll/unix/cdrom.c @@ -1617,9 +1617,6 @@ static NTSTATUS CDROM_ScsiPassThroughDirect(int fd, PSCSI_PASS_THROUGH_DIRECT pP #ifdef HAVE_SG_IO_HDR_T_INTERFACE_ID sg_io_hdr_t cmd; int io; -#elif defined HAVE_SCSIREQ_T_CMD - scsireq_t cmd; - int io; #elif defined __APPLE__ dk_scsi_command_t cmd; int io; @@ -1677,56 +1674,6 @@ static NTSTATUS CDROM_ScsiPassThroughDirect(int fd, PSCSI_PASS_THROUGH_DIRECT pP ret = CDROM_GetStatusCode(io); -#elif defined HAVE_SCSIREQ_T_CMD - - memset(&cmd, 0, sizeof(cmd)); - memcpy(&(cmd.cmd), &(pPacket->Cdb), pPacket->CdbLength); - - cmd.cmdlen = pPacket->CdbLength; - cmd.databuf = pPacket->DataBuffer; - cmd.datalen = pPacket->DataTransferLength; - cmd.senselen = pPacket->SenseInfoLength; - cmd.timeout = pPacket->TimeOutValue*1000; /* in milliseconds */ - - switch (pPacket->DataIn) - { - case SCSI_IOCTL_DATA_OUT: - cmd.flags |= SCCMD_WRITE; - break; - case SCSI_IOCTL_DATA_IN: - cmd.flags |= SCCMD_READ; - break; - case SCSI_IOCTL_DATA_UNSPECIFIED: - cmd.flags = 0; - break; - default: - return STATUS_INVALID_PARAMETER; - } - - io = ioctl(fd, SCIOCCOMMAND, &cmd); - - switch (cmd.retsts) - { - case SCCMD_OK: break; - case SCCMD_TIMEOUT: return STATUS_TIMEOUT; - break; - case SCCMD_BUSY: return STATUS_DEVICE_BUSY; - break; - case SCCMD_SENSE: break; - case SCCMD_UNKNOWN: return STATUS_UNSUCCESSFUL; - break; - } - - if (pPacket->SenseInfoLength != 0) - { - memcpy((char*)pPacket + pPacket->SenseInfoOffset, - cmd.sense, pPacket->SenseInfoLength); - } - - pPacket->ScsiStatus = cmd.status; - - ret = CDROM_GetStatusCode(io); - #elif defined(__APPLE__) memset(&cmd, 0, sizeof(cmd)); @@ -1799,9 +1746,6 @@ static NTSTATUS CDROM_ScsiPassThrough(int fd, PSCSI_PASS_THROUGH pPacket) #ifdef HAVE_SG_IO_HDR_T_INTERFACE_ID sg_io_hdr_t cmd; int io; -#elif defined HAVE_SCSIREQ_T_CMD - scsireq_t cmd; - int io; #elif defined __APPLE__ dk_scsi_command_t cmd; int io; @@ -1861,64 +1805,6 @@ static NTSTATUS CDROM_ScsiPassThrough(int fd, PSCSI_PASS_THROUGH pPacket) ret = CDROM_GetStatusCode(io); -#elif defined HAVE_SCSIREQ_T_CMD - - memset(&cmd, 0, sizeof(cmd)); - memcpy(&(cmd.cmd), &(pPacket->Cdb), pPacket->CdbLength); - - if ( pPacket->DataBufferOffset > 0x1000 ) - { - cmd.databuf = (void*)pPacket->DataBufferOffset; - } - else - { - cmd.databuf = (char*)pPacket + pPacket->DataBufferOffset; - } - - cmd.cmdlen = pPacket->CdbLength; - cmd.datalen = pPacket->DataTransferLength; - cmd.senselen = pPacket->SenseInfoLength; - cmd.timeout = pPacket->TimeOutValue*1000; /* in milliseconds */ - - switch (pPacket->DataIn) - { - case SCSI_IOCTL_DATA_OUT: - cmd.flags |= SCCMD_WRITE; - break; - case SCSI_IOCTL_DATA_IN: - cmd.flags |= SCCMD_READ; - break; - case SCSI_IOCTL_DATA_UNSPECIFIED: - cmd.flags = 0; - break; - default: - return STATUS_INVALID_PARAMETER; - } - - io = ioctl(fd, SCIOCCOMMAND, &cmd); - - switch (cmd.retsts) - { - case SCCMD_OK: break; - case SCCMD_TIMEOUT: return STATUS_TIMEOUT; - break; - case SCCMD_BUSY: return STATUS_DEVICE_BUSY; - break; - case SCCMD_SENSE: break; - case SCCMD_UNKNOWN: return STATUS_UNSUCCESSFUL; - break; - } - - if (pPacket->SenseInfoLength != 0) - { - memcpy((char*)pPacket + pPacket->SenseInfoOffset, - cmd.sense, pPacket->SenseInfoLength); - } - - pPacket->ScsiStatus = cmd.status; - - ret = CDROM_GetStatusCode(io); - #elif defined(__APPLE__) memset(&cmd, 0, sizeof(cmd)); diff --git a/include/config.h.in b/include/config.h.in index d002246e719..84e71120248 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -375,9 +375,6 @@ /* Define to 1 if you have the 'sched_yield' function. */ #undef HAVE_SCHED_YIELD -/* Define to 1 if 'cmd' is a member of 'scsireq_t'. */ -#undef HAVE_SCSIREQ_T_CMD - /* Define to 1 if you have the <scsi/scsi.h> header file. */ #undef HAVE_SCSI_SCSI_H -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9264