This commit is contained in:
Daniel Larimer 2015-10-19 16:46:05 -04:00
commit 487046e375
3 changed files with 24 additions and 43 deletions

View file

@ -111,31 +111,6 @@ void database::open(
{
try
{
auto is_new = [&]() -> bool
{
// directory doesn't exist
if( !fc::exists( data_dir ) )
return true;
// if directory exists but is empty, return true; else false.
return ( fc::directory_iterator( data_dir ) == fc::directory_iterator() );
};
auto is_outdated = [&]() -> bool
{
if( !fc::exists( data_dir / "db_version" ) )
return true;
std::string version_str;
fc::read_file_contents( data_dir / "db_version", version_str );
return (version_str != GRAPHENE_CURRENT_DB_VERSION);
};
if( (!is_new()) && is_outdated() )
{
ilog( "Old database version detected, reindex is required" );
wipe( data_dir, false );
fc::remove_all( data_dir / "db_version" );
}
object_database::open(data_dir);
_block_id_to_block.open(data_dir / "database" / "block_num_to_block");
@ -153,19 +128,6 @@ void database::open(
FC_ASSERT( head_block_num() == 0, "last block ID does not match current chain state" );
}
}
// doing this down here helps ensure that DB will be wiped
// if any of the above steps were interrupted on a previous run
if( !fc::exists( data_dir / "db_version" ) )
{
std::ofstream db_version(
(data_dir / "db_version").generic_string().c_str(),
std::ios::out | std::ios::binary | std::ios::trunc );
std::string version_string = GRAPHENE_CURRENT_DB_VERSION;
db_version.write( version_string.c_str(), version_string.size() );
db_version.close();
}
//idump((head_block_id())(head_block_num()));
}
FC_CAPTURE_LOG_AND_RETHROW( (data_dir) )

View file

@ -53,16 +53,34 @@ struct static_variant_map_visitor
int which;
};
template< typename StaticVariant >
struct from_which_visitor
{
typedef StaticVariant result_type;
template< typename Member > // Member is member of static_variant
result_type operator()( const Member& dummy )
{
Member result;
from_variant( v, result );
return result; // converted from StaticVariant to Result automatically due to return type
}
const variant& v;
from_which_visitor( const variant& _v ) : v(_v) {}
};
} // namespace impl
template< typename T >
T from_which_variant( int which, const variant& v )
{
// Parse a variant for a known which()
T result;
result.set_which( which );
from_variant( v, result );
return result;
T dummy;
dummy.set_which( which );
impl::from_which_visitor< T > vtor(v);
return dummy.visit( vtor );
}
template<typename T>

View file

@ -2694,11 +2694,12 @@ bool wallet_api::import_account_keys( string filename, string password, string s
const auto plain_text = fc::aes_decrypt( password_hash, encrypted_key );
const auto private_key = fc::raw::unpack<private_key_type>( plain_text );
import_key( dest_account_name, string( graphene::utilities::key_to_wif( private_key ) ) );
my->import_key( dest_account_name, string( graphene::utilities::key_to_wif( private_key ) ) );
}
return true;
}
save_wallet_file();
FC_ASSERT( found_account );