compile error

Francois Gouget fgouget at free.fr
Thu May 9 02:53:33 CDT 2002


Here is a patch that should make it possible to compile that file on
your system (and on RedHat 6.2).

As you may notice I use HAVE_CDROM_TIMEOUT without the corresponding
autoconf check. There reason is that i am not sure what should be done
about cdrom_generic_command.timeout. We could:
 * have a configure check and ifdef-out this whole section of
code if timeout is missing
 * have a configure check and just ifdef-out that line as I have done.
Would the request work if timeout is set to 0 (via memset)
 * poke the value at a hard-coded offset in the structure
 * duplicate the structure definition under another name and use that

It seems that on your system CDROM_SEND_PACKET is not defined, though it
is defined on RedHat 6.2. So in your case my patch just disables
everything.

Does anyone have suggestions?


--
Francois Gouget         fgouget at free.fr        http://fgouget.free.fr/
    I haven't lost my mind, it's backed up on tape around here somewhere...


Index: dlls/ntdll/cdrom.c
===================================================================
RCS file: /home/wine/wine/dlls/ntdll/cdrom.c,v
retrieving revision 1.9
diff -u -r1.9 cdrom.c
--- dlls/ntdll/cdrom.c	1 May 2002 22:25:42 -0000	1.9
+++ dlls/ntdll/cdrom.c	6 May 2002 20:05:34 -0000
@@ -102,8 +102,12 @@
             case IDE3_MAJOR: *iface = 3; break;
             case IDE4_MAJOR: *iface = 4; break;
             case IDE5_MAJOR: *iface = 5; break;
+#ifdef IDE6_MAJOR
             case IDE6_MAJOR: *iface = 6; break;
+#endif
+#ifdef IDE7_MAJOR
             case IDE7_MAJOR: *iface = 7; break;
+#endif
             default:
                              FIXME("major %d not supported\n", major(st.st_rdev));
         }
@@ -1027,6 +1031,18 @@
     return ret;
 }

+/* For compatibility with glibc 2.1.3 */
+#ifndef CGC_DATA_WRITE
+#define CGC_DATA_WRITE 1
+#endif
+#ifndef CGC_DATA_READ
+#define CGC_DATA_READ 2
+#endif
+#ifndef CGC_DATA_NONE
+#define CGC_DATA_NONE 3
+#endif
+
+
 /******************************************************************
  *		CDROM_ScsiPassThroughDirect
  *
@@ -1035,7 +1051,7 @@
 static DWORD CDROM_ScsiPassThroughDirect(int dev, PSCSI_PASS_THROUGH_DIRECT pPacket)
 {
     int ret = STATUS_NOT_SUPPORTED;
-#if defined(linux)
+#ifdef CDROM_SEND_PACKET
     struct cdrom_generic_command cmd;
     struct request_sense sense;
     int io;
@@ -1057,8 +1073,9 @@
     cmd.buffer         = pPacket->DataBuffer;
     cmd.buflen         = pPacket->DataTransferLength;
     cmd.sense          = &sense;
-    cmd.quiet          = 0;
+#ifdef HAVE_CDROM_TIMEOUT
     cmd.timeout        = pPacket->TimeOutValue*HZ;
+#endif

     switch (pPacket->DataIn)
     {
@@ -1099,7 +1116,7 @@
 static DWORD CDROM_ScsiPassThrough(int dev, PSCSI_PASS_THROUGH pPacket)
 {
     int ret = STATUS_NOT_SUPPORTED;
-#if defined(linux)
+#ifdef CDROM_SEND_PACKET
     struct cdrom_generic_command cmd;
     struct request_sense sense;
     int io;
@@ -1128,8 +1145,9 @@
     }
     cmd.buflen         = pPacket->DataTransferLength;
     cmd.sense          = &sense;
-    cmd.quiet          = 0;
+#ifdef HAVE_CDROM_TIMEOUT
     cmd.timeout        = pPacket->TimeOutValue*HZ;
+#endif

     switch (pPacket->DataIn)
     {





More information about the wine-devel mailing list