#include <boost/filesystem/fstream.hpp>
#include <boost/interprocess/sync/file_lock.hpp>
+#if defined(BITCOIN_NEED_QT_PLUGINS) && !defined(_BITCOIN_QT_PLUGINS_INCLUDED)
+#define _BITCOIN_QT_PLUGINS_INCLUDED
+#define __INSURE__
+#include <QtPlugin>
+Q_IMPORT_PLUGIN(qcncodecs)
+Q_IMPORT_PLUGIN(qjpcodecs)
+Q_IMPORT_PLUGIN(qtwcodecs)
+Q_IMPORT_PLUGIN(qkrcodecs)
+#endif
+
using namespace std;
using namespace boost;
void ExitTimeout(void* parg)
{
-#ifdef __WXMSW__
+#ifdef WIN32
Sleep(5000);
ExitProcess(0);
#endif
{
static CCriticalSection cs_Shutdown;
static bool fTaken;
- bool fFirstThread;
- CRITICAL_BLOCK(cs_Shutdown)
+ bool fFirstThread = false;
+ TRY_CRITICAL_BLOCK(cs_Shutdown)
{
fFirstThread = !fTaken;
fTaken = true;
{
fShutdown = true;
nTransactionsUpdated++;
- DBFlush(false);
+ DBFlush(false, false);
StopNode();
- DBFlush(true);
+ DBFlush(true, true);
boost::filesystem::remove(GetPidFile());
UnregisterWallet(pwalletMain);
delete pwalletMain;
// Disable confusing "helpful" text message on abort, ctrl-c
_set_abort_behavior(0, _WRITE_ABORT_MSG | _CALL_REPORTFAULT);
#endif
-#ifndef __WXMSW__
+#ifndef WIN32
umask(077);
#endif
-#ifndef __WXMSW__
+#ifndef WIN32
// Clean shutdown on SIGTERM
struct sigaction sa;
sa.sa_handler = HandleSIGTERM;
#ifdef GUI
" -server \t\t " + _("Accept command line and JSON-RPC commands\n") +
#endif
-#ifndef __WXMSW__
+#ifndef WIN32
" -daemon \t\t " + _("Run in the background as a daemon and accept commands\n") +
#endif
" -testnet \t\t " + _("Use the test network\n") +
fDebug = GetBoolArg("-debug");
fAllowDNS = GetBoolArg("-dns");
-#ifndef __WXMSW__
+#ifndef WIN32
fDaemon = GetBoolArg("-daemon");
#else
fDaemon = false;
}
#endif
-#ifndef __WXMSW__
+#ifndef WIN32
if (fDaemon)
{
// Daemonize
strErrors += _("Error loading wallet.dat: Wallet corrupted \n");
else if (nLoadWalletRet == DB_TOO_NEW)
strErrors += _("Error loading wallet.dat: Wallet requires newer version of Bitcoin \n");
+ else if (nLoadWalletRet == DB_NEED_REWRITE)
+ {
+ strErrors += _("Wallet needed to be rewritten: restart Bitcoin to complete \n");
+ wxMessageBox(strErrors, "Bitcoin", wxOK | wxICON_ERROR);
+ return false;
+ }
else
strErrors += _("Error loading wallet.dat \n");
}