--- deliantra/Deliantra-Client/DC.pm 2006/05/29 21:20:15 1.76 +++ deliantra/Deliantra-Client/DC.pm 2006/05/30 02:55:45 1.79 @@ -72,17 +72,23 @@ mkdir "$Crossfire::VARDIR/cfplus", 0777; +our $DB_ENV; + { use strict; - our $DB_ENV = new BerkeleyDB::Env + my $recover = $BerkeleyDB::db_version >= 4.4 + ? eval "DB_REGISTER | DB_RECOVER" + : 0; + + $DB_ENV = new BerkeleyDB::Env -Home => "$Crossfire::VARDIR/cfplus", -Cachesize => 1_000_000, -ErrFile => "$Crossfire::VARDIR/cfplus/errorlog.txt", # -ErrPrefix => "DATABASE", -Verbose => 1, - -Flags => DB_CREATE | DB_RECOVER | DB_INIT_MPOOL | DB_INIT_LOCK | DB_INIT_TXN, - -SetFlags => DB_AUTO_COMMIT | DB_LOG_AUTOREMOVE | DB_TXN_WRITE_NOSYNC, + -Flags => DB_CREATE | DB_RECOVER | DB_INIT_MPOOL | DB_INIT_LOCK | DB_INIT_TXN | $recover, + -SetFlags => DB_AUTO_COMMIT | DB_LOG_AUTOREMOVE, or die "unable to create/open database home $Crossfire::VARDIR/cfplus: $BerkeleyDB::Error"; } @@ -247,7 +253,8 @@ $targ = $::CONN->{open_container}; } - $::CONN->send ("move $targ $self->{tag} 0"); + $::CONN->send ("move $targ $self->{tag} 0") + if $targ || !($self->{flags} & F_LOCKED); } elsif ($ev->{button} == 1) { $::CONN->send ("examine $self->{tag}"); } elsif ($ev->{button} == 2) {