[Wine]Cluster size not supported

Rein Klazes wijn at wanadoo.nl
Sat Jan 1 08:03:01 CST 2005


On Fri, 31 Dec 2004 18:38:30 -0500, you wrote:

> OK, I installed your patch.
> 
> % wine fds.exe
> fstatvfs is available
>   bsize 4096 frsize 1104460315 blocks 3b0e00 bfree 2f5d6c bavail 2c5d79
> ret 1 gle 0
> sectpclust 1 bytpersect 1104460315 freeclust 1 totalclust 1
> sectpclust 1 bytpersect 41d4ba1b freeclust 1 totalclust 1

Thanks, the attached patch should fix your problem. 

Please apply as before and test.

Rein.
-------------- next part --------------
--- wine/dlls/ntdll/file.c	2004-12-02 09:23:47.000000000 +0100
+++ mywine/dlls/ntdll/file.c	2005-01-01 13:21:24.000000000 +0100
@@ -1302,8 +1302,11 @@ NTSTATUS WINAPI NtQueryVolumeInformation
         else
         {
             FILE_FS_SIZE_INFORMATION *info = buffer;
-            struct statvfs stvfs;
-
+#ifndef HAVE_FSTATFS
+            struct statvfs stfs;
+#else
+            struct statfs stfs;
+#endif
             if (fstat( fd, &st ) < 0)
             {
                 io->u.Status = FILE_GetNtStatus();
@@ -1314,13 +1317,20 @@ NTSTATUS WINAPI NtQueryVolumeInformation
                 io->u.Status = STATUS_INVALID_DEVICE_REQUEST;
                 break;
             }
-            if (fstatvfs( fd, &stvfs ) < 0) io->u.Status = FILE_GetNtStatus();
+#ifndef HAVE_FSTATFS
+            if (fstatvfs( fd, &stfs ) < 0) io->u.Status = FILE_GetNtStatus();
             else
             {
-                info->TotalAllocationUnits.QuadPart = stvfs.f_blocks;
-                info->AvailableAllocationUnits.QuadPart = stvfs.f_bavail;
+                info->BytesPerSector = stfs.f_frsize;
+#else
+            if (fstatfs( fd, &stfs ) < 0) io->u.Status = FILE_GetNtStatus();
+            else
+            {
+                info->BytesPerSector = stfs.f_bsize;
+#endif
+                info->TotalAllocationUnits.QuadPart = stfs.f_blocks;
+                info->AvailableAllocationUnits.QuadPart = stfs.f_bavail;
                 info->SectorsPerAllocationUnit = 1;
-                info->BytesPerSector = stvfs.f_frsize;
                 io->Information = sizeof(*info);
                 io->u.Status = STATUS_SUCCESS;
             }


More information about the wine-users mailing list