aboutsummaryrefslogtreecommitdiff
path: root/src/util/fs_helpers.cpp
diff options
context:
space:
mode:
authorMarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>2023-07-14 11:26:45 +0200
committerMarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>2023-10-26 10:25:22 +0200
commitfa0afe740843c308f6287b923f1f4d758cf2a3f6 (patch)
treef232dd0a3cdf4685532a0a6df5165fe8053d1f25 /src/util/fs_helpers.cpp
parent64879f4c03b9d933898c0bb83d9b7e9c20729e51 (diff)
downloadbitcoin-fa0afe740843c308f6287b923f1f4d758cf2a3f6.tar.xz
refactor: Return enum in LockDirectory
This makes it easier to add more Error cases in the future. Also, add missing util namespace.
Diffstat (limited to 'src/util/fs_helpers.cpp')
-rw-r--r--src/util/fs_helpers.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/util/fs_helpers.cpp b/src/util/fs_helpers.cpp
index 2a9eb3502e..a5408dd0d7 100644
--- a/src/util/fs_helpers.cpp
+++ b/src/util/fs_helpers.cpp
@@ -53,15 +53,15 @@ static GlobalMutex cs_dir_locks;
* is called.
*/
static std::map<std::string, std::unique_ptr<fsbridge::FileLock>> dir_locks GUARDED_BY(cs_dir_locks);
-
-bool LockDirectory(const fs::path& directory, const fs::path& lockfile_name, bool probe_only)
+namespace util {
+LockResult LockDirectory(const fs::path& directory, const fs::path& lockfile_name, bool probe_only)
{
LOCK(cs_dir_locks);
fs::path pathLockFile = directory / lockfile_name;
// If a lock for this directory already exists in the map, don't try to re-lock it
if (dir_locks.count(fs::PathToString(pathLockFile))) {
- return true;
+ return LockResult::Success;
}
// Create empty lock file if it doesn't exist.
@@ -69,15 +69,16 @@ bool LockDirectory(const fs::path& directory, const fs::path& lockfile_name, boo
if (file) fclose(file);
auto lock = std::make_unique<fsbridge::FileLock>(pathLockFile);
if (!lock->TryLock()) {
- return error("Error while attempting to lock directory %s: %s", fs::PathToString(directory), lock->GetReason());
+ error("Error while attempting to lock directory %s: %s", fs::PathToString(directory), lock->GetReason());
+ return LockResult::ErrorLock;
}
if (!probe_only) {
// Lock successful and we're not just probing, put it into the map
dir_locks.emplace(fs::PathToString(pathLockFile), std::move(lock));
}
- return true;
+ return LockResult::Success;
}
-
+} // namespace util
void UnlockDirectory(const fs::path& directory, const fs::path& lockfile_name)
{
LOCK(cs_dir_locks);