--- cf.schmorp.de/server/lib/cf.pm 2006/08/30 16:30:37 1.59 +++ cf.schmorp.de/server/lib/cf.pm 2006/08/31 06:23:19 1.60 @@ -480,23 +480,31 @@ sub object_freezer_save { my ($filename, $rdata, $objs) = @_; - if (open my $fh, ">:raw", "$filename~") { - chmod SAVE_MODE, $fh; - syswrite $fh, $$rdata; - close $fh; + if (length $$rdata) { + warn sprintf "saving %s (%d,%d)\n", + $filename, length $$rdata, scalar @$objs; - if (@$objs && open my $fh, ">:raw", "$filename.pst~") { + if (open my $fh, ">:raw", "$filename~") { chmod SAVE_MODE, $fh; - syswrite $fh, Storable::nfreeze { version => 1, objs => $objs }; + syswrite $fh, $$rdata; close $fh; - rename "$filename.pst~", "$filename.pst"; + + if (@$objs && open my $fh, ">:raw", "$filename.pst~") { + chmod SAVE_MODE, $fh; + syswrite $fh, Storable::nfreeze { version => 1, objs => $objs }; + close $fh; + rename "$filename.pst~", "$filename.pst"; + } else { + unlink "$filename.pst"; + } + + rename "$filename~", $filename; } else { - unlink "$filename.pst"; + warn "FATAL: $filename~: $!\n"; } - - rename "$filename~", $filename; } else { - warn "FATAL: $filename~: $!\n"; + unlink $filename; + unlink "$filename.pst"; } } @@ -781,6 +789,7 @@ @_, map all_objects ($_->inv), @_ } +# TODO: compatibility cruft, remove when no longer needed attach_to_players on_load => sub { my ($pl, $path) = @_;