diff options
Diffstat (limited to 'lib/SlackBuild/Archive.pm')
-rw-r--r-- | lib/SlackBuild/Archive.pm | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/lib/SlackBuild/Archive.pm b/lib/SlackBuild/Archive.pm index 03fd17b..ac6b6af 100644 --- a/lib/SlackBuild/Archive.pm +++ b/lib/SlackBuild/Archive.pm @@ -10,6 +10,7 @@ use File::Spec; use Log::Log4perl; use Carp; +our $AUTOLOAD; *AUTOLOAD = \&SlackBuild::URI::AUTOLOAD; sub new { @@ -29,14 +30,6 @@ sub dir { return @{$self->{_dir}} } -sub iterate { - my ($self, $cb) = @_; - for (my $i = 0; my $file = $self->dir($i); $i++) { - return 0 unless &{$cb}($file); - } - return 1; -} - sub add_file { my $self = shift; push @{$self->{_dir}}, map { @@ -64,15 +57,24 @@ sub download { croak "bad number of arguments" unless @_ == 2; my ($self, $dst) = @_; my (undef, $tmp) = tempfile(DIR => dirname($dst), UNLINK => 1); - unless ($self->SUPER::download($tmp)) { - return $self->error($self->SUPER::download_status); + my $result = $self->SUPER::download($tmp); + if ($result) { + $result = SlackBuild::Archive::Extractor + ->backend($result, $tmp, $dst) + ->extract; + if ($result) { + $self->_read_info($dst); + } } - unless (SlackBuild::Archive::Extractor->backend($self, $tmp, $dst) - ->extract) { - return 0; + return $result; +} + +sub content_type { + my ($self, $newtype) = @_; + if (defined($newtype)) { + $self->{_content_type} = $newtype; } - $self->_read_info($dst); - return 1; + return $self->{_content_type}; } sub _read_info { |