diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2017-11-26 21:20:52 +0100 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2017-11-26 21:20:52 +0100 |
commit | 2f104feb62d8c9a6c27c0090a310afeefff4af09 (patch) | |
tree | bb358f5ac0d85da6185db5b0d51e67e7b4e49dba /lib/SlackBuild/Archive | |
parent | 0150f4a7597a8eb490d0fb8ddf63b92e154e489d (diff) | |
download | slackbuilder-2f104feb62d8c9a6c27c0090a310afeefff4af09.tar.gz slackbuilder-2f104feb62d8c9a6c27c0090a310afeefff4af09.tar.bz2 |
Use content type of the downloaded resource to select the backend for its handling
* lib/SlackBuild/Archive/Extractor.pm (_backend): Use
archive->downloaded_html to select the backend.
* lib/SlackBuild/Archive/Extractor/HTTP.pm (extract): Use
$uri->downloaded_html instead of is_html.
(is_html): Remove.
* lib/SlackBuild/URI.pm (downloaded_html): New method.
Diffstat (limited to 'lib/SlackBuild/Archive')
-rw-r--r-- | lib/SlackBuild/Archive/Extractor.pm | 22 | ||||
-rw-r--r-- | lib/SlackBuild/Archive/Extractor/HTTP.pm | 20 |
2 files changed, 5 insertions, 37 deletions
diff --git a/lib/SlackBuild/Archive/Extractor.pm b/lib/SlackBuild/Archive/Extractor.pm index f9f8527..90a833f 100644 --- a/lib/SlackBuild/Archive/Extractor.pm +++ b/lib/SlackBuild/Archive/Extractor.pm @@ -34,25 +34,11 @@ sub extract { sub _backend { my $self = shift; - - if (open(my $fh, '<', $self->tempfile)) { - my $s; - while (<$fh>) { - next if /^\s+$/; - chomp; - s/^\s+//; - $s = $_; - last; - } - close $fh; - return $self->error("empty file") unless defined $s; - if ($s =~ m{^<}) { - return bless $self, 'SlackBuild::Archive::Extractor::HTTP'; - } - return bless $self, 'SlackBuild::Archive::Extractor::Tar'; + + if ($self->archive->downloaded_html) { + return bless $self, 'SlackBuild::Archive::Extractor::HTTP'; } else { - $self->error("can't open file ".$self->tempfile.": $!"); - return $self; + return bless $self, 'SlackBuild::Archive::Extractor::Tar'; } } diff --git a/lib/SlackBuild/Archive/Extractor/HTTP.pm b/lib/SlackBuild/Archive/Extractor/HTTP.pm index 9d1f335..8967406 100644 --- a/lib/SlackBuild/Archive/Extractor/HTTP.pm +++ b/lib/SlackBuild/Archive/Extractor/HTTP.pm @@ -45,7 +45,7 @@ sub extract { . $uri->download_status); } my $destfile = File::Spec->catfile($dst, $file); - if ($self->is_html($tmp) + if ($uri->downloaded_html && $self->_html_list($tmp, File::Spec->catfile($subdir, $file))) { ; } else { @@ -77,22 +77,4 @@ sub _html_list { return $p->parse_file($filename); } -sub is_html { - my ($self, $file) = @_; - if (open(my $fh, '<', $file)) { - my $s; - while (<$fh>) { - next if /^\s+$/; - chomp; - s/^\s+//; - $s = $_; - last; - } - close $fh; - return 0 unless defined $s; - return $s =~ m{^<}; - } - return 0; -} - 1; |