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 <tinyformat.h>
10 : : #include <util/result.h>
11 : : #include <util/translation.h>
12 : : #include <validation.h>
13 : :
14 : : #include <cstdint>
15 : :
16 : : namespace node {
17 : 586 : util::Result<void> ApplyArgsManOptions(const ArgsManager& args, BlockManager::Options& opts)
18 : : {
19 [ + - - + ]: 1172 : if (auto value{args.GetBoolArg("-blocksxor")}) opts.use_xor = *value;
20 : : // block pruning; get the amount of disk space (in MiB) to allot for block & undo files
21 [ + - ]: 586 : int64_t nPruneArg{args.GetIntArg("-prune", opts.prune_target)};
22 [ - + ]: 586 : if (nPruneArg < 0) {
23 : 0 : return util::Error{_("Prune cannot be configured with a negative value.")};
24 : : }
25 : 586 : uint64_t nPruneTarget{uint64_t(nPruneArg) * 1024 * 1024};
26 [ + - ]: 586 : if (nPruneArg == 1) { // manual pruning: -prune=1
27 : : nPruneTarget = BlockManager::PRUNE_TARGET_MANUAL;
28 [ - + ]: 586 : } else if (nPruneTarget) {
29 [ # # ]: 0 : if (nPruneTarget < MIN_DISK_SPACE_FOR_BLOCK_FILES) {
30 [ # # ]: 0 : 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)};
31 : : }
32 : : }
33 : 586 : opts.prune_target = nPruneTarget;
34 : :
35 [ + - - + ]: 1172 : if (auto value{args.GetBoolArg("-fastprune")}) opts.fast_prune = *value;
36 : :
37 : 586 : return {};
38 : : }
39 : : } // namespace node
|