From 86db1b70e9ba2845327fff99392baaac6cd61efd Mon Sep 17 00:00:00 2001 From: Andrea Bonel Date: Sat, 17 Sep 2022 10:55:25 -0300 Subject: [PATCH] Fix location for default cookie path --- src/rpc/request.cpp | 3 +-- src/util/system.cpp | 25 +++++++++++++++++++++++++ src/util/system.h | 1 + 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/rpc/request.cpp b/src/rpc/request.cpp index 5cfe6b5b35..f8edadac92 100644 --- a/src/rpc/request.cpp +++ b/src/rpc/request.cpp @@ -134,8 +134,7 @@ static fs::path GetMainchainAuthCookieFile() if (gArgs.GetChainName() == "liquidv1") { cookie_file = ".cookie"; } - std::string path = gArgs.GetArg("-mainchainrpccookiefile", cookie_file); - return AbsPathForConfigVal(fs::path(path)); + return fsbridge::AbsPathJoin(GetMainchainDefaultDataDir(), gArgs.GetArg("-mainchainrpccookiefile", cookie_file)); } bool GetMainchainAuthCookie(std::string *cookie_out) diff --git a/src/util/system.cpp b/src/util/system.cpp index f1c8753c28..74c5f966e7 100644 --- a/src/util/system.cpp +++ b/src/util/system.cpp @@ -827,6 +827,31 @@ fs::path GetDefaultDataDir() } #endif +fs::path GetMainchainDefaultDataDir() +{ + // Windows: C:\Users\Username\AppData\Roaming\Bitcoin + // macOS: ~/Library/Application Support/Bitcoin + // Unix-like: ~/.bitcoin +#ifdef WIN32 + // Windows + return GetSpecialFolderPath(CSIDL_APPDATA) / "Bitcoin"; +#else + fs::path pathRet; + char* pszHome = getenv("HOME"); + if (pszHome == nullptr || strlen(pszHome) == 0) + pathRet = fs::path("/"); + else + pathRet = fs::path(pszHome); +#ifdef MAC_OSX + // macOS + return pathRet / "Library/Application Support/Bitcoin"; +#else + // Unix-like + return pathRet / ".bitcoin"; +#endif +#endif +} + bool CheckDataDirOption() { std::string datadir = gArgs.GetArg("-datadir", ""); diff --git a/src/util/system.h b/src/util/system.h index 5be6e67b10..15e874e5db 100644 --- a/src/util/system.h +++ b/src/util/system.h @@ -90,6 +90,7 @@ void ReleaseDirectoryLocks(); bool TryCreateDirectories(const fs::path& p); fs::path GetDefaultDataDir(); +fs::path GetMainchainDefaultDataDir(); // Return true if -datadir option points to a valid directory or is not specified. bool CheckDataDirOption(); fs::path GetConfigFile(const std::string& confPath);