Allow write() to fall back on the file the config was loaded from.

This commit is contained in:
Chris 2014-02-15 21:21:30 +00:00
parent 3a69c17e4d
commit 40ccd0d3a6

View File

@ -116,7 +116,7 @@ sub new {
# this returns false, $obj -> {"errstr"} will contain the reason why.
sub read {
my $self = shift;
my $filename = shift or return set_error("No file name provided");
my $filename = shift or return $self -> self_error("No file name provided");
# The current section, default it to '_' in case there is no leading [section]
my $section = "_";
@ -162,6 +162,9 @@ sub read {
close(CFILE);
# Store the filename for later use
$self -> {"filename"} = $filename;
return 1;
}
@ -219,13 +222,17 @@ sub as_text {
# occurred.
sub write {
my $self = shift;
my $filename = shift or return set_error("No file name provided");
my $filename = shift || $self -> {"filename"};
my @skip = @_;
return $self -> self_error("Failed to save '$filename': $!")
return $self -> self_error("Write failed: no filename available.")
if(!$filename);
return $self -> self_error("Failed to open '$filename' for writing: $!")
if(!open(CFILE, ">:utf8", $filename));
print CFILE $self -> as_text(@skip);
print CFILE $self -> as_text(@skip)
or return $self -> self_error("Write to '$filename' failed: $!")
close(CFILE);