--- lib/PXElator/upstream.pm 2009/08/19 17:00:46 266 +++ lib/PXElator/upstream.pm 2010/07/21 16:17:46 508 @@ -6,11 +6,14 @@ use Data::Dump qw/dump/; use LWP::Simple qw/mirror RC_NOT_MODIFIED/; -use Storable; use server; +use once; sub mirror_file { my ( $url, $file ) = @_; + + return if ! once::first_time $url; + warn "mirror_file $url -> $file\n"; mirror( $url, $file ) == RC_NOT_MODIFIED @@ -19,20 +22,9 @@ ; } -my $once_path = '/tmp/pxelator.once'; -our $just_once = retrieve $once_path if -e $once_path; -sub first_time { - my $what = shift; - return if $just_once->{$what}++; - store $just_once, $once_path; - return 1; -} - sub iso { my $url = shift; - return if ! first_time($url); - my $name = (caller(1))[3]; $name =~ s{config::}{} || die "caller isn't package config !"; @@ -41,7 +33,7 @@ my $dir = "$server::base_dir/iso"; mkdir $dir unless -e $dir; - my $file = $1 if $url =~ m{/([^/]+\.iso$)}i; + my $file = $1 if $url =~ m{/([^/]+\.iso)}i; die "can't find iso file in $url" unless $file; my $iso = "$dir/$file"; @@ -75,18 +67,7 @@ foreach my $file ( @files ) { mirror_file( "$url/$file", "$path/$file" ) - if ! -e "$path/$file" || first_time( "$url/$file" ); - } -} - -sub mkpath { - my $file = shift; - - my @file_parts = split m{/}, $file; - foreach ( 1 .. $#file_parts - 1 ) { - my $path = splice @file_parts, 0, $_; - warn "? $path\n"; - mkdir $path unless -e $path; + if ! -e "$path/$file" || once::first_time( "$url/$file" ); } }