diff options
author | xiphon <xiphon@protonmail.com> | 2020-05-21 15:21:09 +0000 |
---|---|---|
committer | xiphon <xiphon@protonmail.com> | 2020-05-21 15:23:44 +0000 |
commit | a6803231e69b0c561a37d8bdb701f46d89d47aec (patch) | |
tree | 0490f47a39e211fcf4af14b0db4dcc406e79528b /src | |
parent | Merge pull request #6510 (diff) | |
download | monero-a6803231e69b0c561a37d8bdb701f46d89d47aec.tar.xz |
daemon: complain if data dir resides on FAT32 volume (Windows)
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 3e25636d8..cd515a5dd 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; |