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.59 by root, Wed Aug 30 16:30:37 2006 UTC vs.
Revision 1.60 by root, Thu Aug 31 06:23:19 2006 UTC

478} 478}
479 479
480sub object_freezer_save { 480sub object_freezer_save {
481 my ($filename, $rdata, $objs) = @_; 481 my ($filename, $rdata, $objs) = @_;
482 482
483 if (length $$rdata) {
484 warn sprintf "saving %s (%d,%d)\n",
485 $filename, length $$rdata, scalar @$objs;
486
483 if (open my $fh, ">:raw", "$filename~") { 487 if (open my $fh, ">:raw", "$filename~") {
484 chmod SAVE_MODE, $fh;
485 syswrite $fh, $$rdata;
486 close $fh;
487
488 if (@$objs && open my $fh, ">:raw", "$filename.pst~") {
489 chmod SAVE_MODE, $fh; 488 chmod SAVE_MODE, $fh;
490 syswrite $fh, Storable::nfreeze { version => 1, objs => $objs }; 489 syswrite $fh, $$rdata;
491 close $fh; 490 close $fh;
491
492 if (@$objs && open my $fh, ">:raw", "$filename.pst~") {
493 chmod SAVE_MODE, $fh;
494 syswrite $fh, Storable::nfreeze { version => 1, objs => $objs };
495 close $fh;
492 rename "$filename.pst~", "$filename.pst"; 496 rename "$filename.pst~", "$filename.pst";
497 } else {
498 unlink "$filename.pst";
499 }
500
501 rename "$filename~", $filename;
493 } else { 502 } else {
494 unlink "$filename.pst"; 503 warn "FATAL: $filename~: $!\n";
495 } 504 }
496
497 rename "$filename~", $filename;
498 } else { 505 } else {
499 warn "FATAL: $filename~: $!\n"; 506 unlink $filename;
507 unlink "$filename.pst";
500 } 508 }
501} 509}
502 510
503sub object_thawer_load { 511sub object_thawer_load {
504 my ($filename) = @_; 512 my ($filename) = @_;
779 787
780sub all_objects(@) { 788sub all_objects(@) {
781 @_, map all_objects ($_->inv), @_ 789 @_, map all_objects ($_->inv), @_
782} 790}
783 791
792# TODO: compatibility cruft, remove when no longer needed
784attach_to_players 793attach_to_players
785 on_load => sub { 794 on_load => sub {
786 my ($pl, $path) = @_; 795 my ($pl, $path) = @_;
787 796
788 for my $o (all_objects $pl->ob) { 797 for my $o (all_objects $pl->ob) {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines