X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Futil.cpp;h=465b5dd20dae93fc60a582ed407a7605cbcba488;hb=1dce23761237d85c2cfafd0757f1bef87b0087c4;hp=a583cd5dde5c9b03a810edef51e2b6c6d6eb001a;hpb=d877034ddb59f54e05de6e816077d4d258376fa0;p=novacoin.git diff --git a/src/util.cpp b/src/util.cpp index a583cd5..465b5dd 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -4,51 +4,27 @@ // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "util.h" +#include "interface.h" #include "sync.h" #include "version.h" -#include "ui_interface.h" + #include #include // for to_lower() #include // for startswith() and endswith() - -// Work around clang compilation problem in Boost 1.46: -// /usr/include/boost/program_options/detail/config_file.hpp:163:17: error: call to function 'to_internal' that is neither visible in the template definition nor found by argument-dependent lookup -// See also: http://stackoverflow.com/questions/10020179/compilation-fail-in-boost-librairies-program-options -// http://clang.debian.net/status.php?version=3.0&key=CANNOT_FIND_FUNCTION -namespace boost { - namespace program_options { - std::string to_internal(const std::string&); - } -} - #include #include #include #include - #include -#include #include #include #include #ifdef WIN32 -#ifdef _WIN32_WINNT -#undef _WIN32_WINNT -#endif -#define _WIN32_WINNT 0x0501 -#ifdef _WIN32_IE -#undef _WIN32_IE -#endif -#define _WIN32_IE 0x0501 -#define WIN32_LEAN_AND_MEAN 1 -#ifndef NOMINMAX -#define NOMINMAX -#endif #include /* for _commit */ #include "shlobj.h" #elif defined(__linux__) -# include +#include #endif #if !defined(WIN32) && !defined(ANDROID) @@ -202,18 +178,6 @@ int GetRandInt(int nMax) return static_cast(GetRand(nMax)); } -uint256 GetRandHash() -{ - uint256 hash; - RAND_bytes((unsigned char*)&hash, sizeof(hash)); - return hash; -} - - - - - - static FILE* fileout = NULL; inline int OutputDebugStringF(const char* pszFormat, ...) @@ -245,9 +209,9 @@ inline int OutputDebugStringF(const char* pszFormat, ...) // Since the order of destruction of static/global objects is undefined, // allocate mutexDebugLog on the heap the first time this routine // is called to avoid crashes during shutdown. - static boost::mutex* mutexDebugLog = NULL; - if (mutexDebugLog == NULL) mutexDebugLog = new boost::mutex(); - boost::mutex::scoped_lock scoped_lock(*mutexDebugLog); + static std::mutex* mutexDebugLog = nullptr; + if (mutexDebugLog == nullptr) mutexDebugLog = new std::mutex(); + std::scoped_lock scoped_lock(*mutexDebugLog); // reopen the log file, if requested if (fReopenDebugLog) { @@ -306,7 +270,7 @@ string vstrprintf(const char *format, va_list ap) char* p = buffer; int limit = sizeof(buffer); int ret; - while (true) + for ( ; ; ) { #ifndef _MSC_VER va_list arg_ptr; @@ -370,7 +334,7 @@ void ParseString(const string& str, char c, vector& v) return; string::size_type i1 = 0; string::size_type i2; - while (true) + for ( ; ; ) { i2 = str.find(c, i1); if (i2 == str.npos) @@ -474,7 +438,7 @@ static const signed char phexdigit[256] = bool IsHex(const string& str) { - BOOST_FOREACH(unsigned char c, str) + for (unsigned char c : str) { if (phexdigit[c] < 0) return false; @@ -486,7 +450,7 @@ vector ParseHex(const char* psz) { // convert hex dump to vector vector vch; - while (true) + for ( ; ; ) { while (isspace(*psz)) psz++; @@ -550,7 +514,7 @@ void ParseParameters(int argc, const char* const argv[]) } // New 0.6 features: - BOOST_FOREACH(const PAIRTYPE(string,string)& entry, mapArgs) + for (const auto& entry : mapArgs) { string name = entry.first; @@ -705,7 +669,7 @@ vector DecodeBase64(const char* p, bool* pfInvalid) int mode = 0; int left = 0; - while (1) + for ( ; ; ) { int dec = decode64_table[(unsigned char)*p]; if (dec == -1) break; @@ -858,7 +822,7 @@ vector DecodeBase32(const char* p, bool* pfInvalid) int mode = 0; int left = 0; - while (1) + for ( ; ; ) { int dec = decode32_table[(unsigned char)*p]; if (dec == -1) break; @@ -975,7 +939,7 @@ std::string EncodeDumpTime(int64_t nTime) { std::string EncodeDumpString(const std::string &str) { std::stringstream ret; - BOOST_FOREACH(unsigned char c, str) { + for (unsigned char c : str) { if (c <= 32 || c >= 128 || c == '%') { ret << '%' << HexStr(&c, &c + 1); } else { @@ -1001,7 +965,7 @@ std::string DecodeDumpString(const std::string &str) { bool WildcardMatch(const char* psz, const char* mask) { - while (true) + for ( ; ; ) { switch (*mask) { @@ -1104,7 +1068,7 @@ boost::filesystem::path GetDefaultDataDir() pathRet = fs::path("/"); else pathRet = fs::path(pszHome); -#ifdef MAC_OSX +#ifdef __APPLE__ // Mac pathRet /= "Library/Application Support"; fs::create_directory(pathRet); @@ -1315,7 +1279,9 @@ void ShrinkDebugFile() // System clock int64_t GetTime() { - return time(NULL); + int64_t now = time(NULL); + assert(now > 0); + return now; } // Trusted NTP offset or median of NTP samples. @@ -1379,7 +1345,7 @@ void AddTimeData(const CNetAddr& ip, int64_t nTime) bool fMatch = false; // If nobody has a time different than ours but within 5 minutes of ours, give a warning - BOOST_FOREACH(int64_t nOffset, vSorted) + for (int64_t nOffset : vSorted) if (nOffset != 0 && abs64(nOffset) < 5 * 60) fMatch = true; @@ -1394,7 +1360,7 @@ void AddTimeData(const CNetAddr& ip, int64_t nTime) } } if (fDebug) { - BOOST_FOREACH(int64_t n, vSorted) + for (int64_t n : vSorted) printf("%+" PRId64 " ", n); printf("| "); } @@ -1457,16 +1423,10 @@ void RenameThread(const char* name) #if defined(PR_SET_NAME) // Only the first 15 characters are used (16 - NUL terminator) ::prctl(PR_SET_NAME, name, 0, 0, 0); -#elif 0 && (defined(__FreeBSD__) || defined(__OpenBSD__)) - // TODO: This is currently disabled because it needs to be verified to work - // on FreeBSD or OpenBSD first. When verified the '0 &&' part can be - // removed. +#elif (defined(__FreeBSD__) || defined(__OpenBSD__)) pthread_set_name_np(pthread_self(), name); - -// This is XCode 10.6-and-later; bring back if we drop 10.5 support: -// #elif defined(MAC_OSX) -// pthread_setname_np(name); - +#elif defined(__APPLE__) + pthread_setname_np(name); #else // Prevent warnings for unused parameters... (void)name;