X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=remoteglot.pl;h=fb74e6eab5c0d04c454b532ae047ed509fe2141c;hb=a8b50dfb8117c5495784ae330ccefa8db2355e83;hp=d82c20bed25034896c341b979aa9a5b36bb0fac9;hpb=88d92e1d44ad96601281d9ce96a525ac7df90757;p=remoteglot-book diff --git a/remoteglot.pl b/remoteglot.pl index d82c20b..fb74e6e 100755 --- a/remoteglot.pl +++ b/remoteglot.pl @@ -742,11 +742,18 @@ sub output_json { } $json->{'refutation_lines'} = \%refutation_lines; - open my $fh, ">", $remoteglotconf::json_output . ".tmp" + my $encoded = JSON::XS::encode_json($json); + atomic_set_contents($remoteglotconf::json_output, $encoded); +} + +sub atomic_set_contents { + my ($filename, $contents) = @_; + + open my $fh, ">", $filename . ".tmp" or return; - print $fh JSON::XS::encode_json($json); + print $fh $contents; close $fh; - rename($remoteglotconf::json_output . ".tmp", $remoteglotconf::json_output); + rename($filename . ".tmp", $filename); } sub uciprint {