Archive-SevenZip
view release on metacpan or search on metacpan
lib/Archive/SevenZip.pm view on Meta::CPAN
#AZ_STREAM_END
#AZ_ERROR
#AZ_FORMAT_ERROR
#AZ_IO_ERROR
],
CONSTANTS => [
qw(COMPRESSION_STORED COMPRESSION_DEFLATED)
],
);
our %sevenzip_charsetname = (
'UTF-8' => 'UTF-8',
'Latin-1' => 'WIN',
'ISO-8859-1' => 'WIN',
'' => 'DOS', # dunno what the appropriate name would be
);
our %sevenzip_stdin_support = (
#'7z' => 1,
'xz' => 1,
'lzma' => 1,
'tar' => 1,
'gzip' => 1,
'bzip2' => 1,
);
if( $^O !~ /MSWin/i ) {
# Wipe all filesystem encodings because my Debian 7z 9.20 doesn't understand them
$sevenzip_charsetname{ $_ } = ''
for keys %sevenzip_charsetname;
};
our %class_defaults = (
'7zip' => '7z',
fs_encoding => 'UTF-8',
default_options => [ "-y", "-bd" ],
type => 'zip',
system_needs_quotes => scalar ($^O =~ /MSWin/i),
);
lib/Archive/SevenZip.pm view on Meta::CPAN
$options{ members } ||= [];
$options{ archivename } = $self->{ archivename }
unless defined $options{ archivename };
if( ! exists $options{ fs_encoding }) {
$options{ fs_encoding } = defined $self->{ fs_encoding } ? $self->{ fs_encoding } : $class_defaults{ fs_encoding };
};
if( ! defined $options{ default_options }) {
$options{ default_options } = defined $self->{ default_options } ? $self->{ default_options } : $class_defaults{ default_options };
};
my @charset;
if( defined $options{ fs_encoding }) {
exists $sevenzip_charsetname{ $options{ fs_encoding }}
or croak "Unknown filesystem encoding '$options{ fs_encoding }'";
if( my $charset = $sevenzip_charsetname{ $options{ fs_encoding }}) {
push @charset, "-scs" . $sevenzip_charsetname{ $options{ fs_encoding }};
};
};
for(@{ $options{ members }}) {
$_ = encode $options{ fs_encoding }, $_;
};
my $add_quote = $self->{system_needs_quotes};
return [grep {defined $_}
add_quotes($add_quote, $self->{ '7zip' }),
@{ $options{ default_options }},
$options{ command },
@charset,
add_quotes($add_quote, @{ $options{ options }} ),
# "--",
add_quotes($add_quote, $options{ archivename } ),
add_quotes($add_quote, @{ $options{ members }} ),
];
}
sub run {
my( $self, $cmd, %options )= @_;
( run in 0.267 second using v1.01-cache-2.11-cpan-4d50c553e7e )