diff options
author | Alexander Blair <snipa@jagtech.io> | 2020-07-19 03:41:55 -0700 |
---|---|---|
committer | Alexander Blair <snipa@jagtech.io> | 2020-07-19 03:41:55 -0700 |
commit | 3434cc24a2035b4e7983f9044142376929a1e693 (patch) | |
tree | 19a247bf4ed0448b21a5139237be33747012bb8d /src | |
parent | Merge pull request #6565 (diff) | |
parent | daemon: complain if data dir resides on FAT32 volume (Windows) (diff) | |
download | monero-3434cc24a2035b4e7983f9044142376929a1e693.tar.xz |
Merge pull request #6578
a6803231e daemon: complain if data dir resides on FAT32 volume (Windows) (xiphon)
Diffstat (limited to 'src')
-rw-r--r-- | src/daemon/main.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/daemon/main.cpp b/src/daemon/main.cpp index 3213ec42d..dfc35470e 100644 --- a/src/daemon/main.cpp +++ b/src/daemon/main.cpp @@ -107,6 +107,20 @@ uint16_t parse_public_rpc_port(const po::variables_map &vm) return rpc_port; } +#ifdef WIN32 +bool isFat32(const wchar_t* root_path) +{ + std::vector<wchar_t> fs(MAX_PATH + 1); + if (!::GetVolumeInformationW(root_path, nullptr, 0, nullptr, 0, nullptr, &fs[0], MAX_PATH)) + { + MERROR("Failed to get '" << root_path << "' filesystem name. Error code: " << ::GetLastError()); + return false; + } + + return wcscmp(L"FAT32", &fs[0]) == 0; +} +#endif + int main(int argc, char const * argv[]) { try { @@ -233,6 +247,13 @@ int main(int argc, char const * argv[]) boost::filesystem::path data_dir = boost::filesystem::absolute( command_line::get_arg(vm, cryptonote::arg_data_dir)); +#ifdef WIN32 + if (isFat32(data_dir.root_name().c_str())) + { + MERROR("Data directory resides on FAT32 volume that has 4GiB file size limit, blockchain might get corrupted."); + } +#endif + // FIXME: not sure on windows implementation default, needs further review //bf::path relative_path_base = daemonizer::get_relative_path_base(vm); bf::path relative_path_base = data_dir; |