Index: src/common/FileSupport.cpp =================================================================== diff -u -N -rd2b121c78f510b5384b8ef0ca80afbfd7f77fef7 -re912e0a6b456c2eed24bec7303a908d3ff0aa59a --- src/common/FileSupport.cpp (.../FileSupport.cpp) (revision d2b121c78f510b5384b8ef0ca80afbfd7f77fef7) +++ src/common/FileSupport.cpp (.../FileSupport.cpp) (revision e912e0a6b456c2eed24bec7303a908d3ff0aa59a) @@ -85,61 +85,23 @@ // disk support routines -bool GetDynamicFreeSpace(LPCTSTR lpszPath, __int64* pFree, __int64* pTotal) +bool GetDynamicFreeSpace(LPCTSTR lpszPath, ull_t* pFree, ull_t* pTotal) { - typedef BOOL(__stdcall *PGETDISKFREESPACEEX)(LPCTSTR lpDirectoryName, PULARGE_INTEGER lpFreeBytesAvailable, PULARGE_INTEGER lpTotalNumberOfBytes, PULARGE_INTEGER lpTotalNumberOfFreeBytes); - ULARGE_INTEGER ui64Available, ui64Total; - PGETDISKFREESPACEEX pGetDiskFreeSpaceEx; - HMODULE hModule = GetModuleHandle(_T("kernel32.dll")); - if(!hModule) - return false; - pGetDiskFreeSpaceEx = (PGETDISKFREESPACEEX)GetProcAddress(hModule, "GetDiskFreeSpaceExA"); - if (pGetDiskFreeSpaceEx) + if(!GetDiskFreeSpaceEx(lpszPath, &ui64Available, &ui64Total, NULL)) { - if (!pGetDiskFreeSpaceEx(lpszPath, &ui64Available, &ui64Total, NULL)) - { - if (pFree) - *pFree=-1; - if (pTotal) - *pTotal=-1; - return false; - } - else - { - if (pFree) - *pFree=ui64Available.QuadPart; - if (pTotal) - *pTotal=ui64Total.QuadPart; - return true; - } + if(pFree) + *pFree=-1; + if(pTotal) + *pTotal=-1; + return false; } - else + else { - // support for win95 (not osr2) - // set the root for path and correct '\\' at the end - TCHAR szDisk[_MAX_DRIVE]; - _tsplitpath(lpszPath, szDisk, NULL, NULL, NULL); - if (_tcslen(szDisk) != 0 && szDisk[_tcslen(szDisk)-1] != _T('\\')) - _tcscat(szDisk, _T("\\")); - - // std func - DWORD dwSectPerClust, dwBytesPerSect, dwFreeClusters, dwTotalClusters; - if (!GetDiskFreeSpace(szDisk, &dwSectPerClust, &dwBytesPerSect, &dwFreeClusters, &dwTotalClusters)) - { - if (pFree) - *pFree=-1; - if (pTotal) - *pTotal=-1; - return false; - } - else - { - if (pFree) - *pFree=((__int64)dwFreeClusters*(__int64)dwSectPerClust)*(__int64)dwBytesPerSect; - if (pTotal) - *pTotal=((__int64)dwTotalClusters*(__int64)dwSectPerClust)*(__int64)dwBytesPerSect; - return true; - } + if(pFree) + *pFree=ui64Available.QuadPart; + if(pTotal) + *pTotal=ui64Total.QuadPart; + return true; } }