$inputfilename = '/dev/null' if !$inputfilename;
- # same algorythm as used inside SA
+ # same algorithm as used inside SA
my $fd = fileno (STDIN);
close STDIN;
$self->{debug} = $param{debug} || 0;
$self->{mime} = {};
+ $self->{filenames} = {};
- $self->{ufid} = 0; # counter to creat unique file names
- $self->{udid} = 0; # counter to creat unique dir names
- $self->{ulid} = 0; # counter to creat unique link names
+ $self->{ufid} = 0; # counter to create unique file names
+ $self->{udid} = 0; # counter to create unique dir names
+ $self->{ulid} = 0; # counter to create unique link names
$self->{todo} = [];
my $ratio = $usize/$compsize;
- die "compresion ratio too large (> $self->{maxratio})"
+ die "compression ratio too large (> $self->{maxratio})"
if $ratio > $self->{maxratio};
}
my $sizediff = $csize ? $size - $csize : $size;
- die "compresion ratio too large (> $self->{maxratio})"
+ die "compression ratio too large (> $self->{maxratio})"
if $self->{maxratio} && (($self->{size} + $sizediff) > $self->{ratioquota});
die "archive too large (> $self->{quota})"
sub add_glob_mime_type {
my ($self, $filename) = @_;
- if (my $ct = xdg_mime_get_mime_type_from_file_name (basename ($filename))) {
+ my $basename = basename($filename);
+ $self->{filenames}->{$basename} = 1;
+
+ if (my $ct = xdg_mime_get_mime_type_from_file_name($basename)) {
$self->{mime}->{$ct} = 1 if $ct ne 'application/octet-stream';
}
}
die "unable to create LibArchive object" if !$a;
LibArchive::archive_read_support_format_all ($a);
- LibArchive::archive_read_support_compression_all ($a);
+ LibArchive::archive_read_support_filter_all ($a);
eval {
run_with_timeout ($timeout, sub {
my $err = $@;
LibArchive::archive_read_close($a);
- LibArchive::archive_read_finish($a);
+ LibArchive::archive_read_free($a);
die $err if $err;
# content types (detected by magic numbers and file extension)
# Extracted files are stored inside 'tempdir'.
#
-# returns: true if file is archive, undef otherwhise
+# returns: true if file is archive, undef otherwise
sub unpack_archive {
my ($self, $filename, $ct) = @_;