core-cpan-diff: fix handling of file:/// urls
authorDavid Golden <dagolden@cpan.org>
Sun, 18 Jul 2010 20:02:49 +0000 (16:02 -0400)
committerDavid Golden <dagolden@cpan.org>
Sun, 18 Jul 2010 20:02:49 +0000 (16:02 -0400)
Porting/core-cpan-diff

index b6a150d..0f303c2 100755 (executable)
@@ -10,6 +10,8 @@ use warnings;
 use 5.010;
 
 use Getopt::Long;
+use File::Basename ();
+use File::Copy ();
 use File::Temp ();
 use File::Path ();
 use File::Spec;
@@ -539,6 +541,7 @@ my $lwp_simple_available;
 
 sub my_getstore {
     my ($url, $file) = @_;
+    File::Path::mkpath(File::Basename::dirname($file));
     unless (defined $lwp_simple_available) {
        eval { require LWP::Simple };
        $lwp_simple_available = $@ eq '';
@@ -546,6 +549,10 @@ sub my_getstore {
     if ($lwp_simple_available) {
        return LWP::Simple::is_success(LWP::Simple::getstore($url, $file));
     }
+    elsif ( $url =~ qr{\Afile://(?:localhost)?/} ) {
+        (my $local_path = $url) =~ s{\Afile://(?:localhost)?}{};
+        File::Copy::copy( $local_path, $file );
+    }
     else {
        return system(WGET_CMD, "-O", $file, $url) == 0;
     }