From 1d1ea9f0962a331c21a3029a0302e5906a396f56 Mon Sep 17 00:00:00 2001 From: Marko Bencun Date: Wed, 22 Feb 2017 18:10:00 +0900 Subject: [PATCH] Turn TryCreateDirectory() into TryCreateDirectories() Use case: TryCreateDirectory(GetDataDir() / "blocks" / "index") would fail if the blocks directory was not explicitly created before. The line that did so was in a weird location and could be removed as a result. --- src/dbwrapper.cpp | 2 +- src/init.cpp | 2 -- src/qt/intro.cpp | 2 +- src/util.cpp | 8 ++++---- src/util.h | 2 +- src/wallet/db.cpp | 2 +- 6 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/dbwrapper.cpp b/src/dbwrapper.cpp index 3d2098c059..4ad8a2c1ac 100644 --- a/src/dbwrapper.cpp +++ b/src/dbwrapper.cpp @@ -108,7 +108,7 @@ CDBWrapper::CDBWrapper(const fs::path& path, size_t nCacheSize, bool fMemory, bo leveldb::Status result = leveldb::DestroyDB(path.string(), options); dbwrapper_private::HandleError(result); } - TryCreateDirectory(path); + TryCreateDirectories(path); LogPrintf("Opening LevelDB in %s\n", path.string()); } leveldb::Status status = leveldb::DB::Open(options, path.string(), &pdb); diff --git a/src/init.cpp b/src/init.cpp index 3bbdb16c3b..4fcdd48d9a 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1410,8 +1410,6 @@ bool AppInitMain(boost::thread_group& threadGroup, CScheduler& scheduler) fReindex = GetBoolArg("-reindex", false); bool fReindexChainState = GetBoolArg("-reindex-chainstate", false); - fs::create_directories(GetDataDir() / "blocks"); - // cache size calculations int64_t nTotalCache = (GetArg("-dbcache", nDefaultDbCache) << 20); nTotalCache = std::max(nTotalCache, nMinDbCache << 20); // total cache cannot be less than nMinDbCache diff --git a/src/qt/intro.cpp b/src/qt/intro.cpp index 2460a59109..1e0d472b6a 100644 --- a/src/qt/intro.cpp +++ b/src/qt/intro.cpp @@ -214,7 +214,7 @@ bool Intro::pickDataDirectory() } dataDir = intro.getDataDirectory(); try { - TryCreateDirectory(GUIUtil::qstringToBoostPath(dataDir)); + TryCreateDirectories(GUIUtil::qstringToBoostPath(dataDir)); break; } catch (const fs::filesystem_error&) { QMessageBox::critical(0, tr(PACKAGE_NAME), diff --git a/src/util.cpp b/src/util.cpp index 653a4f072a..1ad4fa262c 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -653,21 +653,21 @@ bool RenameOver(fs::path src, fs::path dest) } /** - * Ignores exceptions thrown by Boost's create_directory if the requested directory exists. + * Ignores exceptions thrown by Boost's create_directories if the requested directory exists. * Specifically handles case where path p exists, but it wasn't possible for the user to * write to the parent directory. */ -bool TryCreateDirectory(const fs::path& p) +bool TryCreateDirectories(const fs::path& p) { try { - return fs::create_directory(p); + return fs::create_directories(p); } catch (const fs::filesystem_error&) { if (!fs::exists(p) || !fs::is_directory(p)) throw; } - // create_directory didn't create the directory, it had to have existed already + // create_directories didn't create the directory, it had to have existed already return false; } diff --git a/src/util.h b/src/util.h index 229478d835..18a238554b 100644 --- a/src/util.h +++ b/src/util.h @@ -153,7 +153,7 @@ bool TruncateFile(FILE *file, unsigned int length); int RaiseFileDescriptorLimit(int nMinFD); void AllocateFileRange(FILE *file, unsigned int offset, unsigned int length); bool RenameOver(fs::path src, fs::path dest); -bool TryCreateDirectory(const fs::path& p); +bool TryCreateDirectories(const fs::path& p); fs::path GetDefaultDataDir(); const fs::path &GetDataDir(bool fNetSpecific = true); void ClearDatadirCache(); diff --git a/src/wallet/db.cpp b/src/wallet/db.cpp index 25f6bdd9d9..4573be8b23 100644 --- a/src/wallet/db.cpp +++ b/src/wallet/db.cpp @@ -75,7 +75,7 @@ bool CDBEnv::Open(const fs::path& pathIn) strPath = pathIn.string(); fs::path pathLogDir = pathIn / "database"; - TryCreateDirectory(pathLogDir); + TryCreateDirectories(pathLogDir); fs::path pathErrorFile = pathIn / "db.log"; LogPrintf("CDBEnv::Open: LogDir=%s ErrorFile=%s\n", pathLogDir.string(), pathErrorFile.string());