aboutsummaryrefslogtreecommitdiff
path: root/zenserver/config.cpp
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2021-12-09 17:01:57 +0100
committerPer Larsson <[email protected]>2021-12-09 17:01:57 +0100
commit20f3c16b0012cfb8ce7bf9b6dd06a2720b6885c6 (patch)
treefbb0f274840a12c32d93c7e342c0427f2617a651 /zenserver/config.cpp
parentDisabled cache tracker. (diff)
parentReturn status_code as ErrorCode from jupiter api if not successful (diff)
downloadzen-20f3c16b0012cfb8ce7bf9b6dd06a2720b6885c6.tar.xz
zen-20f3c16b0012cfb8ce7bf9b6dd06a2720b6885c6.zip
Merged main.
Diffstat (limited to 'zenserver/config.cpp')
-rw-r--r--zenserver/config.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/zenserver/config.cpp b/zenserver/config.cpp
index 8d9339e92..23450c370 100644
--- a/zenserver/config.cpp
+++ b/zenserver/config.cpp
@@ -45,6 +45,39 @@ PickDefaultStateDirectory()
return myDocumentsDir;
}
+ int CandidateDriveLetterOffset = -1;
+ ULARGE_INTEGER CandidateDriveSize;
+ CandidateDriveSize.QuadPart = 0L;
+ DWORD LogicalDrives = GetLogicalDrives();
+ char CandidateDriveName[] = "A:\\";
+ for (int DriveLetterOffset = 0; DriveLetterOffset < 32; ++DriveLetterOffset)
+ {
+ if ((LogicalDrives & (1 << DriveLetterOffset)) != 0)
+ {
+ CandidateDriveName[0] = (char)('A' + DriveLetterOffset);
+ if (GetDriveTypeA(CandidateDriveName) == DRIVE_FIXED)
+ {
+ ULARGE_INTEGER FreeBytesAvailableToCaller;
+ ULARGE_INTEGER TotalNumberOfBytes;
+ if (0 != GetDiskFreeSpaceExA(CandidateDriveName, &FreeBytesAvailableToCaller, &TotalNumberOfBytes, nullptr))
+ {
+ if ((FreeBytesAvailableToCaller.QuadPart > 0) && (TotalNumberOfBytes.QuadPart > CandidateDriveSize.QuadPart))
+ {
+ CandidateDriveLetterOffset = DriveLetterOffset;
+ CandidateDriveSize = TotalNumberOfBytes;
+ }
+ }
+ }
+ }
+ }
+
+ if (CandidateDriveLetterOffset >= 0)
+ {
+ char RootZenFolderName[] = "A:\\zen";
+ RootZenFolderName[0] = (char)('A' + CandidateDriveLetterOffset);
+ return RootZenFolderName;
+ }
+
return L"";
}