Branch data Line data Source code
1 : : // Copyright (c) 2017-2022 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 <wallet/walletutil.h> 6 : : 7 : : #include <common/args.h> 8 : : #include <logging.h> 9 : : 10 : : namespace wallet { 11 : 0 : fs::path GetWalletDir() 12 : : { 13 : 0 : fs::path path; 14 : : 15 [ # # ][ # # ]: 0 : if (gArgs.IsArgSet("-walletdir")) { [ # # ] 16 [ # # ][ # # ]: 0 : path = gArgs.GetPathArg("-walletdir"); 17 [ # # ][ # # ]: 0 : if (!fs::is_directory(path)) { 18 : : // If the path specified doesn't exist, we return the deliberately 19 : : // invalid empty string. 20 [ # # ]: 0 : path = ""; 21 : 0 : } 22 : 0 : } else { 23 [ # # ][ # # ]: 0 : path = gArgs.GetDataDirNet(); 24 : : // If a wallets directory exists, use that, otherwise default to GetDataDir 25 [ # # ][ # # ]: 0 : if (fs::is_directory(path / "wallets")) { [ # # ][ # # ] 26 [ # # ]: 0 : path /= "wallets"; 27 : 0 : } 28 : : } 29 : : 30 : 0 : return path; 31 [ # # ]: 0 : } 32 : : 33 : 0 : bool IsFeatureSupported(int wallet_version, int feature_version) 34 : : { 35 : 0 : return wallet_version >= feature_version; 36 : : } 37 : : 38 : 0 : WalletFeature GetClosestWalletFeature(int version) 39 : : { 40 : : static constexpr std::array wallet_features{FEATURE_LATEST, FEATURE_PRE_SPLIT_KEYPOOL, FEATURE_NO_DEFAULT_KEY, FEATURE_HD_SPLIT, FEATURE_HD, FEATURE_COMPRPUBKEY, FEATURE_WALLETCRYPT, FEATURE_BASE}; 41 [ # # ]: 0 : for (const WalletFeature& wf : wallet_features) { 42 [ # # ]: 0 : if (version >= wf) return wf; 43 : : } 44 : 0 : return static_cast<WalletFeature>(0); 45 : 0 : } 46 : : } // namespace wallet