|
|
|
@ -439,8 +439,9 @@ bool AppInit2()
|
|
|
|
|
FILE* file = fopen(pathLockFile.string().c_str(), "a"); // empty lock file; created if it doesn't exist.
|
|
|
|
|
if (file) fclose(file);
|
|
|
|
|
static boost::interprocess::file_lock lock(pathLockFile.string().c_str());
|
|
|
|
|
const char* pszDataDir = GetDataDir().string().c_str();
|
|
|
|
|
if (!lock.try_lock())
|
|
|
|
|
return InitError(strprintf(_("Cannot obtain a lock on data directory %s. Bitcoin is probably already running."), GetDataDir().string().c_str()));
|
|
|
|
|
return InitError(strprintf(_("Cannot obtain a lock on data directory %s. Bitcoin is probably already running."), pszDataDir));
|
|
|
|
|
|
|
|
|
|
#if !defined(WIN32) && !defined(QT_GUI)
|
|
|
|
|
if (fDaemon)
|
|
|
|
@ -472,7 +473,7 @@ bool AppInit2()
|
|
|
|
|
if (!fLogTimestamps)
|
|
|
|
|
printf("Startup time: %s\n", DateTimeStrFormat("%x %H:%M:%S", GetTime()).c_str());
|
|
|
|
|
printf("Default data directory %s\n", GetDefaultDataDir().string().c_str());
|
|
|
|
|
printf("Used data directory %s\n", GetDataDir().string().c_str());
|
|
|
|
|
printf("Used data directory %s\n", pszDataDir);
|
|
|
|
|
std::ostringstream strErrors;
|
|
|
|
|
|
|
|
|
|
if (fDaemon)
|
|
|
|
@ -588,6 +589,14 @@ bool AppInit2()
|
|
|
|
|
|
|
|
|
|
// ********************************************************* Step 6: load blockchain
|
|
|
|
|
|
|
|
|
|
if (!bitdb.Open(GetDataDir()))
|
|
|
|
|
{
|
|
|
|
|
string msg = strprintf(_("Error initializing database environment %s!"
|
|
|
|
|
" To recover, BACKUP THAT DIRECTORY, then remove"
|
|
|
|
|
" everything from it except for wallet.dat."), pszDataDir);
|
|
|
|
|
return InitError(msg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (GetBoolArg("-loadblockindextest"))
|
|
|
|
|
{
|
|
|
|
|
CTxDB txdb("r");
|
|
|
|
@ -600,7 +609,7 @@ bool AppInit2()
|
|
|
|
|
printf("Loading block index...\n");
|
|
|
|
|
nStart = GetTimeMillis();
|
|
|
|
|
if (!LoadBlockIndex())
|
|
|
|
|
strErrors << _("Error loading blkindex.dat") << "\n";
|
|
|
|
|
return InitError(_("Error loading blkindex.dat"));
|
|
|
|
|
|
|
|
|
|
// as LoadBlockIndex can take several minutes, it's possible the user
|
|
|
|
|
// requested to kill bitcoin-qt during the last operation. If so, exit.
|
|
|
|
|