aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexander Blair <snipa@jagtech.io>2020-07-19 03:41:55 -0700
committerAlexander Blair <snipa@jagtech.io>2020-07-19 03:41:55 -0700
commit3434cc24a2035b4e7983f9044142376929a1e693 (patch)
tree19a247bf4ed0448b21a5139237be33747012bb8d /src
parentMerge pull request #6565 (diff)
parentdaemon: complain if data dir resides on FAT32 volume (Windows) (diff)
downloadmonero-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.cpp21
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;