Add AbsPathForConfigVal to consolidate datadir prefixing for path args
Most commandline/config args are interpreted as relative to datadir if not passed absolute. Consolidate the logic for this normalization.
This commit is contained in:
parent
a1e13055c2
commit
54604600c3
3 changed files with 20 additions and 16 deletions
|
@ -72,9 +72,7 @@ static fs::path GetAuthCookieFile(bool temp=false)
|
||||||
if (temp) {
|
if (temp) {
|
||||||
arg += ".tmp";
|
arg += ".tmp";
|
||||||
}
|
}
|
||||||
fs::path path(arg);
|
return AbsPathForConfigVal(fs::path(arg));
|
||||||
if (!path.is_complete()) path = GetDataDir() / path;
|
|
||||||
return path;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GenerateAuthCookie(std::string *cookie_out)
|
bool GenerateAuthCookie(std::string *cookie_out)
|
||||||
|
|
22
src/util.cpp
22
src/util.cpp
|
@ -4,6 +4,7 @@
|
||||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
#include <util.h>
|
#include <util.h>
|
||||||
|
#include <fs.h>
|
||||||
|
|
||||||
#include <chainparamsbase.h>
|
#include <chainparamsbase.h>
|
||||||
#include <random.h>
|
#include <random.h>
|
||||||
|
@ -188,11 +189,7 @@ static void DebugPrintInit()
|
||||||
fs::path GetDebugLogPath()
|
fs::path GetDebugLogPath()
|
||||||
{
|
{
|
||||||
fs::path logfile(gArgs.GetArg("-debuglogfile", DEFAULT_DEBUGLOGFILE));
|
fs::path logfile(gArgs.GetArg("-debuglogfile", DEFAULT_DEBUGLOGFILE));
|
||||||
if (logfile.is_absolute()) {
|
return AbsPathForConfigVal(logfile);
|
||||||
return logfile;
|
|
||||||
} else {
|
|
||||||
return GetDataDir() / logfile;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenDebugLog()
|
bool OpenDebugLog()
|
||||||
|
@ -624,11 +621,7 @@ void ClearDatadirCache()
|
||||||
|
|
||||||
fs::path GetConfigFile(const std::string& confPath)
|
fs::path GetConfigFile(const std::string& confPath)
|
||||||
{
|
{
|
||||||
fs::path pathConfigFile(confPath);
|
return AbsPathForConfigVal(fs::path(confPath), false);
|
||||||
if (!pathConfigFile.is_complete())
|
|
||||||
pathConfigFile = GetDataDir(false) / pathConfigFile;
|
|
||||||
|
|
||||||
return pathConfigFile;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ArgsManager::ReadConfigFile(const std::string& confPath)
|
void ArgsManager::ReadConfigFile(const std::string& confPath)
|
||||||
|
@ -663,9 +656,7 @@ void ArgsManager::ReadConfigFile(const std::string& confPath)
|
||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
fs::path GetPidFile()
|
fs::path GetPidFile()
|
||||||
{
|
{
|
||||||
fs::path pathPidFile(gArgs.GetArg("-pid", BITCOIN_PID_FILENAME));
|
return AbsPathForConfigVal(fs::path(gArgs.GetArg("-pid", BITCOIN_PID_FILENAME)));
|
||||||
if (!pathPidFile.is_complete()) pathPidFile = GetDataDir() / pathPidFile;
|
|
||||||
return pathPidFile;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreatePidFile(const fs::path &path, pid_t pid)
|
void CreatePidFile(const fs::path &path, pid_t pid)
|
||||||
|
@ -936,3 +927,8 @@ int64_t GetStartupTime()
|
||||||
{
|
{
|
||||||
return nStartupTime;
|
return nStartupTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fs::path AbsPathForConfigVal(const fs::path& path, bool net_specific)
|
||||||
|
{
|
||||||
|
return fs::absolute(path, GetDataDir(net_specific));
|
||||||
|
}
|
||||||
|
|
10
src/util.h
10
src/util.h
|
@ -191,6 +191,16 @@ bool OpenDebugLog();
|
||||||
void ShrinkDebugFile();
|
void ShrinkDebugFile();
|
||||||
void runCommand(const std::string& strCommand);
|
void runCommand(const std::string& strCommand);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Most paths passed as configuration arguments are treated as relative to
|
||||||
|
* the datadir if they are not absolute.
|
||||||
|
*
|
||||||
|
* @param path The path to be conditionally prefixed with datadir.
|
||||||
|
* @param net_specific Forwarded to GetDataDir().
|
||||||
|
* @return The normalized path.
|
||||||
|
*/
|
||||||
|
fs::path AbsPathForConfigVal(const fs::path& path, bool net_specific = true);
|
||||||
|
|
||||||
inline bool IsSwitchChar(char c)
|
inline bool IsSwitchChar(char c)
|
||||||
{
|
{
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
|
Loading…
Reference in a new issue