… | |
… | |
476 | } |
476 | } |
477 | } |
477 | } |
478 | } |
478 | } |
479 | |
479 | |
480 | sub object_freezer_save { |
480 | sub 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 | |
497 | sub object_thawer_load { |
503 | sub object_thawer_load { |
498 | my ($filename) = @_; |
504 | my ($filename) = @_; |
499 | |
505 | |