IO-Compress
view release on metacpan or search on metacpan
bin/zipdetails view on Meta::CPAN
$opt_use_LanguageEncodingFlag = $opt_value ;
}
sub debugEncoding
{
if (@_)
{
$opt_Debug_Encoding = 1 ;
}
return $opt_Debug_Encoding ;
}
sub encodingInfo
{
return
unless $opt_Encoding_Enabled && $opt_Debug_Encoding ;
my $enc = TextEncoding::getNativeLocaleName();
my $from = $opt_EncodingFrom->name();
my $to = $opt_EncodingTo->name();
::debug undef, "Debug Encoding Enabled",
"System Default Encoding: '$enc'",
"Encoding used when reading from zip file: '$from'",
"Encoding used for display output: '$to'";
}
sub cleanEval
{
chomp $_[0] ;
$_[0] =~ s/ at .+ line \d+\.$// ;
return $_[0];
}
sub decode
{
my $name = shift ;
my $type = shift ;
my $LanguageEncodingFlag = shift ;
return $name
if ! $opt_Encoding_Enabled ;
# TODO - check for badly formed content
if ($LanguageEncodingFlag && $opt_use_LanguageEncodingFlag)
{
# use "utf-8-strict" to catch invalid codepoints
eval { $name = Encode::decode('utf-8-strict', $name, Encode::FB_CROAK ) } ;
::warning $FH->tell() - length $name, "Could not decode 'UTF-8' $type: " . cleanEval $@
if $@ ;
}
else
{
eval { $name = $opt_EncodingFrom->decode($name, Encode::FB_CROAK ) } ;
::warning $FH->tell() - length $name, "Could not decode '" . $opt_EncodingFrom->name() . "' $type: " . cleanEval $@
if $@;
}
# remove any BOM
$name =~ s/^\x{FEFF}//;
return $name ;
}
sub encode
{
my $name = shift ;
my $type = shift ;
my $LanguageEncodingFlag = shift ;
return $name
if ! $opt_Encoding_Enabled;
if ($LanguageEncodingFlag && $opt_use_LanguageEncodingFlag)
{
eval { $name = Encode::encode('utf8', $name, Encode::FB_CROAK ) } ;
::warning $FH->tell() - length $name, "Could not encode 'utf8' $type: " . cleanEval $@
if $@ ;
}
else
{
eval { $name = $opt_EncodingTo->encode($name, Encode::FB_CROAK ) } ;
::warning $FH->tell() - length $name, "Could not encode '" . $opt_EncodingTo->name() . "' $type: " . cleanEval $@
if $@;
}
return $name;
}
}
{
package Nesting;
use Data::Dumper;
my @nestingStack = ();
my %encapsulations;
my %inner2outer;
my $encapsulationCount = 0;
my %index2entry ;
my %offset2entry ;
# my %localOffset2cdEntry;
sub clearStack
{
@nestingStack = ();
%encapsulations = ();
%inner2outer = ();
%index2entry = ();
%offset2entry = ();
$encapsulationCount = 0;
}
sub dump
{
my $indent = shift // 0;
for my $offset (sort {$a <=> $b} keys %offset2entry)
( run in 1.277 second using v1.01-cache-2.11-cpan-2398b32b56e )