Alexandre Julliard : kernel32: Revert change that slipped in commit db24d3af9a6e56c3036ba0a3e5d62dae4f2676d3 by mistake .

Alexandre Julliard julliard at winehq.org
Sat Dec 8 13:43:38 CST 2007


Module: wine
Branch: master
Commit: 6a3dd1ecf9571da6fd22a8bcb5b8f571e22481be
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=6a3dd1ecf9571da6fd22a8bcb5b8f571e22481be

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Sat Dec  8 19:49:52 2007 +0100

kernel32: Revert change that slipped in commit db24d3af9a6e56c3036ba0a3e5d62dae4f2676d3 by mistake.

---

 dlls/kernel32/volume.c |  114 ++++++++++++++++++++----------------------------
 1 files changed, 47 insertions(+), 67 deletions(-)

diff --git a/dlls/kernel32/volume.c b/dlls/kernel32/volume.c
index 655fda1..7f07f56 100644
--- a/dlls/kernel32/volume.c
+++ b/dlls/kernel32/volume.c
@@ -58,14 +58,11 @@ enum fs_type
 {
     FS_ERROR,    /* error accessing the device */
     FS_UNKNOWN,  /* unknown file system */
-    FS_PLACEHOLDER,  /* Wine placeholder for drive device */
     FS_FAT1216,
     FS_FAT32,
     FS_ISO9660
 };
 
-static const char wine_placeholder[] = "Wine device placeholder";
-
 static const WCHAR drive_types[][8] =
 {
     { 0 }, /* DRIVE_UNKNOWN */
@@ -164,52 +161,6 @@ static BOOL open_device_root( LPCWSTR root, HANDLE *handle )
     return TRUE;
 }
 
-/* get the label by reading it from a file at the root of the filesystem */
-static void get_filesystem_label( const WCHAR *device, WCHAR *label, DWORD len )
-{
-    HANDLE handle;
-    WCHAR labelW[] = {'A',':','\\','.','w','i','n','d','o','w','s','-','l','a','b','e','l',0};
-
-    labelW[0] = device[4];
-    handle = CreateFileW( labelW, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,
-                          OPEN_EXISTING, 0, 0 );
-    if (handle != INVALID_HANDLE_VALUE)
-    {
-        char buffer[256], *p;
-        DWORD size;
-
-        if (!ReadFile( handle, buffer, sizeof(buffer)-1, &size, NULL )) size = 0;
-        CloseHandle( handle );
-        p = buffer + size;
-        while (p > buffer && (p[-1] == ' ' || p[-1] == '\r' || p[-1] == '\n')) p--;
-        *p = 0;
-        if (!MultiByteToWideChar( CP_UNIXCP, 0, buffer, -1, label, len ))
-            label[len-1] = 0;
-    }
-    else label[0] = 0;
-}
-
-/* get the serial number by reading it from a file at the root of the filesystem */
-static DWORD get_filesystem_serial( const WCHAR *device )
-{
-    HANDLE handle;
-    WCHAR serialW[] = {'A',':','\\','.','w','i','n','d','o','w','s','-','s','e','r','i','a','l',0};
-
-    serialW[0] = device[4];
-    handle = CreateFileW( serialW, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,
-                          OPEN_EXISTING, 0, 0 );
-    if (handle != INVALID_HANDLE_VALUE)
-    {
-        char buffer[32];
-        DWORD size;
-
-        if (!ReadFile( handle, buffer, sizeof(buffer)-1, &size, NULL )) size = 0;
-        CloseHandle( handle );
-        buffer[size] = 0;
-        return strtoul( buffer, NULL, 16 );
-    }
-    else return 0;
-}
 
 /* fetch the type of a drive from the registry */
 static UINT get_registry_drive_type( const WCHAR *root )
@@ -305,15 +256,10 @@ static enum fs_type VOLUME_ReadFATSuperblock( HANDLE handle, BYTE *buff )
 
     /* try a fixed disk, with a FAT partition */
     if (SetFilePointer( handle, 0, NULL, FILE_BEGIN ) != 0 ||
-        !ReadFile( handle, buff, SUPERBLOCK_SIZE, &size, NULL ))
+        !ReadFile( handle, buff, SUPERBLOCK_SIZE, &size, NULL ) ||
+        size != SUPERBLOCK_SIZE)
         return FS_ERROR;
 
-    if (size >= sizeof(wine_placeholder)-1 &&
-        !memcmp( buff, wine_placeholder, sizeof(wine_placeholder)-1 ))
-        return FS_PLACEHOLDER;
-
-    if (size != SUPERBLOCK_SIZE) return FS_ERROR;
-
     /* FIXME: do really all FAT have their name beginning with
      * "FAT" ? (At least FAT12, FAT16 and FAT32 have :)
      */
@@ -386,7 +332,7 @@ static enum fs_type VOLUME_ReadCDSuperblock( HANDLE handle, BYTE *buff )
 /**************************************************************************
  *                              VOLUME_GetSuperblockLabel
  */
-static void VOLUME_GetSuperblockLabel( const WCHAR *device, enum fs_type type, const BYTE *superblock,
+static void VOLUME_GetSuperblockLabel( enum fs_type type, const BYTE *superblock,
                                        WCHAR *label, DWORD len )
 {
     const BYTE *label_ptr = NULL;
@@ -398,9 +344,6 @@ static void VOLUME_GetSuperblockLabel( const WCHAR *device, enum fs_type type, c
     case FS_UNKNOWN:
         label_len = 0;
         break;
-    case FS_PLACEHOLDER:
-        get_filesystem_label( device, label, len );
-        break;
     case FS_FAT1216:
         label_ptr = superblock + 0x2b;
         label_len = 11;
@@ -441,15 +384,13 @@ static void VOLUME_GetSuperblockLabel( const WCHAR *device, enum fs_type type, c
 /**************************************************************************
  *                              VOLUME_GetSuperblockSerial
  */
-static DWORD VOLUME_GetSuperblockSerial( const WCHAR *device, enum fs_type type, const BYTE *superblock )
+static DWORD VOLUME_GetSuperblockSerial( enum fs_type type, const BYTE *superblock )
 {
     switch(type)
     {
     case FS_ERROR:
     case FS_UNKNOWN:
         break;
-    case FS_PLACEHOLDER:
-        return get_filesystem_serial( device );
     case FS_FAT1216:
         return GETLONG( superblock, 0x27 );
     case FS_FAT32:
@@ -578,8 +519,8 @@ BOOL WINAPI GetVolumeInformationW( LPCWSTR root, LPWSTR label, DWORD label_len,
         TRACE( "%s: found fs type %d\n", debugstr_w(device), type );
         if (type == FS_ERROR) return FALSE;
 
-        if (label && label_len) VOLUME_GetSuperblockLabel( device, type, superblock, label, label_len );
-        if (serial) *serial = VOLUME_GetSuperblockSerial( device, type, superblock );
+        if (label && label_len) VOLUME_GetSuperblockLabel( type, superblock, label, label_len );
+        if (serial) *serial = VOLUME_GetSuperblockSerial( type, superblock );
         goto fill_fs_info;
     }
     else TRACE( "cannot open device %s: err %d\n", debugstr_w(device), GetLastError() );
@@ -603,8 +544,47 @@ BOOL WINAPI GetVolumeInformationW( LPCWSTR root, LPWSTR label, DWORD label_len,
         break;
     }
 
-    if (label && label_len) get_filesystem_label( device, label, label_len );
-    if (serial) *serial = get_filesystem_serial( device );
+    if (label && label_len)
+    {
+        WCHAR labelW[] = {'A',':','\\','.','w','i','n','d','o','w','s','-','l','a','b','e','l',0};
+
+        labelW[0] = device[4];
+        handle = CreateFileW( labelW, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,
+                              OPEN_EXISTING, 0, 0 );
+        if (handle != INVALID_HANDLE_VALUE)
+        {
+            char buffer[256], *p;
+            DWORD size;
+
+            if (!ReadFile( handle, buffer, sizeof(buffer)-1, &size, NULL )) size = 0;
+            CloseHandle( handle );
+            p = buffer + size;
+            while (p > buffer && (p[-1] == ' ' || p[-1] == '\r' || p[-1] == '\n')) p--;
+            *p = 0;
+            if (!MultiByteToWideChar( CP_UNIXCP, 0, buffer, -1, label, label_len ))
+                label[label_len-1] = 0;
+        }
+        else label[0] = 0;
+    }
+    if (serial)
+    {
+        WCHAR serialW[] = {'A',':','\\','.','w','i','n','d','o','w','s','-','s','e','r','i','a','l',0};
+
+        serialW[0] = device[4];
+        handle = CreateFileW( serialW, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,
+                              OPEN_EXISTING, 0, 0 );
+        if (handle != INVALID_HANDLE_VALUE)
+        {
+            char buffer[32];
+            DWORD size;
+
+            if (!ReadFile( handle, buffer, sizeof(buffer)-1, &size, NULL )) size = 0;
+            CloseHandle( handle );
+            buffer[size] = 0;
+            *serial = strtoul( buffer, NULL, 16 );
+        }
+        else *serial = 0;
+    }
 
 fill_fs_info:  /* now fill in the information that depends on the file system type */
 




More information about the wine-cvs mailing list