Branch data Line data Source code
# 1 : : // Copyright (c) 2012-2020 The Bitcoin Core developers # 2 : : // Distributed under the MIT software license, see the accompanying # 3 : : // file COPYING or http://www.opensource.org/licenses/mit-license.php. # 4 : : # 5 : : #include <clientversion.h> # 6 : : # 7 : : #include <tinyformat.h> # 8 : : # 9 : : # 10 : : /** # 11 : : * Name of client reported in the 'version' message. Report the same name # 12 : : * for both bitcoind and bitcoin-qt, to make it harder for attackers to # 13 : : * target servers or GUI users specifically. # 14 : : */ # 15 : : const std::string CLIENT_NAME("Satoshi"); # 16 : : # 17 : : # 18 : : #ifdef HAVE_BUILD_INFO # 19 : : #include <obj/build.h> # 20 : : // The <obj/build.h>, which is generated by the build environment (share/genbuild.sh), # 21 : : // could contain only one line of the following: # 22 : : // - "#define BUILD_GIT_TAG ...", if the top commit is tagged # 23 : : // - "#define BUILD_GIT_COMMIT ...", if the top commit is not tagged # 24 : : // - "// No build information available", if proper git information is not available # 25 : : #endif # 26 : : # 27 : : //! git will put "#define GIT_COMMIT_ID ..." on the next line inside archives. $Format:%n#define GIT_COMMIT_ID "%H"$ # 28 : : # 29 : : #ifdef BUILD_GIT_TAG # 30 : : #define BUILD_DESC BUILD_GIT_TAG # 31 : : #define BUILD_SUFFIX "" # 32 : : #else # 33 : : #define BUILD_DESC "v" STRINGIZE(CLIENT_VERSION_MAJOR) "." STRINGIZE(CLIENT_VERSION_MINOR) "." STRINGIZE(CLIENT_VERSION_BUILD) # 34 : : #ifdef BUILD_GIT_COMMIT # 35 : : #define BUILD_SUFFIX "-" BUILD_GIT_COMMIT # 36 : : #elif defined(GIT_COMMIT_ID) # 37 : : #define BUILD_SUFFIX "-g" GIT_COMMIT_ID # 38 : : #else # 39 : : #define BUILD_SUFFIX "-unk" # 40 : : #endif # 41 : : #endif # 42 : : # 43 : : const std::string CLIENT_BUILD(BUILD_DESC BUILD_SUFFIX); # 44 : : # 45 : : static std::string FormatVersion(int nVersion) # 46 : 635 : { # 47 : 635 : return strprintf("%d.%d.%d", nVersion / 10000, (nVersion / 100) % 100, nVersion % 100); # 48 : 635 : } # 49 : : # 50 : : std::string FormatFullVersion() # 51 : 1519 : { # 52 : 1519 : return CLIENT_BUILD; # 53 : 1519 : } # 54 : : # 55 : : /** # 56 : : * Format the subversion field according to BIP 14 spec (https://github.com/bitcoin/bips/blob/master/bip-0014.mediawiki) # 57 : : */ # 58 : : std::string FormatSubVersion(const std::string& name, int nClientVersion, const std::vector<std::string>& comments) # 59 : 635 : { # 60 : 635 : std::ostringstream ss; # 61 : 635 : ss << "/"; # 62 : 635 : ss << name << ":" << FormatVersion(nClientVersion); # 63 [ + + ]: 635 : if (!comments.empty()) # 64 : 633 : { # 65 : 633 : std::vector<std::string>::const_iterator it(comments.begin()); # 66 : 633 : ss << "(" << *it; # 67 [ + + ]: 644 : for(++it; it != comments.end(); ++it) # 68 : 11 : ss << "; " << *it; # 69 : 633 : ss << ")"; # 70 : 633 : } # 71 : 635 : ss << "/"; # 72 : 635 : return ss.str(); # 73 : 635 : }