aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2012-04-15 22:10:54 +0200
committerPieter Wuille <pieter.wuille@gmail.com>2012-04-17 20:00:55 +0200
commited6d0b5f852dc5f1c9407abecb5a9c6a7e42b4b2 (patch)
tree763b840f2619af642469d3894b88b682134f4425
parentb97d54355e8239273b50c54dbedfde16ed82fd73 (diff)
Remove headers.h
-rw-r--r--bitcoin-qt.pro1
-rw-r--r--src/addrman.h1
-rw-r--r--src/allocators.h3
-rw-r--r--src/base58.h1
-rw-r--r--src/bignum.h2
-rw-r--r--src/bitcoinrpc.cpp5
-rw-r--r--src/checkpoints.cpp4
-rw-r--r--src/checkpoints.h1
-rw-r--r--src/compat.h23
-rw-r--r--src/crypter.cpp2
-rw-r--r--src/db.cpp9
-rw-r--r--src/db.h30
-rw-r--r--src/headers.h91
-rw-r--r--src/init.cpp149
-rw-r--r--src/init.h2
-rw-r--r--src/irc.cpp2
-rw-r--r--src/keystore.cpp3
-rw-r--r--src/main.cpp2
-rw-r--r--src/main.h3
-rw-r--r--src/net.cpp2
-rw-r--r--src/netbase.h21
-rw-r--r--src/noui.cpp1
-rw-r--r--src/qt/addresstablemodel.cpp2
-rw-r--r--src/qt/bitcoin.cpp1
-rw-r--r--src/qt/clientmodel.cpp2
-rw-r--r--src/qt/guiutil.cpp2
-rw-r--r--src/qt/optionsmodel.cpp2
-rw-r--r--src/qt/qtipcserver.cpp2
-rw-r--r--src/qt/transactiondesc.cpp4
-rw-r--r--src/qt/transactionrecord.cpp2
-rw-r--r--src/qt/transactiontablemodel.cpp2
-rw-r--r--src/qt/walletmodel.cpp2
-rw-r--r--src/rpcdump.cpp2
-rw-r--r--src/script.cpp8
-rw-r--r--src/strlcpy.h4
-rw-r--r--src/util.cpp171
-rw-r--r--src/util.h11
-rw-r--r--src/wallet.cpp6
-rw-r--r--src/wallet.h35
39 files changed, 288 insertions, 328 deletions
diff --git a/bitcoin-qt.pro b/bitcoin-qt.pro
index 14ee947c2f..f79216e8dc 100644
--- a/bitcoin-qt.pro
+++ b/bitcoin-qt.pro
@@ -119,7 +119,6 @@ HEADERS += src/qt/bitcoingui.h \
src/db.h \
src/script.h \
src/init.h \
- src/headers.h \
src/irc.h \
src/mruset.h \
src/json/json_spirit_writer_template.h \
diff --git a/src/addrman.h b/src/addrman.h
index 7652df66ae..160f8f8ff3 100644
--- a/src/addrman.h
+++ b/src/addrman.h
@@ -6,7 +6,6 @@
#include "netbase.h"
#include "protocol.h"
-#include "util.h"
#include <map>
diff --git a/src/allocators.h b/src/allocators.h
index 85d9cfbbb8..cdea66dd38 100644
--- a/src/allocators.h
+++ b/src/allocators.h
@@ -8,6 +8,9 @@
#include <string>
#ifdef WIN32
+#ifdef _WIN32_WINNT
+#undef _WIN32_WINNT
+#endif
#define _WIN32_WINNT 0x0501
#define WIN32_LEAN_AND_MEAN 1
#ifndef NOMINMAX
diff --git a/src/base58.h b/src/base58.h
index 90ce34b05b..24b7f3ab1b 100644
--- a/src/base58.h
+++ b/src/base58.h
@@ -19,6 +19,7 @@
#include <vector>
#include "bignum.h"
#include "key.h"
+#include "util.h"
static const char* pszBase58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
diff --git a/src/bignum.h b/src/bignum.h
index daf5f6883a..cea8e1e357 100644
--- a/src/bignum.h
+++ b/src/bignum.h
@@ -9,7 +9,7 @@
#include <vector>
#include <openssl/bn.h>
-#include "util.h"
+#include "util.h" // for uint64
/** Errors thrown by the bignum class */
class bignum_error : public std::runtime_error
diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp
index 9fafee320b..9294f9357a 100644
--- a/src/bitcoinrpc.cpp
+++ b/src/bitcoinrpc.cpp
@@ -3,10 +3,13 @@
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
-#include "headers.h"
+#include "main.h"
+#include "wallet.h"
#include "db.h"
#include "net.h"
#include "init.h"
+#include "ui_interface.h"
+
#undef printf
#include <boost/asio.hpp>
#include <boost/filesystem.hpp>
diff --git a/src/checkpoints.cpp b/src/checkpoints.cpp
index f5ce053870..cf56fa0695 100644
--- a/src/checkpoints.cpp
+++ b/src/checkpoints.cpp
@@ -5,9 +5,11 @@
#include <boost/assign/list_of.hpp> // for 'map_list_of()'
#include <boost/foreach.hpp>
-#include "headers.h"
#include "checkpoints.h"
+#include "main.h"
+#include "uint256.h"
+
namespace Checkpoints
{
typedef std::map<int, uint256> MapCheckpoints;
diff --git a/src/checkpoints.h b/src/checkpoints.h
index 38902ac0a1..5d3228f3fc 100644
--- a/src/checkpoints.h
+++ b/src/checkpoints.h
@@ -5,7 +5,6 @@
#define BITCOIN_CHECKPOINT_H
#include <map>
-#include "util.h"
class uint256;
class CBlockIndex;
diff --git a/src/compat.h b/src/compat.h
index 882610031a..db340445b2 100644
--- a/src/compat.h
+++ b/src/compat.h
@@ -5,6 +5,28 @@
#ifndef _BITCOIN_COMPAT_H
#define _BITCOIN_COMPAT_H 1
+#ifdef WIN32
+#define _WIN32_WINNT 0x0501
+#define WIN32_LEAN_AND_MEAN 1
+#ifndef NOMINMAX
+#define NOMINMAX
+#endif
+#include <winsock2.h>
+#include <mswsock.h>
+#include <ws2tcpip.h>
+#else
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/fcntl.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+#include <net/if.h>
+#include <ifaddrs.h>
+#endif
+#ifdef BSD
+#include <netinet/in.h>
+#endif
+
typedef u_int SOCKET;
#ifdef WIN32
#define MSG_NOSIGNAL 0
@@ -39,4 +61,5 @@ inline int myclosesocket(SOCKET& hSocket)
}
#define closesocket(s) myclosesocket(s)
+
#endif
diff --git a/src/crypter.cpp b/src/crypter.cpp
index 2501305edc..5713faf120 100644
--- a/src/crypter.cpp
+++ b/src/crypter.cpp
@@ -6,13 +6,11 @@
#include <openssl/evp.h>
#include <vector>
#include <string>
-#include "headers.h"
#ifdef WIN32
#include <windows.h>
#endif
#include "crypter.h"
-#include "main.h"
#include "util.h"
bool CCrypter::SetKeyFromPassphrase(const SecureString& strKeyData, const std::vector<unsigned char>& chSalt, const unsigned int nRounds, const unsigned int nDerivationMethod)
diff --git a/src/db.cpp b/src/db.cpp
index 2d136914c5..60dba3b353 100644
--- a/src/db.cpp
+++ b/src/db.cpp
@@ -3,13 +3,18 @@
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
-#include "headers.h"
#include "db.h"
-#include "net.h"
+#include "util.h"
+#include "main.h"
+#include "wallet.h"
#include <boost/version.hpp>
#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>
+#ifndef WIN32
+#include "sys/stat.h"
+#endif
+
using namespace std;
using namespace boost;
diff --git a/src/db.h b/src/db.h
index 47fa40245e..9ebcf0d4b2 100644
--- a/src/db.h
+++ b/src/db.h
@@ -6,6 +6,8 @@
#define BITCOIN_DB_H
#include "key.h"
+#include "main.h"
+#include "wallet.h"
#include <map>
#include <string>
@@ -313,34 +315,6 @@ public:
bool LoadAddresses();
-/** A key pool entry */
-class CKeyPool
-{
-public:
- int64 nTime;
- std::vector<unsigned char> vchPubKey;
-
- CKeyPool()
- {
- nTime = GetTime();
- }
-
- CKeyPool(const std::vector<unsigned char>& vchPubKeyIn)
- {
- nTime = GetTime();
- vchPubKey = vchPubKeyIn;
- }
-
- IMPLEMENT_SERIALIZE
- (
- if (!(nType & SER_GETHASH))
- READWRITE(nVersion);
- READWRITE(nTime);
- READWRITE(vchPubKey);
- )
-};
-
-
/** Error statuses for the wallet database */
enum DBErrors
diff --git a/src/headers.h b/src/headers.h
deleted file mode 100644
index ceee028977..0000000000
--- a/src/headers.h
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright (c) 2009-2010 Satoshi Nakamoto
-// Copyright (c) 2009-2012 The Bitcoin developers
-// Distributed under the MIT/X11 software license, see the accompanying
-// file license.txt or http://www.opensource.org/licenses/mit-license.php.
-
-#ifdef _MSC_VER
-#pragma warning(disable:4786)
-#pragma warning(disable:4804)
-#pragma warning(disable:4805)
-#pragma warning(disable:4717)
-#endif
-#ifdef _WIN32_WINNT
-#undef _WIN32_WINNT
-#endif
-#define _WIN32_WINNT 0x0501
-#ifdef _WIN32_IE
-#undef _WIN32_IE
-#endif
-#define _WIN32_IE 0x0400
-#define WIN32_LEAN_AND_MEAN 1
-#ifndef NOMINMAX
-#define NOMINMAX
-#endif
-// Include boost/foreach here as it defines __STDC_LIMIT_MACROS on some systems.
-#include <boost/foreach.hpp>
-
-#if (defined(__unix__) || defined(unix)) && !defined(USG)
-#include <sys/param.h> // to get BSD define
-#endif
-#ifdef MAC_OSX
-#ifndef BSD
-#define BSD 1
-#endif
-#endif
-#include <openssl/buffer.h>
-#include <openssl/ecdsa.h>
-#include <openssl/evp.h>
-#include <openssl/rand.h>
-#include <openssl/sha.h>
-#include <openssl/ripemd.h>
-#include <db_cxx.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <math.h>
-#include <float.h>
-#include <assert.h>
-#include <iostream>
-#include <sstream>
-#include <string>
-#include <vector>
-#include <list>
-#include <deque>
-#include <map>
-
-#ifdef WIN32
-#include <windows.h>
-#include <winsock2.h>
-#include <mswsock.h>
-#include <shlobj.h>
-#include <shlwapi.h>
-#include <io.h>
-#include <process.h>
-#include <malloc.h>
-#else
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <unistd.h>
-#include <errno.h>
-#include <net/if.h>
-#include <ifaddrs.h>
-#include <fcntl.h>
-#include <signal.h>
-#endif
-#ifdef BSD
-#include <netinet/in.h>
-#endif
-
-
-#include "serialize.h"
-#include "uint256.h"
-#include "util.h"
-#include "bignum.h"
-#include "base58.h"
-#include "main.h"
-#include "wallet.h"
-#include "ui_interface.h"
diff --git a/src/init.cpp b/src/init.cpp
index 2be0027a5b..2f03f24eb0 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -2,19 +2,20 @@
// Copyright (c) 2009-2012 The Bitcoin developers
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
-#include "headers.h"
#include "db.h"
#include "bitcoinrpc.h"
#include "net.h"
#include "init.h"
#include "strlcpy.h"
+#include "util.h"
+#include "ui_interface.h"
#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>
#include <boost/filesystem/convenience.hpp>
#include <boost/interprocess/sync/file_lock.hpp>
-#ifdef WIN32
-#define strncasecmp strnicmp
+#ifndef WIN32
+#include <signal.h>
#endif
using namespace std;
@@ -583,145 +584,3 @@ bool AppInit2(int argc, char* argv[])
return true;
}
-#ifdef WIN32
-boost::filesystem::path StartupShortcutPath()
-{
- return MyGetSpecialFolderPath(CSIDL_STARTUP, true) / "Bitcoin.lnk";
-}
-
-bool GetStartOnSystemStartup()
-{
- return filesystem::exists(StartupShortcutPath());
-}
-
-bool SetStartOnSystemStartup(bool fAutoStart)
-{
- // If the shortcut exists already, remove it for updating
- boost::filesystem::remove(StartupShortcutPath());
-
- if (fAutoStart)
- {
- CoInitialize(NULL);
-
- // Get a pointer to the IShellLink interface.
- IShellLink* psl = NULL;
- HRESULT hres = CoCreateInstance(CLSID_ShellLink, NULL,
- CLSCTX_INPROC_SERVER, IID_IShellLink,
- reinterpret_cast<void**>(&psl));
-
- if (SUCCEEDED(hres))
- {
- // Get the current executable path
- TCHAR pszExePath[MAX_PATH];
- GetModuleFileName(NULL, pszExePath, sizeof(pszExePath));
-
- TCHAR pszArgs[5] = TEXT("-min");
-
- // Set the path to the shortcut target
- psl->SetPath(pszExePath);
- PathRemoveFileSpec(pszExePath);
- psl->SetWorkingDirectory(pszExePath);
- psl->SetShowCmd(SW_SHOWMINNOACTIVE);
- psl->SetArguments(pszArgs);
-
- // Query IShellLink for the IPersistFile interface for
- // saving the shortcut in persistent storage.
- IPersistFile* ppf = NULL;
- hres = psl->QueryInterface(IID_IPersistFile,
- reinterpret_cast<void**>(&ppf));
- if (SUCCEEDED(hres))
- {
- WCHAR pwsz[MAX_PATH];
- // Ensure that the string is ANSI.
- MultiByteToWideChar(CP_ACP, 0, StartupShortcutPath().string().c_str(), -1, pwsz, MAX_PATH);
- // Save the link by calling IPersistFile::Save.
- hres = ppf->Save(pwsz, TRUE);
- ppf->Release();
- psl->Release();
- CoUninitialize();
- return true;
- }
- psl->Release();
- }
- CoUninitialize();
- return false;
- }
- return true;
-}
-
-#elif defined(LINUX)
-
-// Follow the Desktop Application Autostart Spec:
-// http://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html
-
-boost::filesystem::path GetAutostartDir()
-{
- namespace fs = boost::filesystem;
-
- char* pszConfigHome = getenv("XDG_CONFIG_HOME");
- if (pszConfigHome) return fs::path(pszConfigHome) / "autostart";
- char* pszHome = getenv("HOME");
- if (pszHome) return fs::path(pszHome) / ".config" / "autostart";
- return fs::path();
-}
-
-boost::filesystem::path GetAutostartFilePath()
-{
- return GetAutostartDir() / "bitcoin.desktop";
-}
-
-bool GetStartOnSystemStartup()
-{
- boost::filesystem::ifstream optionFile(GetAutostartFilePath());
- if (!optionFile.good())
- return false;
- // Scan through file for "Hidden=true":
- string line;
- while (!optionFile.eof())
- {
- getline(optionFile, line);
- if (line.find("Hidden") != string::npos &&
- line.find("true") != string::npos)
- return false;
- }
- optionFile.close();
-
- return true;
-}
-
-bool SetStartOnSystemStartup(bool fAutoStart)
-{
- if (!fAutoStart)
- boost::filesystem::remove(GetAutostartFilePath());
- else
- {
- char pszExePath[MAX_PATH+1];
- memset(pszExePath, 0, sizeof(pszExePath));
- if (readlink("/proc/self/exe", pszExePath, sizeof(pszExePath)-1) == -1)
- return false;
-
- boost::filesystem::create_directories(GetAutostartDir());
-
- boost::filesystem::ofstream optionFile(GetAutostartFilePath(), ios_base::out|ios_base::trunc);
- if (!optionFile.good())
- return false;
- // Write a bitcoin.desktop file to the autostart directory:
- optionFile << "[Desktop Entry]\n";
- optionFile << "Type=Application\n";
- optionFile << "Name=Bitcoin\n";
- optionFile << "Exec=" << pszExePath << " -min\n";
- optionFile << "Terminal=false\n";
- optionFile << "Hidden=false\n";
- optionFile.close();
- }
- return true;
-}
-#else
-
-// TODO: OSX startup stuff; see:
-// http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPSystemStartup/Articles/CustomLogin.html
-
-bool GetStartOnSystemStartup() { return false; }
-bool SetStartOnSystemStartup(bool fAutoStart) { return false; }
-
-#endif
diff --git a/src/init.h b/src/init.h
index 0d60e7549f..e3971c85e3 100644
--- a/src/init.h
+++ b/src/init.h
@@ -5,6 +5,8 @@
#ifndef BITCOIN_INIT_H
#define BITCOIN_INIT_H
+#include "wallet.h"
+
extern CWallet* pwalletMain;
void Shutdown(void* parg);
diff --git a/src/irc.cpp b/src/irc.cpp
index d535f59c4c..237497055d 100644
--- a/src/irc.cpp
+++ b/src/irc.cpp
@@ -3,10 +3,10 @@
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
-#include "headers.h"
#include "irc.h"
#include "net.h"
#include "strlcpy.h"
+#include "base58.h"
using namespace std;
using namespace boost;
diff --git a/src/keystore.cpp b/src/keystore.cpp
index 7b46f6b07a..664f0b1242 100644
--- a/src/keystore.cpp
+++ b/src/keystore.cpp
@@ -3,9 +3,8 @@
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
-#include "headers.h"
+#include "keystore.h"
#include "crypter.h"
-#include "db.h"
#include "script.h"
bool CKeyStore::GetPubKey(const CBitcoinAddress &address, std::vector<unsigned char> &vchPubKeyOut) const
diff --git a/src/main.cpp b/src/main.cpp
index 60b398c191..c2236d999f 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -2,11 +2,11 @@
// Copyright (c) 2009-2012 The Bitcoin developers
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
-#include "headers.h"
#include "checkpoints.h"
#include "db.h"
#include "net.h"
#include "init.h"
+#include "ui_interface.h"
#include <boost/algorithm/string/replace.hpp>
#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>
diff --git a/src/main.h b/src/main.h
index c48252fbc4..a67449007f 100644
--- a/src/main.h
+++ b/src/main.h
@@ -9,7 +9,6 @@
#include "net.h"
#include "key.h"
#include "script.h"
-#include "db.h"
#include "version.h"
#ifdef WIN32
@@ -35,8 +34,6 @@ static const unsigned int MAX_BLOCK_SIZE = 1000000;
static const unsigned int MAX_BLOCK_SIZE_GEN = MAX_BLOCK_SIZE/2;
static const int MAX_BLOCK_SIGOPS = MAX_BLOCK_SIZE/50;
static const int MAX_ORPHAN_TRANSACTIONS = MAX_BLOCK_SIZE/100;
-static const int64 COIN = 100000000;
-static const int64 CENT = 1000000;
static const int64 MIN_TX_FEE = 50000;
static const int64 MIN_RELAY_TX_FEE = 10000;
static const int64 MAX_MONEY = 21000000 * COIN;
diff --git a/src/net.cpp b/src/net.cpp
index 7d621ac594..38c0d3d582 100644
--- a/src/net.cpp
+++ b/src/net.cpp
@@ -3,13 +3,13 @@
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
-#include "headers.h"
#include "irc.h"
#include "db.h"
#include "net.h"
#include "init.h"
#include "strlcpy.h"
#include "addrman.h"
+#include "ui_interface.h"
#ifdef WIN32
#include <string.h>
diff --git a/src/netbase.h b/src/netbase.h
index 6a257cf9fa..00b6850b2a 100644
--- a/src/netbase.h
+++ b/src/netbase.h
@@ -7,27 +7,6 @@
#include <string>
#include <vector>
-#ifdef WIN32
-#define _WIN32_WINNT 0x0501
-#define WIN32_LEAN_AND_MEAN 1
-#ifndef NOMINMAX
-#define NOMINMAX
-#endif
-#include <winsock2.h>
-#include <mswsock.h>
-#include <ws2tcpip.h>
-#else
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <net/if.h>
-#include <ifaddrs.h>
-#endif
-#ifdef BSD
-#include <netinet/in.h>
-#endif
-
#include "serialize.h"
#include "compat.h"
diff --git a/src/noui.cpp b/src/noui.cpp
index 077e460a70..08a08b439a 100644
--- a/src/noui.cpp
+++ b/src/noui.cpp
@@ -5,7 +5,6 @@
#include "ui_interface.h"
#include <string>
-#include "headers.h"
#include "init.h"
int ThreadSafeMessageBox(const std::string& message, const std::string& caption, int style)
diff --git a/src/qt/addresstablemodel.cpp b/src/qt/addresstablemodel.cpp
index 0239a167d7..7b95f51c04 100644
--- a/src/qt/addresstablemodel.cpp
+++ b/src/qt/addresstablemodel.cpp
@@ -2,7 +2,7 @@
#include "guiutil.h"
#include "walletmodel.h"
-#include "headers.h"
+#include "wallet.h"
#include <QFont>
#include <QColor>
diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp
index 463b2cfa79..dfcd2af3fc 100644
--- a/src/qt/bitcoin.cpp
+++ b/src/qt/bitcoin.cpp
@@ -7,7 +7,6 @@
#include "optionsmodel.h"
#include "guiutil.h"
-#include "headers.h"
#include "init.h"
#include "qtipcserver.h"
diff --git a/src/qt/clientmodel.cpp b/src/qt/clientmodel.cpp
index 284bee0e8e..cb602ce327 100644
--- a/src/qt/clientmodel.cpp
+++ b/src/qt/clientmodel.cpp
@@ -4,7 +4,7 @@
#include "addresstablemodel.h"
#include "transactiontablemodel.h"
-#include "headers.h"
+#include "main.h"
#include <QDateTime>
diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp
index cb2473240e..f1e8a5f1bc 100644
--- a/src/qt/guiutil.cpp
+++ b/src/qt/guiutil.cpp
@@ -3,8 +3,6 @@
#include "walletmodel.h"
#include "bitcoinunits.h"
-#include "headers.h"
-
#include <QString>
#include <QDateTime>
#include <QDoubleValidator>
diff --git a/src/qt/optionsmodel.cpp b/src/qt/optionsmodel.cpp
index ed2225cbf5..736be7f708 100644
--- a/src/qt/optionsmodel.cpp
+++ b/src/qt/optionsmodel.cpp
@@ -2,8 +2,8 @@
#include "bitcoinunits.h"
#include <QSettings>
-#include "headers.h"
#include "init.h"
+#include "db.h"
OptionsModel::OptionsModel(QObject *parent) :
QAbstractListModel(parent)
diff --git a/src/qt/qtipcserver.cpp b/src/qt/qtipcserver.cpp
index 3c7889ca71..f7bccaaf02 100644
--- a/src/qt/qtipcserver.cpp
+++ b/src/qt/qtipcserver.cpp
@@ -7,7 +7,7 @@
#include <boost/tokenizer.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
-#include "headers.h"
+#include "util.h"
#include "qtipcserver.h"
using namespace boost::interprocess;
diff --git a/src/qt/transactiondesc.cpp b/src/qt/transactiondesc.cpp
index dd7dd61390..286cddf2a9 100644
--- a/src/qt/transactiondesc.cpp
+++ b/src/qt/transactiondesc.cpp
@@ -3,7 +3,9 @@
#include "guiutil.h"
#include "bitcoinunits.h"
-#include "headers.h"
+#include "main.h"
+#include "wallet.h"
+#include "db.h"
#include "ui_interface.h"
#include <QString>
diff --git a/src/qt/transactionrecord.cpp b/src/qt/transactionrecord.cpp
index 2f3b29cc97..32350eaa5a 100644
--- a/src/qt/transactionrecord.cpp
+++ b/src/qt/transactionrecord.cpp
@@ -1,6 +1,6 @@
#include "transactionrecord.h"
-#include "headers.h"
+#include "wallet.h"
/* Return positive answer if transaction should be shown in list.
*/
diff --git a/src/qt/transactiontablemodel.cpp b/src/qt/transactiontablemodel.cpp
index 41c9db1123..5f505f444e 100644
--- a/src/qt/transactiontablemodel.cpp
+++ b/src/qt/transactiontablemodel.cpp
@@ -8,7 +8,7 @@
#include "addresstablemodel.h"
#include "bitcoinunits.h"
-#include "headers.h"
+#include "wallet.h"
#include <QLocale>
#include <QList>
diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp
index 9c28a8abc8..8206394d2a 100644
--- a/src/qt/walletmodel.cpp
+++ b/src/qt/walletmodel.cpp
@@ -4,7 +4,7 @@
#include "addresstablemodel.h"
#include "transactiontablemodel.h"
-#include "headers.h"
+#include "wallet.h"
#include "db.h" // for BackupWallet
#include <QSet>
diff --git a/src/rpcdump.cpp b/src/rpcdump.cpp
index 5bb4789cd3..1bc87e9217 100644
--- a/src/rpcdump.cpp
+++ b/src/rpcdump.cpp
@@ -2,9 +2,9 @@
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
-#include "headers.h"
#include "init.h" // for pwalletMain
#include "bitcoinrpc.h"
+#include "ui_interface.h"
#include <boost/lexical_cast.hpp>
diff --git a/src/script.cpp b/src/script.cpp
index 21f101e1c5..ac1f0405a8 100644
--- a/src/script.cpp
+++ b/src/script.cpp
@@ -2,11 +2,17 @@
// Copyright (c) 2009-2012 The Bitcoin developers
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
-#include "headers.h"
+#include <boost/foreach.hpp>
using namespace std;
using namespace boost;
+#include "script.h"
+#include "keystore.h"
+#include "bignum.h"
+#include "key.h"
+#include "main.h"
+
bool CheckSig(vector<unsigned char> vchSig, vector<unsigned char> vchPubKey, CScript scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType);
diff --git a/src/strlcpy.h b/src/strlcpy.h
index d4d1908e7a..2cc786e953 100644
--- a/src/strlcpy.h
+++ b/src/strlcpy.h
@@ -15,6 +15,10 @@
*/
#ifndef BITCOIN_STRLCPY_H
#define BITCOIN_STRLCPY_H
+
+#include <stdlib.h>
+#include <string.h>
+
/*
* Copy src to string dst of size siz. At most siz-1 characters
* will be copied. Always NUL terminates (unless siz == 0).
diff --git a/src/util.cpp b/src/util.cpp
index c1e3c5a806..19005fc761 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -3,8 +3,9 @@
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
-#include "headers.h"
+#include "util.h"
#include "strlcpy.h"
+#include "version.h"
#include <boost/algorithm/string/join.hpp>
// Work around clang compilation problem in Boost 1.46:
@@ -24,6 +25,31 @@ namespace boost {
#include <boost/interprocess/sync/interprocess_mutex.hpp>
#include <boost/interprocess/sync/interprocess_recursive_mutex.hpp>
#include <boost/foreach.hpp>
+#include <openssl/crypto.h>
+#include <openssl/rand.h>
+
+#ifdef WIN32
+#ifdef _MSC_VER
+#pragma warning(disable:4786)
+#pragma warning(disable:4804)
+#pragma warning(disable:4805)
+#pragma warning(disable:4717)
+#endif
+#ifdef _WIN32_WINNT
+#undef _WIN32_WINNT
+#endif
+#define _WIN32_WINNT 0x0501
+#ifdef _WIN32_IE
+#undef _WIN32_IE
+#endif
+#define _WIN32_IE 0x0400
+#define WIN32_LEAN_AND_MEAN 1
+#ifndef NOMINMAX
+#define NOMINMAX
+#endif
+#include "shlobj.h"
+#include "shlwapi.h"
+#endif
using namespace std;
using namespace boost;
@@ -1064,6 +1090,149 @@ std::string FormatSubVersion(const std::string& name, int nClientVersion, const
return ss.str();
}
+#ifdef WIN32
+boost::filesystem::path static StartupShortcutPath()
+{
+ return MyGetSpecialFolderPath(CSIDL_STARTUP, true) / "Bitcoin.lnk";
+}
+
+bool GetStartOnSystemStartup()
+{
+ return filesystem::exists(StartupShortcutPath());
+}
+
+bool SetStartOnSystemStartup(bool fAutoStart)
+{
+ // If the shortcut exists already, remove it for updating
+ boost::filesystem::remove(StartupShortcutPath());
+
+ if (fAutoStart)
+ {
+ CoInitialize(NULL);
+
+ // Get a pointer to the IShellLink interface.
+ IShellLink* psl = NULL;
+ HRESULT hres = CoCreateInstance(CLSID_ShellLink, NULL,
+ CLSCTX_INPROC_SERVER, IID_IShellLink,
+ reinterpret_cast<void**>(&psl));
+
+ if (SUCCEEDED(hres))
+ {
+ // Get the current executable path
+ TCHAR pszExePath[MAX_PATH];
+ GetModuleFileName(NULL, pszExePath, sizeof(pszExePath));
+
+ TCHAR pszArgs[5] = TEXT("-min");
+
+ // Set the path to the shortcut target
+ psl->SetPath(pszExePath);
+ PathRemoveFileSpec(pszExePath);
+ psl->SetWorkingDirectory(pszExePath);
+ psl->SetShowCmd(SW_SHOWMINNOACTIVE);
+ psl->SetArguments(pszArgs);
+
+ // Query IShellLink for the IPersistFile interface for
+ // saving the shortcut in persistent storage.
+ IPersistFile* ppf = NULL;
+ hres = psl->QueryInterface(IID_IPersistFile,
+ reinterpret_cast<void**>(&ppf));
+ if (SUCCEEDED(hres))
+ {
+ WCHAR pwsz[MAX_PATH];
+ // Ensure that the string is ANSI.
+ MultiByteToWideChar(CP_ACP, 0, StartupShortcutPath().string().c_str(), -1, pwsz, MAX_PATH);
+ // Save the link by calling IPersistFile::Save.
+ hres = ppf->Save(pwsz, TRUE);
+ ppf->Release();
+ psl->Release();
+ CoUninitialize();
+ return true;
+ }
+ psl->Release();
+ }
+ CoUninitialize();
+ return false;
+ }
+ return true;
+}
+
+#elif defined(LINUX)
+
+// Follow the Desktop Application Autostart Spec:
+// http://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html
+
+boost::filesystem::path static GetAutostartDir()
+{
+ namespace fs = boost::filesystem;
+
+ char* pszConfigHome = getenv("XDG_CONFIG_HOME");
+ if (pszConfigHome) return fs::path(pszConfigHome) / "autostart";
+ char* pszHome = getenv("HOME");
+ if (pszHome) return fs::path(pszHome) / ".config" / "autostart";
+ return fs::path();
+}
+
+boost::filesystem::path static GetAutostartFilePath()
+{
+ return GetAutostartDir() / "bitcoin.desktop";
+}
+
+bool GetStartOnSystemStartup()
+{
+ boost::filesystem::ifstream optionFile(GetAutostartFilePath());
+ if (!optionFile.good())
+ return false;
+ // Scan through file for "Hidden=true":
+ string line;
+ while (!optionFile.eof())
+ {
+ getline(optionFile, line);
+ if (line.find("Hidden") != string::npos &&
+ line.find("true") != string::npos)
+ return false;
+ }
+ optionFile.close();
+
+ return true;
+}
+
+bool SetStartOnSystemStartup(bool fAutoStart)
+{
+ if (!fAutoStart)
+ boost::filesystem::remove(GetAutostartFilePath());
+ else
+ {
+ char pszExePath[MAX_PATH+1];
+ memset(pszExePath, 0, sizeof(pszExePath));
+ if (readlink("/proc/self/exe", pszExePath, sizeof(pszExePath)-1) == -1)
+ return false;
+
+ boost::filesystem::create_directories(GetAutostartDir());
+
+ boost::filesystem::ofstream optionFile(GetAutostartFilePath(), ios_base::out|ios_base::trunc);
+ if (!optionFile.good())
+ return false;
+ // Write a bitcoin.desktop file to the autostart directory:
+ optionFile << "[Desktop Entry]\n";
+ optionFile << "Type=Application\n";
+ optionFile << "Name=Bitcoin\n";
+ optionFile << "Exec=" << pszExePath << " -min\n";
+ optionFile << "Terminal=false\n";
+ optionFile << "Hidden=false\n";
+ optionFile.close();
+ }
+ return true;
+}
+#else
+
+// TODO: OSX startup stuff; see:
+// http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPSystemStartup/Articles/CustomLogin.html
+
+bool GetStartOnSystemStartup() { return false; }
+bool SetStartOnSystemStartup(bool fAutoStart) { return false; }
+
+#endif
+
#ifdef DEBUG_LOCKORDER
diff --git a/src/util.h b/src/util.h
index f6cb3caa1d..a4424771ce 100644
--- a/src/util.h
+++ b/src/util.h
@@ -31,11 +31,15 @@ typedef int pid_t; /* define for windows compatiblity */
#include <openssl/sha.h>
#include <openssl/ripemd.h>
-#include "netbase.h"
+#include "netbase.h" // for AddTimeData
+#include "ui_interface.h"
typedef long long int64;
typedef unsigned long long uint64;
+static const int64 COIN = 100000000;
+static const int64 CENT = 1000000;
+
#define loop for (;;)
#define BEGIN(a) ((char*)&(a))
#define END(a) ((char*)&((&(a))[1]))
@@ -160,9 +164,8 @@ boost::filesystem::path GetConfigFile();
boost::filesystem::path GetPidFile();
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);
-#ifdef WIN32
-boost::filesystem::path MyGetSpecialFolderPath(int nFolder, bool fCreate);
-#endif
+bool GetStartOnSystemStartup();
+bool SetStartOnSystemStartup(bool fAutoStart);
void ShrinkDebugFile();
int GetRandInt(int nMax);
uint64 GetRand(uint64 nMax);
diff --git a/src/wallet.cpp b/src/wallet.cpp
index 9f531082a9..6a2bf022bb 100644
--- a/src/wallet.cpp
+++ b/src/wallet.cpp
@@ -3,7 +3,6 @@
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
-#include "headers.h"
#include "db.h"
#include "crypter.h"
@@ -137,6 +136,11 @@ bool CWallet::ChangeWalletPassphrase(const SecureString& strOldWalletPassphrase,
return false;
}
+void CWallet::SetBestChain(const CBlockLocator& loc)
+{
+ CWalletDB walletdb(strWalletFile);
+ walletdb.WriteBestBlock(loc);
+}
// This class implements an addrIncoming entry that causes pre-0.4
// clients to crash on startup if reading a private-key-encrypted wallet.
diff --git a/src/wallet.h b/src/wallet.h
index b1ee40ab90..3d9387ff82 100644
--- a/src/wallet.h
+++ b/src/wallet.h
@@ -5,6 +5,7 @@
#ifndef BITCOIN_WALLET_H
#define BITCOIN_WALLET_H
+#include "main.h"
#include "bignum.h"
#include "key.h"
#include "keystore.h"
@@ -25,6 +26,34 @@ enum WalletFeature
FEATURE_LATEST = 60000
};
+
+/** A key pool entry */
+class CKeyPool
+{
+public:
+ int64 nTime;
+ std::vector<unsigned char> vchPubKey;
+
+ CKeyPool()
+ {
+ nTime = GetTime();
+ }
+
+ CKeyPool(const std::vector<unsigned char>& vchPubKeyIn)
+ {
+ nTime = GetTime();
+ vchPubKey = vchPubKeyIn;
+ }
+
+ IMPLEMENT_SERIALIZE
+ (
+ if (!(nType & SER_GETHASH))
+ READWRITE(nVersion);
+ READWRITE(nTime);
+ READWRITE(vchPubKey);
+ )
+};
+
/** A CWallet is an extension of a keystore, which also maintains a set of transactions and balances,
* and provides the ability to create new transactions.
*/
@@ -196,11 +225,7 @@ public:
}
return nChange;
}
- void SetBestChain(const CBlockLocator& loc)
- {
- CWalletDB walletdb(strWalletFile);
- walletdb.WriteBestBlock(loc);
- }
+ void SetBestChain(const CBlockLocator& loc);
int LoadWallet(bool& fFirstRunRet);
// bool BackupWallet(const std::string& strDest);