Ignore:
Timestamp:
Dec 30, 2001, 12:04:19 PM (24 years ago)
Author:
sandervl
Message:

GetVolumeInformation: report FAT32 as FAT32, use original volume name to determine maximum file name length

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/disk.cpp

    r7645 r7704  
    1 /* $Id: disk.cpp,v 1.26 2001-12-17 16:23:19 sandervl Exp $ */
     1/* $Id: disk.cpp,v 1.27 2001-12-30 11:04:19 sandervl Exp $ */
    22
    33/*
     
    273273{
    274274   CHAR   tmpstring[256];
     275   CHAR   szOrgFileSystemName[256] = "";
    275276   ULONG  drive;
    276277   BOOL   rc;
     
    304305        }
    305306    }
    306     if(lpFileSystemNameBuffer || lpMaximumComponentLength || lpFileSystemFlags) {
     307    if(lpFileSystemNameBuffer || lpMaximumComponentLength || lpFileSystemFlags)
     308    {
    307309        if(!lpFileSystemNameBuffer) {
    308310            lpFileSystemNameBuffer = tmpstring;
     
    310312        }
    311313        rc = OSLibDosQueryVolumeFS(drive, lpFileSystemNameBuffer, nFileSystemNameSize);
     314        //save original file system name
     315        if(rc == ERROR_SUCCESS) strcpy(szOrgFileSystemName, lpFileSystemNameBuffer);
     316
    312317        if(lpFileSystemNameBuffer)
    313318        {
     
    319324            else
    320325            if(!strcmp(lpFileSystemNameBuffer, "CDFS") ||
    321                !strcmp(lpFileSystemNameBuffer, "UDF"))
     326               !strcmp(lpFileSystemNameBuffer, "UDF") ||
     327               !strcmp(lpFileSystemNameBuffer, "FAT32") ||
     328               !strcmp(lpFileSystemNameBuffer, "NTFS")) //in case somebody ever writes one
    322329            {
    323330                //do nothing
     
    331338    }
    332339    if(lpMaximumComponentLength) {
    333         if(!strcmp(lpFileSystemNameBuffer, "FAT16")) {
    334             *lpMaximumComponentLength = 12;
    335         }
    336         else    *lpMaximumComponentLength = 255; //TODO: Always correct? (CDFS?)
     340        if(!strcmp(szOrgFileSystemName, "FAT16") || !strcmp(szOrgFileSystemName, "FAT")) {
     341             *lpMaximumComponentLength = 12;  //8.3
     342        }
     343        else *lpMaximumComponentLength = 255; //TODO: Always correct? (CDFS?)
    337344    }
    338345    if(lpFileSystemFlags)
    339346    {
    340347        if(strcmp(lpFileSystemNameBuffer, "FAT16")) {
    341             *lpFileSystemFlags = FS_CASE_IS_PRESERVED;
     348             *lpFileSystemFlags = FS_CASE_IS_PRESERVED;
    342349        }
    343350        else
    344351        if(!strcmp(lpFileSystemNameBuffer, "CDFS")) {
    345             *lpFileSystemFlags = FS_CASE_SENSITIVE; //NT4 returns this
     352             *lpFileSystemFlags = FS_CASE_SENSITIVE; //NT4 returns this
    346353        }
    347354        else
    348355        if(!strcmp(lpFileSystemNameBuffer, "UDF")) {//TODO: correct?
    349             *lpFileSystemFlags = FS_CASE_SENSITIVE | FS_UNICODE_STORED_ON_DISK;
    350         }
    351         else    *lpFileSystemFlags = 0;
     356             *lpFileSystemFlags = FS_CASE_SENSITIVE | FS_UNICODE_STORED_ON_DISK;
     357        }
     358        else *lpFileSystemFlags = 0;
    352359
    353360        dprintf2(("File system flags: %x", lpFileSystemFlags));
Note: See TracChangeset for help on using the changeset viewer.