diff options
author | Ben Woosley <ben.woosley@gmail.com> | 2023-03-06 17:22:33 +0100 |
---|---|---|
committer | TheCharlatan <seb.kung@gmail.com> | 2023-03-13 17:09:47 +0100 |
commit | e7333b420e35054d9302f9c58fd47b6152cbd35f (patch) | |
tree | b7dd521363eeedcc4e2f353624facbe8cc679372 | |
parent | f7bdcfc83f5753349018be3b5a663c8923d1a5eb (diff) |
refactor: Extract util/exception from util/system
This is a minimal extraction of a single function, but also the only use
of std::exception in util/system.
The background of this commit is an ongoing effort to decouple the
libbitcoinkernel library from the ArgsManager defined in system.h.
Moving the function out of system.h allows including it from a separate
source file without including the ArgsManager definitions from system.h.
-rwxr-xr-x | ci/test/06_script_b.sh | 1 | ||||
-rw-r--r-- | src/Makefile.am | 3 | ||||
-rw-r--r-- | src/bitcoin-cli.cpp | 1 | ||||
-rw-r--r-- | src/bitcoin-tx.cpp | 3 | ||||
-rw-r--r-- | src/bitcoin-util.cpp | 1 | ||||
-rw-r--r-- | src/bitcoin-wallet.cpp | 1 | ||||
-rw-r--r-- | src/bitcoind.cpp | 1 | ||||
-rw-r--r-- | src/qt/bitcoin.cpp | 1 | ||||
-rw-r--r-- | src/qt/guiutil.cpp | 1 | ||||
-rw-r--r-- | src/qt/initexecutor.cpp | 2 | ||||
-rw-r--r-- | src/util/exception.cpp | 41 | ||||
-rw-r--r-- | src/util/exception.h | 14 | ||||
-rw-r--r-- | src/util/system.cpp | 23 | ||||
-rw-r--r-- | src/util/system.h | 4 | ||||
-rw-r--r-- | src/util/thread.cpp | 2 |
15 files changed, 69 insertions, 30 deletions
diff --git a/ci/test/06_script_b.sh b/ci/test/06_script_b.sh index 7d47f6651c..7a01672d18 100755 --- a/ci/test/06_script_b.sh +++ b/ci/test/06_script_b.sh @@ -69,6 +69,7 @@ if [ "${RUN_TIDY}" = "true" ]; then " src/util/bytevectorhash.cpp"\ " src/util/check.cpp"\ " src/util/error.cpp"\ + " src/util/exception.cpp"\ " src/util/getuniquepath.cpp"\ " src/util/hasher.cpp"\ " src/util/message.cpp"\ diff --git a/src/Makefile.am b/src/Makefile.am index 7dc5594cf2..a0c1670287 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -279,6 +279,7 @@ BITCOIN_CORE_H = \ util/check.h \ util/epochguard.h \ util/error.h \ + util/exception.h \ util/fastrange.h \ util/fees.h \ util/getuniquepath.h \ @@ -699,6 +700,7 @@ libbitcoin_util_a_SOURCES = \ util/bytevectorhash.cpp \ util/check.cpp \ util/error.cpp \ + util/exception.cpp \ util/fees.cpp \ util/getuniquepath.cpp \ util/hasher.cpp \ @@ -942,6 +944,7 @@ libbitcoinkernel_la_SOURCES = \ txmempool.cpp \ uint256.cpp \ util/check.cpp \ + util/exception.cpp \ util/getuniquepath.cpp \ util/hasher.cpp \ util/moneystr.cpp \ diff --git a/src/bitcoin-cli.cpp b/src/bitcoin-cli.cpp index 77613f389c..eb52b30ae4 100644 --- a/src/bitcoin-cli.cpp +++ b/src/bitcoin-cli.cpp @@ -19,6 +19,7 @@ #include <rpc/request.h> #include <tinyformat.h> #include <univalue.h> +#include <util/exception.h> #include <util/strencodings.h> #include <util/system.h> #include <util/translation.h> diff --git a/src/bitcoin-tx.cpp b/src/bitcoin-tx.cpp index 57ca2bbe8a..f36b6054bb 100644 --- a/src/bitcoin-tx.cpp +++ b/src/bitcoin-tx.cpp @@ -12,14 +12,15 @@ #include <consensus/amount.h> #include <consensus/consensus.h> #include <core_io.h> -#include <key_io.h> #include <fs.h> +#include <key_io.h> #include <policy/policy.h> #include <primitives/transaction.h> #include <script/script.h> #include <script/sign.h> #include <script/signingprovider.h> #include <univalue.h> +#include <util/exception.h> #include <util/moneystr.h> #include <util/rbf.h> #include <util/strencodings.h> diff --git a/src/bitcoin-util.cpp b/src/bitcoin-util.cpp index 61d4b9c6f1..cf59ca9bff 100644 --- a/src/bitcoin-util.cpp +++ b/src/bitcoin-util.cpp @@ -14,6 +14,7 @@ #include <compat/compat.h> #include <core_io.h> #include <streams.h> +#include <util/exception.h> #include <util/system.h> #include <util/translation.h> #include <version.h> diff --git a/src/bitcoin-wallet.cpp b/src/bitcoin-wallet.cpp index fcb845fe64..1ebe98b920 100644 --- a/src/bitcoin-wallet.cpp +++ b/src/bitcoin-wallet.cpp @@ -16,6 +16,7 @@ #include <logging.h> #include <pubkey.h> #include <tinyformat.h> +#include <util/exception.h> #include <util/system.h> #include <util/translation.h> #include <wallet/wallettool.h> diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp index b69913dddb..2ff34125e1 100644 --- a/src/bitcoind.cpp +++ b/src/bitcoind.cpp @@ -20,6 +20,7 @@ #include <noui.h> #include <shutdown.h> #include <util/check.h> +#include <util/exception.h> #include <util/strencodings.h> #include <util/syscall_sandbox.h> #include <util/syserror.h> diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 5244b72689..2c413e8b43 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -29,6 +29,7 @@ #include <qt/utilitydialog.h> #include <qt/winshutdownmonitor.h> #include <uint256.h> +#include <util/exception.h> #include <util/string.h> #include <util/system.h> #include <util/threadnames.h> diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index 67c5295ae3..83c78d5c18 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -20,6 +20,7 @@ #include <protocol.h> #include <script/script.h> #include <script/standard.h> +#include <util/exception.h> #include <util/system.h> #include <util/time.h> diff --git a/src/qt/initexecutor.cpp b/src/qt/initexecutor.cpp index b63e7ec01c..bb3f970b55 100644 --- a/src/qt/initexecutor.cpp +++ b/src/qt/initexecutor.cpp @@ -5,7 +5,7 @@ #include <qt/initexecutor.h> #include <interfaces/node.h> -#include <util/system.h> +#include <util/exception.h> #include <util/threadnames.h> #include <exception> diff --git a/src/util/exception.cpp b/src/util/exception.cpp new file mode 100644 index 0000000000..d961f0540f --- /dev/null +++ b/src/util/exception.cpp @@ -0,0 +1,41 @@ +// Copyright (c) 2009-2010 Satoshi Nakamoto +// Copyright (c) 2009-2023 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 <util/exception.h> + +#include <logging.h> +#include <tinyformat.h> + +#include <exception> +#include <iostream> +#include <string> +#include <typeinfo> + +#ifdef WIN32 +#include <windows.h> +#endif // WIN32 + +static std::string FormatException(const std::exception* pex, std::string_view thread_name) +{ +#ifdef WIN32 + char pszModule[MAX_PATH] = ""; + GetModuleFileNameA(nullptr, pszModule, sizeof(pszModule)); +#else + const char* pszModule = "bitcoin"; +#endif + if (pex) + return strprintf( + "EXCEPTION: %s \n%s \n%s in %s \n", typeid(*pex).name(), pex->what(), pszModule, thread_name); + else + return strprintf( + "UNKNOWN EXCEPTION \n%s in %s \n", pszModule, thread_name); +} + +void PrintExceptionContinue(const std::exception* pex, std::string_view thread_name) +{ + std::string message = FormatException(pex, thread_name); + LogPrintf("\n\n************************\n%s\n", message); + tfm::format(std::cerr, "\n\n************************\n%s\n", message); +} diff --git a/src/util/exception.h b/src/util/exception.h new file mode 100644 index 0000000000..946eb2644c --- /dev/null +++ b/src/util/exception.h @@ -0,0 +1,14 @@ +// Copyright (c) 2009-2010 Satoshi Nakamoto +// Copyright (c) 2009-2023 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef BITCOIN_UTIL_EXCEPTION_H +#define BITCOIN_UTIL_EXCEPTION_H + +#include <exception> +#include <string_view> + +void PrintExceptionContinue(const std::exception* pex, std::string_view thread_name); + +#endif // BITCOIN_UTIL_EXCEPTION_H diff --git a/src/util/system.cpp b/src/util/system.cpp index 5b1a1659bf..98e89f82e7 100644 --- a/src/util/system.cpp +++ b/src/util/system.cpp @@ -792,29 +792,6 @@ std::string HelpMessageOpt(const std::string &option, const std::string &message std::string("\n\n"); } -static std::string FormatException(const std::exception* pex, std::string_view thread_name) -{ -#ifdef WIN32 - char pszModule[MAX_PATH] = ""; - GetModuleFileNameA(nullptr, pszModule, sizeof(pszModule)); -#else - const char* pszModule = "bitcoin"; -#endif - if (pex) - return strprintf( - "EXCEPTION: %s \n%s \n%s in %s \n", typeid(*pex).name(), pex->what(), pszModule, thread_name); - else - return strprintf( - "UNKNOWN EXCEPTION \n%s in %s \n", pszModule, thread_name); -} - -void PrintExceptionContinue(const std::exception* pex, std::string_view thread_name) -{ - std::string message = FormatException(pex, thread_name); - LogPrintf("\n\n************************\n%s\n", message); - tfm::format(std::cerr, "\n\n************************\n%s\n", message); -} - fs::path GetDefaultDataDir() { // Windows: C:\Users\Username\AppData\Roaming\Bitcoin diff --git a/src/util/system.h b/src/util/system.h index f7bebe1f2a..2d07e64345 100644 --- a/src/util/system.h +++ b/src/util/system.h @@ -19,12 +19,10 @@ #include <fs.h> #include <logging.h> #include <sync.h> -#include <tinyformat.h> #include <util/settings.h> #include <util/time.h> #include <any> -#include <exception> #include <map> #include <optional> #include <set> @@ -52,8 +50,6 @@ bool error(const char* fmt, const Args&... args) return false; } -void PrintExceptionContinue(const std::exception* pex, std::string_view thread_name); - /** * Ensure file contents are fully committed to disk, using a platform-specific * feature analogous to fsync(). diff --git a/src/util/thread.cpp b/src/util/thread.cpp index e9f611bc50..f380d29f7a 100644 --- a/src/util/thread.cpp +++ b/src/util/thread.cpp @@ -5,7 +5,7 @@ #include <util/thread.h> #include <logging.h> -#include <util/system.h> +#include <util/exception.h> #include <util/threadnames.h> #include <exception> |