summaryrefslogtreecommitdiff
path: root/src/os/windows
diff options
context:
space:
mode:
authorNiels Martin Hansen <nielsm@indvikleren.dk>2021-02-21 21:05:43 +0100
committerNiels Martin Hansen <nielsm@indvikleren.dk>2021-02-23 11:25:39 +0100
commitcc465efa674a5394aa0635a0760f7a938e0260bf (patch)
tree9ee65d1c9bc6ebb42378c6e083a45bdbac801068 /src/os/windows
parentb427ddce887617f17aefdbe1f22ca1e00d013c3d (diff)
downloadopenttd-cc465efa674a5394aa0635a0760f7a938e0260bf.tar.xz
Change: [Win32] Use more modern way of getting free disk space
Diffstat (limited to 'src/os/windows')
-rw-r--r--src/os/windows/win32.cpp13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/os/windows/win32.cpp b/src/os/windows/win32.cpp
index 27fec1ac0..cfe7d42d9 100644
--- a/src/os/windows/win32.cpp
+++ b/src/os/windows/win32.cpp
@@ -244,15 +244,10 @@ bool FiosIsHiddenFile(const struct dirent *ent)
bool FiosGetDiskFreeSpace(const char *path, uint64 *tot)
{
UINT sem = SetErrorMode(SEM_FAILCRITICALERRORS); // disable 'no-disk' message box
- bool retval = false;
- wchar_t root[4];
- DWORD spc, bps, nfc, tnc;
-
- _snwprintf(root, lengthof(root), L"%c:" PATHSEP, path[0]);
- if (tot != nullptr && GetDiskFreeSpace(root, &spc, &bps, &nfc, &tnc)) {
- *tot = ((spc * bps) * (uint64)nfc);
- retval = true;
- }
+
+ ULARGE_INTEGER bytes_free;
+ bool retval = GetDiskFreeSpaceEx(OTTD2FS(path), &bytes_free, nullptr, nullptr);
+ if (retval) *tot = bytes_free.QuadPart;
SetErrorMode(sem); // reset previous setting
return retval;