dlls/ntdll/tape.c portability

Gerald Pfeifer gerald at pfeifer.com
Sat Feb 4 17:50:07 CST 2006


On Sat, 4 Feb 2006, Alexandre Julliard wrote:
> Please add configure checks instead of #ifdef __FreeBSD__.

Like so?

Tested on SUSE Linux 10.0 and FreeBSD 4.10.

Gerald

ChangeLog:
Use struct mtget.mt_blksiz on systems featuring this.
Work around using struct mtget.mt_gstat on systems lacking this.

Index: configure.ac
===================================================================
RCS file: /home/wine/wine/configure.ac,v
retrieving revision 1.425
diff -u -p -r1.425 configure.ac
--- configure.ac	26 Jan 2006 12:47:07 -0000	1.425
+++ configure.ac	4 Feb 2006 23:05:54 -0000
@@ -1427,6 +1427,16 @@ AC_CHECK_MEMBERS([scsireq_t.cmd, sg_io_h
 dnl Check for siginfo_t members
 AC_CHECK_MEMBERS([siginfo_t.si_fd],,,[#include <signal.h>])
 
+dnl Check for struct mtget members
+AC_CHECK_MEMBERS([struct mtget.mt_blksiz],,,
+[#ifdef HAVE_SYS_MTIO_H
+#include <sys/mtio.h>
+#endif])
+AC_CHECK_MEMBERS([struct mtget.mt_gstat],,,
+[#ifdef HAVE_SYS_MTIO_H
+#include <sys/mtio.h>
+#endif])
+
 dnl Check for struct option
 AC_CHECK_MEMBERS([struct option.name],,,
 [#ifdef HAVE_GETOPT_H
Index: dlls/ntdll/tape.c
===================================================================
RCS file: /home/wine/wine/dlls/ntdll/tape.c,v
retrieving revision 1.3
diff -u -p -r1.3 tape.c
--- dlls/ntdll/tape.c	31 Jan 2006 12:08:47 -0000	1.3
+++ dlls/ntdll/tape.c	4 Feb 2006 23:05:54 -0000
@@ -177,7 +177,11 @@ static NTSTATUS TAPE_GetDriveParams( int
     data->Compression = FALSE;
     data->DataPadding = FALSE;
     data->ReportSetmarks = FALSE;
+#ifdef HAVE_STRUCT_MTGET_MT_BLKSIZ
+    data->DefaultBlockSize = get.mt_blksiz;
+#else
     data->DefaultBlockSize = get.mt_dsreg & MT_ST_BLKSIZE_MASK;
+#endif
     data->MaximumBlockSize = data->DefaultBlockSize;
     data->MinimumBlockSize = data->DefaultBlockSize;
     data->MaximumPartitionCount = 1;
@@ -208,9 +212,17 @@ static NTSTATUS TAPE_GetMediaParams( int
 
     data->Capacity.u.LowPart = 1024 * 1024 * 1024;
     data->Remaining.u.LowPart = 1024 * 1024 * 1024;
+#ifdef HAVE_STRUCT_MTGET_MT_BLKSIZ
+    data->BlockSize = get.mt_blksiz;
+#else
     data->BlockSize = get.mt_dsreg & MT_ST_BLKSIZE_MASK;
+#endif
     data->PartitionCount = 1;
+#ifdef HAVE_STRUCT_MTGET_GSTAT
     data->WriteProtected = GMT_WR_PROT(get.mt_gstat);
+#else
+    data->WriteProtected = 0;
+#endif
 
     return status;
 #else



More information about the wine-patches mailing list