/[libconf]/libconf/perl-Libconf/Libconf.pm
ViewVC logotype

Diff of /libconf/perl-Libconf/Libconf.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.22 by dams, Fri May 2 13:50:15 2003 UTC revision 1.23 by chl, Tue May 6 20:37:05 2003 UTC
# Line 120  my %validation = (); Line 120  my %validation = ();
120  #                );  #                );
121    
122  sub new {  sub new {
123      my ($pkg, $filename, $template_name, $validation_name, $template_filename) = @_;      my ($pkg, $filename, $template_name, $validation_name, $template_filename, $safe_write) = @_;
124      -e $filename or die ("$filename not found");      -e $filename or die ("$filename not found");
125      $template_filename ?      $template_filename ?
126        require $template_filename : eval "require Libconf::templates::$template_name" . '_template';        require $template_filename : eval "require Libconf::templates::$template_name" . '_template';
# Line 129  sub new { Line 129  sub new {
129      $out{template_name} = $template_name;      $out{template_name} = $template_name;
130      $validation_name and $out{validation_name} = $validation_name;      $validation_name and $out{validation_name} = $validation_name;
131      $out{atoms} = [];      $out{atoms} = [];
132        $safe_write and $out{timestamp} = getTimestamp($filename);
133      readConf(\%out);      readConf(\%out);
134      bless \%out, $pkg;      bless \%out, $pkg;
135      \%out;      \%out;
136  }  }
137    
138    sub getTimestamp {
139        my ($filename) = @_;
140        my @stat;
141        @stat = stat($filename);
142        return($stat[9]);
143    }
144    
145  sub readConf {  sub readConf {
146      my ($out) = @_;      my ($out) = @_;
147      my $filename = $out->{filename};      my $filename = $out->{filename};
# Line 235  sub writeConf { Line 243  sub writeConf {
243      $filename ||= $out->{filename};      $filename ||= $out->{filename};
244      my $template_name = $out->{template_name};      my $template_name = $out->{template_name};
245      my @out_atoms = @{$out->{atoms}};      my @out_atoms = @{$out->{atoms}};
246        if (defined $out->{timestamp} && (getTimestamp($filename) != $out->{timestamp})) {
247            print "Warning $filename has changed !\n";
248        }
249      local *F;      local *F;
250      open F, "> $filename" or die "cannot create config file $filename";      open F, "> $filename" or die "cannot create config file $filename";
251      foreach my $atom (@out_atoms) {      foreach my $atom (@out_atoms) {

Legend:
Removed from v.1.22  
changed lines
  Added in v.1.23

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26