@ -357,6 +357,31 @@ std::shared_ptr<CWallet> CreateWallet(WalletContext& context, const std::string&
return wallet ;
}
std : : shared_ptr < CWallet > RestoreWallet ( WalletContext & context , const std : : string & backup_file , const std : : string & wallet_name , std : : optional < bool > load_on_start , DatabaseStatus & status , bilingual_str & error , std : : vector < bilingual_str > & warnings )
{
DatabaseOptions options ;
options . require_existing = true ;
if ( ! fs : : exists ( fs : : u8path ( backup_file ) ) ) {
error = Untranslated ( " Backup file does not exist " ) ;
status = DatabaseStatus : : FAILED_BAD_PATH ;
return nullptr ;
}
const fs : : path wallet_path = fsbridge : : AbsPathJoin ( GetWalletDir ( ) , fs : : u8path ( wallet_name ) ) ;
if ( fs : : exists ( wallet_path ) | | ! TryCreateDirectories ( wallet_path ) ) {
error = Untranslated ( strprintf ( " Failed to create database path '%s'. Database already exists. " , fs : : PathToString ( wallet_path ) ) ) ;
status = DatabaseStatus : : FAILED_ALREADY_EXISTS ;
return nullptr ;
}
auto wallet_file = wallet_path / " wallet.dat " ;
fs : : copy_file ( backup_file , wallet_file , fs : : copy_option : : fail_if_exists ) ;
return LoadWallet ( context , wallet_name , load_on_start , options , status , error , warnings ) ;
}
/** @defgroup mapWallet
*
* @ {