… | |
… | |
385 | } |
385 | } |
386 | |
386 | |
387 | sub object_freezer_save { |
387 | sub object_freezer_save { |
388 | my ($filename, $objs) = @_; |
388 | my ($filename, $objs) = @_; |
389 | |
389 | |
390 | $filename .= ".pst"; |
|
|
391 | |
|
|
392 | if (@$objs) { |
390 | if (@$objs) { |
393 | open my $fh, ">:raw", "$filename~"; |
391 | open my $fh, ">:raw", "$filename.pst~"; |
394 | chmod $fh, SAVE_MODE; |
|
|
395 | syswrite $fh, Storable::nfreeze { version => 1, objs => $objs }; |
392 | syswrite $fh, Storable::nfreeze { version => 1, objs => $objs }; |
396 | close $fh; |
393 | close $fh; |
|
|
394 | chmod SAVE_MODE, "$filename.pst~"; |
397 | rename "$filename~", $filename; |
395 | rename "$filename.pst~", "$filename.pst"; |
398 | } else { |
396 | } else { |
399 | unlink $filename; |
397 | unlink "$filename.pst"; |
400 | } |
398 | } |
|
|
399 | |
|
|
400 | chmod SAVE_MODE, "$filename~"; |
|
|
401 | rename "$filename~", $filename; |
401 | } |
402 | } |
402 | |
403 | |
403 | sub object_thawer_load { |
404 | sub object_thawer_load { |
404 | my ($filename) = @_; |
405 | my ($filename) = @_; |
405 | |
406 | |
… | |
… | |
667 | my ($map) = @_; |
668 | my ($map) = @_; |
668 | |
669 | |
669 | my $path = $map->tmpname; |
670 | my $path = $map->tmpname; |
670 | defined $path or return; |
671 | defined $path or return; |
671 | |
672 | |
672 | unlink "$path.cfperl"; |
|
|
673 | unlink "$path.pst"; |
673 | unlink "$path.pst"; |
674 | }; |
674 | }; |
675 | |
675 | |
|
|
676 | # old style persistent data, TODO: remove #d# |
676 | *cf::mapsupport::on_swapin = |
677 | *cf::mapsupport::on_swapin = |
677 | *cf::mapsupport::on_load = sub { |
678 | *cf::mapsupport::on_load = sub { |
678 | my ($map) = @_; |
679 | my ($map) = @_; |
679 | |
680 | |
680 | my $path = $map->tmpname; |
681 | my $path = $map->tmpname; |