Branch data Line data Source code
1 : : // Copyright (c) 2023 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 <node/blockmanager_args.h>
6 : :
7 : : #include <common/args.h>
8 : : #include <node/blockstorage.h>
9 : : #include <node/database_args.h>
10 : : #include <tinyformat.h>
11 : : #include <util/result.h>
12 : : #include <util/translation.h>
13 : : #include <validation.h>
14 : :
15 : : #include <cstdint>
16 : :
17 : : namespace node {
18 : 2617 : util::Result<void> ApplyArgsManOptions(const ArgsManager& args, BlockManager::Options& opts)
19 : : {
20 [ + - + + ]: 5234 : if (auto value{args.GetBoolArg("-blocksxor")}) opts.use_xor = *value;
21 : : // block pruning; get the amount of disk space (in MiB) to allot for block & undo files
22 [ + - ]: 2617 : int64_t nPruneArg{args.GetIntArg("-prune", opts.prune_target)};
23 [ + + ]: 2617 : if (nPruneArg < 0) {
24 : 2 : return util::Error{_("Prune cannot be configured with a negative value.")};
25 : : }
26 : 2616 : uint64_t nPruneTarget{uint64_t(nPruneArg) * 1024 * 1024};
27 [ + + ]: 2616 : if (nPruneArg == 1) { // manual pruning: -prune=1
28 : : nPruneTarget = BlockManager::PRUNE_TARGET_MANUAL;
29 [ + + ]: 2546 : } else if (nPruneTarget) {
30 [ + + ]: 41 : if (nPruneTarget < MIN_DISK_SPACE_FOR_BLOCK_FILES) {
31 : 2 : return util::Error{strprintf(_("Prune configured below the minimum of %d MiB. Please use a higher number."), MIN_DISK_SPACE_FOR_BLOCK_FILES / 1024 / 1024)};
32 : : }
33 : : }
34 : 2615 : opts.prune_target = nPruneTarget;
35 : :
36 [ + - + + ]: 5230 : if (auto value{args.GetBoolArg("-fastprune")}) opts.fast_prune = *value;
37 : :
38 : 2615 : ReadDatabaseArgs(args, opts.block_tree_db_params.options);
39 : :
40 : 2615 : return {};
41 : : }
42 : : } // namespace node
|