Make GetDataDir return absolute paths

This commit is contained in:
Pieter Wuille 2012-04-22 14:35:22 +02:00
parent 457661f640
commit f4203de302
4 changed files with 12 additions and 7 deletions

View File

@ -150,11 +150,12 @@ bool AppInit2(int argc, char* argv[])
// If Qt is used, parameters/bitcoin.conf are parsed in qt/bitcoin.cpp's main() // If Qt is used, parameters/bitcoin.conf are parsed in qt/bitcoin.cpp's main()
#if !defined(QT_GUI) #if !defined(QT_GUI)
ParseParameters(argc, argv); ParseParameters(argc, argv);
if (!ReadConfigFile(mapArgs, mapMultiArgs)) if (!boost::filesystem::is_directory(GetDataDir(false)))
{ {
fprintf(stderr, "Error: Specified directory does not exist\n"); fprintf(stderr, "Error: Specified directory does not exist\n");
Shutdown(NULL); Shutdown(NULL);
} }
ReadConfigFile(mapArgs, mapMultiArgs);
#endif #endif
if (mapArgs.count("-?") || mapArgs.count("--help")) if (mapArgs.count("-?") || mapArgs.count("--help"))

View File

@ -168,11 +168,12 @@ int main(int argc, char *argv[])
ParseParameters(argc, argv); ParseParameters(argc, argv);
// ... then bitcoin.conf: // ... then bitcoin.conf:
if (!ReadConfigFile(mapArgs, mapMultiArgs)) if (!boost::filesystem::is_directory(GetDataDir(false)))
{ {
fprintf(stderr, "Error: Specified directory does not exist\n"); fprintf(stderr, "Error: Specified directory does not exist\n");
return 1; return 1;
} }
ReadConfigFile(mapArgs, mapMultiArgs);
// Application identification (must be set before OptionsModel is initialized, // Application identification (must be set before OptionsModel is initialized,
// as it is used to locate QSettings) // as it is used to locate QSettings)

View File

@ -870,7 +870,11 @@ const boost::filesystem::path &GetDataDir(bool fNetSpecific)
LOCK(csPathCached); LOCK(csPathCached);
if (mapArgs.count("-datadir")) { if (mapArgs.count("-datadir")) {
path = mapArgs["-datadir"]; path = fs::system_complete(mapArgs["-datadir"]);
if (!fs::is_directory(path)) {
path = "";
return path;
}
} else { } else {
path = GetDefaultDataDir(); path = GetDefaultDataDir();
} }
@ -892,7 +896,7 @@ boost::filesystem::path GetConfigFile()
return pathConfigFile; return pathConfigFile;
} }
bool ReadConfigFile(map<string, string>& mapSettingsRet, void ReadConfigFile(map<string, string>& mapSettingsRet,
map<string, vector<string> >& mapMultiSettingsRet) map<string, vector<string> >& mapMultiSettingsRet)
{ {
namespace fs = boost::filesystem; namespace fs = boost::filesystem;
@ -900,7 +904,7 @@ bool ReadConfigFile(map<string, string>& mapSettingsRet,
fs::ifstream streamConfig(GetConfigFile()); fs::ifstream streamConfig(GetConfigFile());
if (!streamConfig.good()) if (!streamConfig.good())
return true; // No bitcoin.conf file is OK return; // No bitcoin.conf file is OK
set<string> setOptions; set<string> setOptions;
setOptions.insert("*"); setOptions.insert("*");
@ -917,7 +921,6 @@ bool ReadConfigFile(map<string, string>& mapSettingsRet,
} }
mapMultiSettingsRet[strKey].push_back(it->value[0]); mapMultiSettingsRet[strKey].push_back(it->value[0]);
} }
return true;
} }
boost::filesystem::path GetPidFile() boost::filesystem::path GetPidFile()

View File

@ -162,7 +162,7 @@ const boost::filesystem::path &GetDataDir(bool fNetSpecific = true);
boost::filesystem::path GetConfigFile(); boost::filesystem::path GetConfigFile();
boost::filesystem::path GetPidFile(); boost::filesystem::path GetPidFile();
void CreatePidFile(const boost::filesystem::path &path, pid_t pid); void CreatePidFile(const boost::filesystem::path &path, pid_t pid);
bool ReadConfigFile(std::map<std::string, std::string>& mapSettingsRet, std::map<std::string, std::vector<std::string> >& mapMultiSettingsRet); void ReadConfigFile(std::map<std::string, std::string>& mapSettingsRet, std::map<std::string, std::vector<std::string> >& mapMultiSettingsRet);
bool GetStartOnSystemStartup(); bool GetStartOnSystemStartup();
bool SetStartOnSystemStartup(bool fAutoStart); bool SetStartOnSystemStartup(bool fAutoStart);
void ShrinkDebugFile(); void ShrinkDebugFile();