# Blosxom Plugin: writeback_update # Author: iso_archiver # Version: 2006.11.15 # Blosxom Home/Docs/Licensing: http://www.blosxom.com/ # override modified_time. package writeback_update; use strict; # --- Configurable variables ----------- my $datadir = "$blosxom::plugin_state_dir/writeback/"; # -------------------------------------- use CGI qw/:standard/; sub start { return param('update') ? 1 : 0; } sub head { my ($wished_time, $modified_time); my @file_names = &getfiles($datadir); foreach my $file (@file_names) { if (open(FILE, $file)) { foreach my $line (reverse()) { if ($line =~ /date: (\d+)/) { $wished_time = $1; last; } } close(FILE); } $modified_time = (stat($file))[9]; next if $wished_time == $modified_time; utime(time, $wished_time, $file); } return 1; } sub getfiles { my $dir = $_[0]; my @files = (); my @file_names = (); $dir .= "/" if ($dir =~ /[^\/]$/); if (opendir(DIR, $dir)) { @files = readdir(DIR); closedir(DIR); } foreach my $file (@files) { next if $file =~ /\.+$/; if (-d "$dir$file") { my @subdir = &getfiles("$dir$file"); @file_names = (@file_names, @subdir); } else { push(@file_names, "$dir$file"); } } return @file_names; } 1;