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 3 : util::Result<void> ApplyArgsManOptions(const ArgsManager& args, BlockManager::Options& opts) 18 2 : { 19 : // block pruning; get the amount of disk space (in MiB) to allot for block & undo files 20 1 : int64_t nPruneArg{args.GetIntArg("-prune", opts.prune_target)}; 21 1 : if (nPruneArg < 0) { 22 0 : return util::Error{_("Prune cannot be configured with a negative value.")}; 23 : } 24 1 : uint64_t nPruneTarget{uint64_t(nPruneArg) * 1024 * 1024}; 25 1 : if (nPruneArg == 1) { // manual pruning: -prune=1 26 0 : nPruneTarget = BlockManager::PRUNE_TARGET_MANUAL; 27 1 : } else if (nPruneTarget) { 28 0 : if (nPruneTarget < MIN_DISK_SPACE_FOR_BLOCK_FILES) { 29 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)}; 30 : } 31 0 : } 32 1 : opts.prune_target = nPruneTarget; 33 : 34 1 : if (auto value{args.GetBoolArg("-fastprune")}) opts.fast_prune = *value; 35 : 36 1 : return {}; 37 1 : } 38 : } // namespace node