Done:
-Compatibility with Qt, and some more modularity
+To be able to make an external GUI, I am working on modularizing bitcoin into a library. This is basic code
+plumbing, 100% no functional changes.
- Put guard statements around header files.
-- Removed macro foreach: conflicts with Qt keyword foreach, replaced back with BOOST_FOREACH
+- Removed macro foreach: conflicts with Qt4 keyword `foreach`, replaced with BOOST_FOREACH.
- Prefix stdlib structures and functions with std:: in headers; "using namespace" in header files is
- generally frowned upon
+ generally frowned upon. These are moved to the implementation files.
+
+- Modularity: base48.h and most other header files can now be included without the other shebang
+ (useful for linking external GUI to bitcoin core, part of GUI separation).
+ The include files that need each other now include each other.
-- Modularity: base48.h can now be included without including all the headers
- (useful for linking external GUI to bitcoin core, part of GUI separation)
Todo:
// Why base-58 instead of standard base-64 encoding?
// - Don't want 0OIl characters that look the same in some fonts and
// could be used to create visually identical looking account numbers.
-// - A std::string with non-alphanumeric characters is not as easily accepted as an account number.
+// - A string with non-alphanumeric characters is not as easily accepted as an account number.
// - E-mail usually won't line-break if there's no punctuation to break at.
// - Doubleclicking selects the whole number as one word if it's all alphanumeric.
//
while (isspace(*psz))
psz++;
- // Convert big endian std::string to bignum
+ // Convert big endian string to bignum
for (const char* p = psz; *p; p++)
{
const char* p1 = strchr(pszBase58, *p);
#include <deque>
#include <boost/array.hpp>
-#include <arpa/inet.h>
#include <openssl/rand.h>
+#ifndef __WXMSW__
+#include <arpa/inet.h>
+#endif
+
class CMessageHeader;
class CAddress;
class CInv;
#define BITCOIN_UTIL_H
#include "uint256.h"
-//#include "cryptopp/sha.h"
+#ifndef __WXMSW__
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
+#endif
#include <map>
#include <vector>
#include <string>
bool Lookup(const char *pszName, vector<CAddress>& vaddr, int nServices, int nMaxSolutions, bool fAllowLookup, int portDefault, bool fAllowPort)
{
vaddr.clear();
+ if (pszName[0] == 0)
+ return false;
int port = portDefault;
char psz[256];
char *pszHost = psz;
}
}
- struct in_addr addrIP;
- if (inet_aton(pszHost, &addrIP))
+ unsigned int addrIP = inet_addr(pszHost);
+ if (addrIP != INADDR_NONE)
{
// valid IP address passed
- vaddr.push_back(CAddress(addrIP.s_addr, port, nServices));
+ vaddr.push_back(CAddress(addrIP, port, nServices));
return true;
}
if (gethostname(pszHostName, sizeof(pszHostName)) != SOCKET_ERROR)
{
vector<CAddress> vaddr;
- if (NameLookup(pszHostName, vaddr, nLocalServices))
+ if (Lookup(pszHostName, vaddr, nLocalServices, -1, true))
BOOST_FOREACH (const CAddress &addr, vaddr)
if (addr.GetByte(3) != 127)
{