/[pxelator]/lib/PXElator/upstream.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /lib/PXElator/upstream.pm

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

revision 233 by dpavlin, Sun Aug 16 23:31:30 2009 UTC revision 271 by dpavlin, Wed Aug 19 22:48:54 2009 UTC
# Line 4  use warnings; Line 4  use warnings;
4  use strict;  use strict;
5  use autodie;  use autodie;
6    
7    use Data::Dump qw/dump/;
8  use LWP::Simple qw/mirror RC_NOT_MODIFIED/;  use LWP::Simple qw/mirror RC_NOT_MODIFIED/;
9  use Storable;  use Storable;
10  use server;  use server;
11    
12  sub mirror_file {  sub mirror_file {
13          my ( $url, $file ) = @_;          my ( $url, $file ) = @_;
14          print STDERR "mirror $url";          warn "mirror_file $url -> $file\n";
15          mirror( $url, $file )          mirror( $url, $file )
16                  == RC_NOT_MODIFIED                  == RC_NOT_MODIFIED
17                  && warn(" not modified\n")                  && warn(" not modified\n")
# Line 19  sub mirror_file { Line 20  sub mirror_file {
20  }  }
21    
22  my $once_path = '/tmp/pxelator.once';  my $once_path = '/tmp/pxelator.once';
23  our $just_once = retrieve $once_path;  our $just_once = retrieve $once_path if -e $once_path;
24  sub first_time {  sub first_time {
25          my $what = shift;          my $what = shift;
26          return if $just_once->{$what}++;          return if $just_once->{$what}++;
# Line 58  sub iso { Line 59  sub iso {
59    
60  sub files {  sub files {
61          my $url = shift;          my $url = shift;
62            my @files = @_;
63    
64            if ( ! @files ) {
65                    push @files, $1 if $url =~ s{/([^/]+)$}{};
66            }
67    
68          my $name = (caller(1))[3];          my $name = (caller(1))[3];
69          $name =~ s{config::}{} || die "caller isn't package config !";          $name =~ s{config::}{} || die "caller isn't package config !";
70    
71          my $path = "$server::base_dir/tftp/$name";          my $path = "$server::base_dir/tftp/$name";
72            mkdir $path unless -d $path;
73    
74          foreach my $file ( @_ ) {          warn "# files $url ",dump( @files ), " -> $path\n";
                 mirror_file "$url/$file", "$path/$file"  
                         if first_time( "$url/$file" );  
         }  
 }  
   
 sub mkpath {  
         my $file = shift;  
75    
76          my @file_parts = split m{/}, $file;          foreach my $file ( @files ) {
77          foreach ( 1 .. $#file_parts - 1 ) {                  mirror_file( "$url/$file", "$path/$file" )
78                  my $path = splice @file_parts, 0, $_;                          if ! -e "$path/$file" || first_time( "$url/$file" );
                 warn "? $path\n";  
                 mkdir $path unless -e $path;  
79          }          }
80  }  }
81    

Legend:
Removed from v.233  
changed lines
  Added in v.271

  ViewVC Help
Powered by ViewVC 1.1.26