summaryrefslogtreecommitdiff
path: root/lib/SlackBuild/Archive.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/SlackBuild/Archive.pm')
-rw-r--r--lib/SlackBuild/Archive.pm32
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 {

Return to:

Send suggestions and report system problems to the System administrator.