X-Git-Url: https://jxself.org/git/?p=ssic.git;a=blobdiff_plain;f=src%2Fssic.pl;h=750c77be6b9021a72284ed8cec2d844390c52c5d;hp=d678556be7716789249ad70d4c540e31f266ad71;hb=efba28621cc2c3e93a750a1150c4a08170d56a65;hpb=da9d788a9059ee88240cbbcc5096abc553b1cf1f diff --git a/src/ssic.pl b/src/ssic.pl index d678556..750c77b 100644 --- a/src/ssic.pl +++ b/src/ssic.pl @@ -111,8 +111,8 @@ sub compile my $var_name; my $var_value; - if ($input eq $output) { - error(4, "Input and output files are equal\n"); + if ($input eq $output and $input ne "-") { + warning("Input and output files are equal\n"); } if ($input eq "-") { @@ -127,8 +127,8 @@ sub compile if ($output eq "-") { $output_fh = *STDOUT; } else { - if (not open($output_fh, ">", $output)) { - error(4, "%s: %s\n", $output, $!); + if (not open($output_fh, ">", $output . "~")) { + error(4, "%s: %s\n", $output . "~", $!); } } @@ -152,6 +152,17 @@ sub compile } print($output_fh $ssi->process(<$input_fh>)); + + if ($input ne "-") { + close($input_fh); + } + if ($output ne "-") { + close($output_fh); + } + + if (not rename($output . "~", $output)) { + error(4, "%s: %s\n", $output, $!); + } } main();