ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/lib/cf.pm
(Generate patch)

Comparing deliantra/server/lib/cf.pm (file contents):
Revision 1.55 by root, Tue Aug 29 17:32:19 2006 UTC vs.
Revision 1.59 by root, Wed Aug 30 16:30:37 2006 UTC

476 } 476 }
477 } 477 }
478} 478}
479 479
480sub object_freezer_save { 480sub object_freezer_save {
481 my ($filename, $objs) = @_; 481 my ($filename, $rdata, $objs) = @_;
482 482
483 if (@$objs) {
484 open my $fh, ">:raw", "$filename.pst~"; 483 if (open my $fh, ">:raw", "$filename~") {
485 syswrite $fh, Storable::nfreeze { version => 1, objs => $objs }; 484 chmod SAVE_MODE, $fh;
485 syswrite $fh, $$rdata;
486 close $fh; 486 close $fh;
487 chmod SAVE_MODE, "$filename.pst~"; 487
488 if (@$objs && open my $fh, ">:raw", "$filename.pst~") {
489 chmod SAVE_MODE, $fh;
490 syswrite $fh, Storable::nfreeze { version => 1, objs => $objs };
491 close $fh;
488 rename "$filename.pst~", "$filename.pst"; 492 rename "$filename.pst~", "$filename.pst";
493 } else {
494 unlink "$filename.pst";
495 }
496
497 rename "$filename~", $filename;
489 } else { 498 } else {
490 unlink "$filename.pst"; 499 warn "FATAL: $filename~: $!\n";
491 } 500 }
492
493 chmod SAVE_MODE, "$filename~";
494 rename "$filename~", $filename;
495} 501}
496 502
497sub object_thawer_load { 503sub object_thawer_load {
498 my ($filename) = @_; 504 my ($filename) = @_;
499 505
764 defined $path or return; 770 defined $path or return;
765 771
766 unlink "$path.pst"; 772 unlink "$path.pst";
767}; 773};
768 774
769# old style persistent data, TODO: remove #d#
770*cf::mapsupport::on_swapin =
771*cf::mapsupport::on_load = sub {
772 my ($map) = @_;
773
774 my $path = $map->tmpname;
775 $path = $map->path unless defined $path;
776
777 open my $fh, "<:raw", "$path.cfperl"
778 or return; # no perl data
779
780 my $data = Storable::thaw do { local $/; <$fh> };
781
782 $data->{version} <= 1
783 or return; # too new
784
785 $map->_set_obs ($data->{obs});
786 $map->invoke (EVENT_MAP_UPGRADE);
787};
788
789attach_to_maps prio => -10000, package => cf::mapsupport::; 775attach_to_maps prio => -10000, package => cf::mapsupport::;
790 776
791############################################################################# 777#############################################################################
792# load/save perl data associated with player->ob objects 778# load/save perl data associated with player->ob objects
793 779

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines