return readFile($filename) eq unpack("u", $uue) ;
}
-sub isRawFormat
+#sub isRawFormat
+#{
+# my $class = shift;
+# # TODO -- add Lzma here?
+# my %raw = map { $_ => 1 } qw( RawDeflate );
+#
+# return defined $raw{$class};
+#}
+
+
+
+my %TOP = (
+ 'IO::Uncompress::AnyInflate' => { Inverse => 'IO::Compress::Gzip',
+ Error => 'AnyInflateError',
+ TopLevel => 'anyinflate',
+ Raw => 0,
+ },
+
+ 'IO::Uncompress::AnyUncompress' => { Inverse => 'IO::Compress::Gzip',
+ Error => 'AnyUncompressError',
+ TopLevel => 'anyuncompress',
+ Raw => 0,
+ },
+
+ 'IO::Compress::Gzip' => { Inverse => 'IO::Uncompress::Gunzip',
+ Error => 'GzipError',
+ TopLevel => 'gzip',
+ Raw => 0,
+ },
+ 'IO::Uncompress::Gunzip' => { Inverse => 'IO::Compress::Gzip',
+ Error => 'GunzipError',
+ TopLevel => 'gunzip',
+ Raw => 0,
+ },
+
+ 'IO::Compress::Deflate' => { Inverse => 'IO::Uncompress::Inflate',
+ Error => 'DeflateError',
+ TopLevel => 'deflate',
+ Raw => 0,
+ },
+ 'IO::Uncompress::Inflate' => { Inverse => 'IO::Compress::Deflate',
+ Error => 'InflateError',
+ TopLevel => 'inflate',
+ Raw => 0,
+ },
+
+ 'IO::Compress::RawDeflate' => { Inverse => 'IO::Uncompress::RawInflate',
+ Error => 'RawDeflateError',
+ TopLevel => 'rawdeflate',
+ Raw => 1,
+ },
+ 'IO::Uncompress::RawInflate' => { Inverse => 'IO::Compress::RawDeflate',
+ Error => 'RawInflateError',
+ TopLevel => 'rawinflate',
+ Raw => 1,
+ },
+
+ 'IO::Compress::Zip' => { Inverse => 'IO::Uncompress::Unzip',
+ Error => 'ZipError',
+ TopLevel => 'zip',
+ Raw => 0,
+ },
+ 'IO::Uncompress::Unzip' => { Inverse => 'IO::Compress::Zip',
+ Error => 'UnzipError',
+ TopLevel => 'unzip',
+ Raw => 0,
+ },
+
+ 'IO::Compress::Bzip2' => { Inverse => 'IO::Uncompress::Bunzip2',
+ Error => 'Bzip2Error',
+ TopLevel => 'bzip2',
+ Raw => 0,
+ },
+ 'IO::Uncompress::Bunzip2' => { Inverse => 'IO::Compress::Bzip2',
+ Error => 'Bunzip2Error',
+ TopLevel => 'bunzip2',
+ Raw => 0,
+ },
+
+ 'IO::Compress::Lzop' => { Inverse => 'IO::Uncompress::UnLzop',
+ Error => 'LzopError',
+ TopLevel => 'lzop',
+ Raw => 0,
+ },
+ 'IO::Uncompress::UnLzop' => { Inverse => 'IO::Compress::Lzop',
+ Error => 'UnLzopError',
+ TopLevel => 'unlzop',
+ Raw => 0,
+ },
+
+ 'IO::Compress::Lzf' => { Inverse => 'IO::Uncompress::UnLzf',
+ Error => 'LzfError',
+ TopLevel => 'lzf',
+ Raw => 0,
+ },
+ 'IO::Uncompress::UnLzf' => { Inverse => 'IO::Compress::Lzf',
+ Error => 'UnLzfError',
+ TopLevel => 'unlzf',
+ Raw => 0,
+ },
+
+ 'IO::Compress::Lzma' => { Inverse => 'IO::Uncompress::UnLzma',
+ Error => 'LzmaError',
+ TopLevel => 'lzma',
+ Raw => 1,
+ },
+ 'IO::Uncompress::UnLzma' => { Inverse => 'IO::Compress::Lzma',
+ Error => 'UnLzmaError',
+ TopLevel => 'unlzma',
+ Raw => 1,
+ },
+
+ 'IO::Compress::Xz' => { Inverse => 'IO::Uncompress::UnXz',
+ Error => 'XzError',
+ TopLevel => 'xz',
+ Raw => 0,
+ },
+ 'IO::Uncompress::UnXz' => { Inverse => 'IO::Compress::Xz',
+ Error => 'UnXzError',
+ TopLevel => 'unxz',
+ Raw => 0,
+ },
+
+ 'IO::Compress::PPMd' => { Inverse => 'IO::Uncompress::UnPPMd',
+ Error => 'PPMdError',
+ TopLevel => 'ppmd',
+ Raw => 0,
+ },
+ 'IO::Uncompress::UnPPMd' => { Inverse => 'IO::Compress::PPMd',
+ Error => 'UnPPMdError',
+ TopLevel => 'unppmd',
+ Raw => 0,
+ },
+
+ 'IO::Compress::DummyComp' => { Inverse => 'IO::Uncompress::DummyUnComp',
+ Error => 'DummyCompError',
+ TopLevel => 'dummycomp',
+ Raw => 0,
+ },
+ 'IO::Uncompress::DummyUnComp' => { Inverse => 'IO::Compress::DummyComp',
+ Error => 'DummyUnCompError',
+ TopLevel => 'dummyunComp',
+ Raw => 0,
+ },
+);
+
+
+for my $key (keys %TOP)
{
- my $class = shift;
- my %raw = map { $_ => 1 } qw( RawDeflate );
+ no strict;
+ no warnings;
+ $TOP{$key}{Error} = \${ $key . '::' . $TOP{$key}{Error} };
+ $TOP{$key}{TopLevel} = $key . '::' . $TOP{$key}{TopLevel} ;
- return defined $raw{$class};
+ # Silence used once warning in really old perl
+ my $dummy = \${ $key . '::' . $TOP{$key}{Error} };
+
+ #$TOP{$key . "::" . $TOP{$key}{TopLevel} } = $TOP{$key};
}
sub uncompressBuffer
my $compWith = shift ;
my $buffer = shift ;
- my %mapping = ( 'IO::Compress::Gzip' => 'IO::Uncompress::Gunzip',
- 'IO::Compress::Gzip::gzip' => 'IO::Uncompress::Gunzip',
- 'IO::Compress::Deflate' => 'IO::Uncompress::Inflate',
- 'IO::Compress::Deflate::deflate' => 'IO::Uncompress::Inflate',
- 'IO::Compress::RawDeflate' => 'IO::Uncompress::RawInflate',
- 'IO::Compress::RawDeflate::rawdeflate' => 'IO::Uncompress::RawInflate',
- 'IO::Compress::Bzip2' => 'IO::Uncompress::Bunzip2',
- 'IO::Compress::Bzip2::bzip2' => 'IO::Uncompress::Bunzip2',
- 'IO::Compress::Zip' => 'IO::Uncompress::Unzip',
- 'IO::Compress::Zip::zip' => 'IO::Uncompress::Unzip',
- 'IO::Compress::Lzop' => 'IO::Uncompress::UnLzop',
- 'IO::Compress::Lzop::lzop' => 'IO::Uncompress::UnLzop',
- 'IO::Compress::Lzf' => 'IO::Uncompress::UnLzf' ,
- 'IO::Compress::Lzf::lzf' => 'IO::Uncompress::UnLzf',
- 'IO::Compress::PPMd' => 'IO::Uncompress::UnPPMd' ,
- 'IO::Compress::PPMd::ppmd' => 'IO::Uncompress::UnPPMd',
- 'IO::Compress::DummyComp' => 'IO::Uncompress::DummyUncomp',
- 'IO::Compress::DummyComp::dummycomp' => 'IO::Uncompress::DummyUncomp',
- );
my $out ;
- my $obj = $mapping{$compWith}->new( \$buffer, -Append => 1);
+ my $obj = $TOP{$compWith}{Inverse}->new( \$buffer, -Append => 1);
1 while $obj->read($out) > 0 ;
return $out ;
}
-my %ErrorMap = ( 'IO::Compress::Gzip' => \$IO::Compress::Gzip::GzipError,
- 'IO::Compress::Gzip::gzip' => \$IO::Compress::Gzip::GzipError,
- 'IO::Uncompress::Gunzip' => \$IO::Uncompress::Gunzip::GunzipError,
- 'IO::Uncompress::Gunzip::gunzip' => \$IO::Uncompress::Gunzip::GunzipError,
- 'IO::Uncompress::Inflate' => \$IO::Uncompress::Inflate::InflateError,
- 'IO::Uncompress::Inflate::inflate' => \$IO::Uncompress::Inflate::InflateError,
- 'IO::Compress::Deflate' => \$IO::Compress::Deflate::DeflateError,
- 'IO::Compress::Deflate::deflate' => \$IO::Compress::Deflate::DeflateError,
- 'IO::Uncompress::RawInflate' => \$IO::Uncompress::RawInflate::RawInflateError,
- 'IO::Uncompress::RawInflate::rawinflate' => \$IO::Uncompress::RawInflate::RawInflateError,
- 'IO::Uncompress::AnyInflate' => \$IO::Uncompress::AnyInflate::AnyInflateError,
- 'IO::Uncompress::AnyInflate::anyinflate' => \$IO::Uncompress::AnyInflate::AnyInflateError,
- 'IO::Uncompress::AnyUncompress' => \$IO::Uncompress::AnyUncompress::AnyUncompressError,
- 'IO::Uncompress::AnyUncompress::anyUncompress' => \$IO::Uncompress::AnyUncompress::AnyUncompressError,
- 'IO::Compress::RawDeflate' => \$IO::Compress::RawDeflate::RawDeflateError,
- 'IO::Compress::RawDeflate::rawdeflate' => \$IO::Compress::RawDeflate::RawDeflateError,
- 'IO::Compress::Bzip2' => \$IO::Compress::Bzip2::Bzip2Error,
- 'IO::Compress::Bzip2::bzip2' => \$IO::Compress::Bzip2::Bzip2Error,
- 'IO::Uncompress::Bunzip2' => \$IO::Uncompress::Bunzip2::Bunzip2Error,
- 'IO::Uncompress::Bunzip2::bunzip2' => \$IO::Uncompress::Bunzip2::Bunzip2Error,
- 'IO::Compress::Zip' => \$IO::Compress::Zip::ZipError,
- 'IO::Compress::Zip::zip' => \$IO::Compress::Zip::ZipError,
- 'IO::Uncompress::Unzip' => \$IO::Uncompress::Unzip::UnzipError,
- 'IO::Uncompress::Unzip::unzip' => \$IO::Uncompress::Unzip::UnzipError,
- 'IO::Compress::Lzop' => \$IO::Compress::Lzop::LzopError,
- 'IO::Compress::Lzop::lzop' => \$IO::Compress::Lzop::LzopError,
- 'IO::Uncompress::UnLzop' => \$IO::Uncompress::UnLzop::UnLzopError,
- 'IO::Uncompress::UnLzop::unlzop' => \$IO::Uncompress::UnLzop::UnLzopError,
- 'IO::Compress::Lzf' => \$IO::Compress::Lzf::LzfError,
- 'IO::Compress::Lzf::lzf' => \$IO::Compress::Lzf::LzfError,
- 'IO::Uncompress::UnLzf' => \$IO::Uncompress::UnLzf::UnLzfError,
- 'IO::Uncompress::UnLzf::unlzf' => \$IO::Uncompress::UnLzf::UnLzfError,
- 'IO::Compress::PPMd' => \$IO::Compress::PPMd::PPMdError,
- 'IO::Compress::PPMd::ppmd' => \$IO::Compress::PPMd::PPMdError,
- 'IO::Uncompress::UnPPMd' => \$IO::Uncompress::UnPPMd::UnPPMdError,
- 'IO::Uncompress::UnPPMd::unppmd' => \$IO::Uncompress::UnPPMd::UnPPMdError,
-
- 'IO::Compress::DummyComp' => \$IO::Compress::DummyComp::DummyCompError,
- 'IO::Compress::DummyComp::dummycomp'=> \$IO::Compress::DummyComp::DummyCompError,
- 'IO::Uncompress::DummyUncomp' => \$IO::Uncompress::DummyUncomp::DummyUncompError,
- 'IO::Uncompress::DummyUncomp::dummyuncomp' => \$IO::Uncompress::DummyUncomp::DummyUncompError,
- );
-
-my %TopFuncMap = ( 'IO::Compress::Gzip' => 'IO::Compress::Gzip::gzip',
- 'IO::Uncompress::Gunzip' => 'IO::Uncompress::Gunzip::gunzip',
-
- 'IO::Compress::Deflate' => 'IO::Compress::Deflate::deflate',
- 'IO::Uncompress::Inflate' => 'IO::Uncompress::Inflate::inflate',
-
- 'IO::Compress::RawDeflate' => 'IO::Compress::RawDeflate::rawdeflate',
- 'IO::Uncompress::RawInflate' => 'IO::Uncompress::RawInflate::rawinflate',
-
- 'IO::Uncompress::AnyInflate' => 'IO::Uncompress::AnyInflate::anyinflate',
- 'IO::Uncompress::AnyUncompress' => 'IO::Uncompress::AnyUncompress::anyuncompress',
-
- 'IO::Compress::Bzip2' => 'IO::Compress::Bzip2::bzip2',
- 'IO::Uncompress::Bunzip2' => 'IO::Uncompress::Bunzip2::bunzip2',
-
- 'IO::Compress::Zip' => 'IO::Compress::Zip::zip',
- 'IO::Uncompress::Unzip' => 'IO::Uncompress::Unzip::unzip',
- 'IO::Compress::Lzop' => 'IO::Compress::Lzop::lzop',
- 'IO::Uncompress::UnLzop' => 'IO::Uncompress::UnLzop::unlzop',
- 'IO::Compress::Lzf' => 'IO::Compress::Lzf::lzf',
- 'IO::Uncompress::UnLzf' => 'IO::Uncompress::UnLzf::unlzf',
- 'IO::Compress::PPMd' => 'IO::Compress::PPMd::ppmd',
- 'IO::Uncompress::UnPPMd' => 'IO::Uncompress::UnPPMd::unppmd',
- 'IO::Compress::DummyComp' => 'IO::Compress::DummyComp::dummyuncomp',
- 'IO::Uncompress::DummyUncomp' => 'IO::Uncompress::DummyUncomp::dummyuncomp',
- );
-
- %TopFuncMap = map { ($_ => $TopFuncMap{$_},
- $TopFuncMap{$_} => $TopFuncMap{$_}) }
- keys %TopFuncMap ;
-
- #%TopFuncMap = map { ($_ => \&{ $TopFuncMap{$_} ) }
- #keys %TopFuncMap ;
-
-
-my %inverse = ( 'IO::Compress::Gzip' => 'IO::Uncompress::Gunzip',
- 'IO::Compress::Gzip::gzip' => 'IO::Uncompress::Gunzip::gunzip',
- 'IO::Compress::Deflate' => 'IO::Uncompress::Inflate',
- 'IO::Compress::Deflate::deflate' => 'IO::Uncompress::Inflate::inflate',
- 'IO::Compress::RawDeflate' => 'IO::Uncompress::RawInflate',
- 'IO::Compress::RawDeflate::rawdeflate' => 'IO::Uncompress::RawInflate::rawinflate',
- 'IO::Compress::Bzip2::bzip2' => 'IO::Uncompress::Bunzip2::bunzip2',
- 'IO::Compress::Bzip2' => 'IO::Uncompress::Bunzip2',
- 'IO::Compress::Zip::zip' => 'IO::Uncompress::Unzip::unzip',
- 'IO::Compress::Zip' => 'IO::Uncompress::Unzip',
- 'IO::Compress::Lzop::lzop' => 'IO::Uncompress::UnLzop::unlzop',
- 'IO::Compress::Lzop' => 'IO::Uncompress::UnLzop',
- 'IO::Compress::Lzf::lzf' => 'IO::Uncompress::UnLzf::unlzf',
- 'IO::Compress::Lzf' => 'IO::Uncompress::UnLzf',
- 'IO::Compress::PPMd::ppmd' => 'IO::Uncompress::UnPPMd::unppmd',
- 'IO::Compress::PPMd' => 'IO::Uncompress::UnPPMd',
- 'IO::Compress::DummyComp::dummycomp' => 'IO::Uncompress::DummyUncomp::dummyuncomp',
- 'IO::Compress::DummyComp' => 'IO::Uncompress::DummyUncomp',
- );
-
-%inverse = map { ($_ => $inverse{$_}, $inverse{$_} => $_) } keys %inverse;
sub getInverse
{
my $class = shift ;
- return $inverse{$class} ;
+ return $TOP{$class}{Inverse};
}
sub getErrorRef
{
my $class = shift ;
- return $ErrorMap{$class} ;
+ return $TOP{$class}{Error};
}
sub getTopFuncRef
{
my $class = shift ;
- return \&{ $TopFuncMap{$class} } ;
+ die "Cannot find $class"
+ if ! defined $TOP{$class}{TopLevel};
+ return \&{ $TOP{$class}{TopLevel} } ;
}
sub getTopFuncName
{
my $class = shift ;
- return $TopFuncMap{$class} ;
+ return $TOP{$class}{TopLevel} ;
}
sub compressBuffer
my $compWith = shift ;
my $buffer = shift ;
- my %mapping = ( 'IO::Uncompress::Gunzip' => 'IO::Compress::Gzip',
- 'IO::Uncompress::Gunzip::gunzip' => 'IO::Compress::Gzip',
- 'IO::Uncompress::Inflate' => 'IO::Compress::Deflate',
- 'IO::Uncompress::Inflate::inflate' => 'IO::Compress::Deflate',
- 'IO::Uncompress::RawInflate' => 'IO::Compress::RawDeflate',
- 'IO::Uncompress::RawInflate::rawinflate' => 'IO::Compress::RawDeflate',
- 'IO::Uncompress::Bunzip2' => 'IO::Compress::Bzip2',
- 'IO::Uncompress::Bunzip2::bunzip2' => 'IO::Compress::Bzip2',
- 'IO::Uncompress::Unzip' => 'IO::Compress::Zip',
- 'IO::Uncompress::Unzip::unzip' => 'IO::Compress::Zip',
- 'IO::Uncompress::UnLzop' => 'IO::Compress::Lzop',
- 'IO::Uncompress::UnLzop::unlzop' => 'IO::Compress::Lzop',
- 'IO::Uncompress::UnLzp' => 'IO::Compress::Lzf',
- 'IO::Uncompress::UnLzf::unlzf' => 'IO::Compress::Lzf',
- 'IO::Uncompress::UnPPMd' => 'IO::Compress::PPMd',
- 'IO::Uncompress::UnPPMd::unppmd' => 'IO::Compress::PPMd',
- 'IO::Uncompress::AnyInflate' => 'IO::Compress::Gzip',
- 'IO::Uncompress::AnyInflate::anyinflate' => 'IO::Compress::Gzip',
- 'IO::Uncompress::AnyUncompress' => 'IO::Compress::Gzip',
- 'IO::Uncompress::AnyUncompress::anyuncompress' => 'IO::Compress::Gzip',
- 'IO::Uncompress::DummyUncomp' => 'IO::Compress::DummyComp',
- 'IO::Uncompress::DummyUncomp::dummyuncomp'=> 'IO::Compress::DummyComp',
- );
my $out ;
- my $obj = $mapping{$compWith}->new( \$out);
+ die "Cannot find $compWith"
+ if ! defined $TOP{$compWith}{Inverse};
+ my $obj = $TOP{$compWith}{Inverse}->new( \$out);
$obj->write($buffer) ;
$obj->close();
return $out ;
$file = quotemeta($file);
- return "/$string\\s+at $file line $line/" if $] >= 5.006 ;
+ #return "/$string\\s+at $file line $line/" if $] >= 5.006 ;
return "/$string\\s+at /" ;
}
{
my $string = shift ;
- return "/$string\\s+at \\(eval /" if $] > 5.006 ;
+ #return "/$string\\s+at \\(eval /" if $] > 5.006 ;
return "/$string\\s+at /" ;
}