--- mirror_cpan.pl 2003/09/04 14:39:17 1.4 +++ mirror_cpan.pl 2004/01/20 19:48:05 1.5 @@ -35,6 +35,7 @@ use File::Spec::Functions qw(catfile devnull); use File::Find qw(find); use Getopt::Long; +use IO::Zlib; ## LWP - use URI (); @@ -129,13 +130,13 @@ sub clean_unmirrored { find sub { - return if /\.readme$/; # don't erase readme files + return if /\.readme.gz$/; # don't erase readme files check_readme($File::Find::name); return unless -f and not $mirrored{$File::Find::name}; print "$File::Find::name ... removed\n" if $TRACE; unlink $_ or warn "Cannot remove $File::Find::name: $!"; my $path = $File::Find::name; - if ($path =~ s/(\.tar\.gz|\.tgz)/.readme/g && -f $path) { + if ($path =~ s/(\.tar\.gz|\.tgz)/.readme.gz/g && -f $path) { # only if we erase archive also! unlink $path or warn "Cannot remove $path: $!"; } @@ -147,19 +148,23 @@ my $path = shift; # fixup some things my $readme_path = $path; - $readme_path =~ s/\.(tar\.gz|\.tgz)/.readme/g || return; # just .tar.gz is supported! + $readme_path =~ s/\.(tar\.gz|\.tgz)/.readme.gz/g || return; # just .tar.gz is supported! my $at = Archive::Tar->new($path) or die "Archive::Tar failed on $path\n"; if (! -f $readme_path) { # create readme file - my @readmes = sort grep m{^[^/]+/README\z}, $at->list_files(); + my @readmes = sort grep m{^[^/]+/README\z}i, $at->list_files(); my $readme; if ($readme = shift @readmes) { - open(R, "> $readme_path") || die "Cannot create $readme_path: $!"; - print R $at->get_content($readme); - close(R); + my $fh = IO::Zlib->new($readme_path, "wb"); + if (defined $fh) { + print $fh $at->get_content($readme); + $fh->close; + } else { + die "Cannot create $readme_path: $!"; + } print "$readme_path ... created\n" if $TRACE;