diff --git a/src/utilmoneystr.cpp b/src/utilmoneystr.cpp index 596d236bd..90272b99a 100644 --- a/src/utilmoneystr.cpp +++ b/src/utilmoneystr.cpp @@ -1,65 +1,82 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2015 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "utilmoneystr.h" #include "primitives/transaction.h" #include "tinyformat.h" #include "utilstrencodings.h" -std::string FormatMoney(const Amount &amt) { +std::string FormatMoney(const Amount amt) { // Note: not using straight sprintf here because we do NOT want localized // number formatting. int64_t n = amt.GetSatoshis(); int64_t n_abs = (n > 0 ? n : -n); int64_t quotient = n_abs / COIN.GetSatoshis(); int64_t remainder = n_abs % COIN.GetSatoshis(); std::string str = strprintf("%d.%08d", quotient, remainder); // Right-trim excess zeros before the decimal point: int nTrim = 0; - for (int i = str.size() - 1; (str[i] == '0' && isdigit(str[i - 2])); --i) + for (int i = str.size() - 1; (str[i] == '0' && isdigit(str[i - 2])); --i) { ++nTrim; - if (nTrim) str.erase(str.size() - nTrim, nTrim); + } + if (nTrim) { + str.erase(str.size() - nTrim, nTrim); + } - if (n < 0) str.insert((unsigned int)0, 1, '-'); + if (n < 0) { + str.insert((unsigned int)0, 1, '-'); + } return str; } bool ParseMoney(const std::string &str, Amount &nRet) { return ParseMoney(str.c_str(), nRet); } bool ParseMoney(const char *pszIn, Amount &nRet) { std::string strWhole; int64_t nUnits = 0; const char *p = pszIn; - while (isspace(*p)) + while (isspace(*p)) { p++; + } for (; *p; p++) { if (*p == '.') { p++; int64_t nMult = 10 * CENT.GetSatoshis(); while (isdigit(*p) && (nMult > 0)) { nUnits += nMult * (*p++ - '0'); nMult /= 10; } break; } - if (isspace(*p)) break; - if (!isdigit(*p)) return false; + if (isspace(*p)) { + break; + } + if (!isdigit(*p)) { + return false; + } strWhole.insert(strWhole.end(), *p); } - for (; *p; p++) - if (!isspace(*p)) return false; + for (; *p; p++) { + if (!isspace(*p)) { + return false; + } + } // guard against 63 bit overflow - if (strWhole.size() > 10) return false; - if (nUnits < 0 || nUnits > COIN.GetSatoshis()) return false; + if (strWhole.size() > 10) { + return false; + } + if (nUnits < 0 || nUnits > COIN.GetSatoshis()) { + return false; + } int64_t nWhole = atoi64(strWhole); Amount nValue = nWhole * COIN + Amount(nUnits); nRet = nValue; return true; } diff --git a/src/utilmoneystr.h b/src/utilmoneystr.h index 74c1ebaec..f7634fc9b 100644 --- a/src/utilmoneystr.h +++ b/src/utilmoneystr.h @@ -1,21 +1,21 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2015 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. /** * Money parsing/formatting utilities. */ #ifndef BITCOIN_UTILMONEYSTR_H #define BITCOIN_UTILMONEYSTR_H #include #include #include "amount.h" -std::string FormatMoney(const Amount &n); +std::string FormatMoney(const Amount n); bool ParseMoney(const std::string &str, Amount &nRet); bool ParseMoney(const char *pszIn, Amount &nRet); #endif // BITCOIN_UTILMONEYSTR_H