ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/DC.pm
(Generate patch)

Comparing deliantra/Deliantra-Client/DC.pm (file contents):
Revision 1.134 by root, Thu Dec 7 03:54:47 2006 UTC vs.
Revision 1.135 by root, Thu Dec 7 15:57:13 2006 UTC

27 27
28use AnyEvent (); 28use AnyEvent ();
29use BerkeleyDB; 29use BerkeleyDB;
30use Pod::POM (); 30use Pod::POM ();
31use Scalar::Util (); 31use Scalar::Util ();
32use File::Path ();
32use Storable (); # finally 33use Storable (); # finally
33 34
34BEGIN { 35BEGIN {
35 use Crossfire::Protocol::Base (); 36 use Crossfire::Protocol::Base ();
36 *to_json = \&Crossfire::Protocol::Base::to_json; 37 *to_json = \&Crossfire::Protocol::Base::to_json;
272 -Property => DB_CHKSUM, 273 -Property => DB_CHKSUM,
273 -Flags => DB_CREATE | DB_UPGRADE, 274 -Flags => DB_CREATE | DB_UPGRADE,
274 or die "unable to create/open database table $_[0]: $BerkeleyDB::Error" 275 or die "unable to create/open database table $_[0]: $BerkeleyDB::Error"
275} 276}
276 277
277{ 278our $DB_HOME = "$Crossfire::VARDIR/cfplus";
279
280sub open_db {
278 use strict; 281 use strict;
279 282
280 my $HOME = "$Crossfire::VARDIR/cfplus-$BerkeleyDB::db_version";
281
282 mkdir $HOME, 0777; 283 mkdir $DB_HOME, 0777;
283 my $recover = $BerkeleyDB::db_version >= 4.4 284 my $recover = $BerkeleyDB::db_version >= 4.4
284 ? eval "DB_REGISTER | DB_RECOVER" 285 ? eval "DB_REGISTER | DB_RECOVER"
285 : 0; 286 : 0;
286 287
287 $DB_ENV = new BerkeleyDB::Env 288 $DB_ENV = new BerkeleyDB::Env
288 -Home => $HOME, 289 -Home => $DB_HOME,
289 -Cachesize => 1_000_000, 290 -Cachesize => 1_000_000,
290 -ErrFile => "$HOME/errorlog.txt", 291 -ErrFile => "$DB_HOME/errorlog.txt",
291# -ErrPrefix => "DATABASE", 292# -ErrPrefix => "DATABASE",
292 -Verbose => 1, 293 -Verbose => 1,
293 -Flags => DB_CREATE | DB_RECOVER | DB_INIT_MPOOL | DB_INIT_LOCK | DB_INIT_TXN | $recover, 294 -Flags => DB_CREATE | DB_RECOVER | DB_INIT_MPOOL | DB_INIT_LOCK | DB_INIT_TXN | $recover,
294 -SetFlags => DB_AUTO_COMMIT | DB_LOG_AUTOREMOVE, 295 -SetFlags => DB_AUTO_COMMIT | DB_LOG_AUTOREMOVE,
295 or die "unable to create/open database home $HOME: $BerkeleyDB::Error"; 296 or die "unable to create/open database home $DB_HOME: $BerkeleyDB::Error";
296 297
297 $DB_STATE = db_table "state"; 298 $DB_STATE = db_table "state";
299
300 1
301}
302
303unless (eval { open_db }) {
304 File::Path::rmtree $DB_HOME;
305 open_db;
298} 306}
299 307
300package CFPlus::Layout; 308package CFPlus::Layout;
301 309
302$CFPlus::OpenGL::SHUTDOWN_HOOK{"CFPlus::Layout"} = sub { 310$CFPlus::OpenGL::SHUTDOWN_HOOK{"CFPlus::Layout"} = sub {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines