walletutil.cpp
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 fs::path GetWalletDir() 12 { 13 fs::path path; 14 15 if (gArgs.IsArgSet("-walletdir")) { 16 path = gArgs.GetPathArg("-walletdir"); 17 if (!fs::is_directory(path)) { 18 // If the path specified doesn't exist, we return the deliberately 19 // invalid empty string. 20 path = ""; 21 } 22 } else { 23 path = gArgs.GetDataDirNet(); 24 // If a wallets directory exists, use that, otherwise default to GetDataDir 25 if (fs::is_directory(path / "wallets")) { 26 path /= "wallets"; 27 } 28 } 29 30 return path; 31 } 32 33 bool IsFeatureSupported(int wallet_version, int feature_version) 34 { 35 return wallet_version >= feature_version; 36 } 37 38 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 for (const WalletFeature& wf : wallet_features) { 42 if (version >= wf) return wf; 43 } 44 return static_cast<WalletFeature>(0); 45 } 46 } // namespace wallet