Initial Commit
This commit is contained in:
158
database/perl/vendor/lib/Compress/unLZMA.pm
vendored
Normal file
158
database/perl/vendor/lib/Compress/unLZMA.pm
vendored
Normal file
@@ -0,0 +1,158 @@
|
||||
package Compress::unLZMA;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
require Exporter;
|
||||
|
||||
our @ISA = qw(Exporter);
|
||||
|
||||
our %EXPORT_TAGS = ( 'all' => [ qw(
|
||||
uncompress uncompressfile
|
||||
) ] );
|
||||
|
||||
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
|
||||
|
||||
our $VERSION = '0.05';
|
||||
|
||||
require XSLoader;
|
||||
XSLoader::load('Compress::unLZMA', $VERSION);
|
||||
|
||||
sub compress {
|
||||
die "not implemented!\n";
|
||||
}
|
||||
|
||||
sub compressfile {
|
||||
die "not implemented!\n";
|
||||
}
|
||||
|
||||
sub uncompress {
|
||||
my ($data) = @_;
|
||||
|
||||
return undef if (length($data) < 14);
|
||||
|
||||
my $properties = substr($data, 0, 5);
|
||||
|
||||
my $size = 0;
|
||||
for (my $ii = 0; $ii < 4; $ii++) {
|
||||
my $b = ord(substr($data, $ii + 5, 1));
|
||||
$size += $b << ($ii * 8);
|
||||
}
|
||||
|
||||
for (my $ii = 0; $ii < 4; $ii++) {
|
||||
my $b = ord(substr($data, $ii + 9, 1));
|
||||
if ($b != 0) {
|
||||
return undef;
|
||||
}
|
||||
}
|
||||
|
||||
if (ord(substr($properties, 0, 1)) >= (9 * 5 * 5)) {
|
||||
return undef;
|
||||
}
|
||||
|
||||
if ( $size == 0 ) { # empty file: no data to uncompress
|
||||
return '';
|
||||
}
|
||||
|
||||
$data = substr($data, 13);
|
||||
|
||||
my $result = uncompressdata($data, length($data), $size, $properties);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Compress::unLZMA - Interface to LZMA decompression library
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Compress::unLZMA qw(uncompress uncompressfile);
|
||||
my $data = uncompressfile('foo.lzma');
|
||||
my $data = uncompress($content);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
LZMA is default and general compression method of 7z format
|
||||
in 7-Zip program. LZMA provides high compression ratio and very
|
||||
fast decompression.
|
||||
|
||||
This module is based on the LZMA SDK which provides a cross-platform
|
||||
implementation of the LZMA decompression algorithm in ANSI C.
|
||||
|
||||
From SDK lzma.txt file:
|
||||
|
||||
LZMA decompression code was ported from original C++ sources to C.
|
||||
Also it was simplified and optimized for code size.
|
||||
But it is fully compatible with LZMA from 7-Zip.
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=over 4
|
||||
|
||||
=item $data = uncompress($content)
|
||||
|
||||
Uncompress $data. if successful, it returns the uncompressed data.
|
||||
Otherwise it returns undef and $@ contains the error message.
|
||||
|
||||
The source buffer can be either be a scalar or a scalar reference.
|
||||
|
||||
=item $data = uncompressfile($file)
|
||||
|
||||
Uncompress the file $file. if successful, it returns the uncompressed data.
|
||||
Otherwise it returns undef and $@ contains the error message.
|
||||
|
||||
=back
|
||||
|
||||
=head1 CAVEATS
|
||||
|
||||
This version only implements in-memory decompression (patches are welcomed).
|
||||
|
||||
There is no way to recognize a valid LZMA encoded file with the SDK.
|
||||
So, in some cases, you can crash your script if you try to uncompress
|
||||
a non valid LZMA encoded file.
|
||||
|
||||
=head1 REQUESTS & BUGS
|
||||
|
||||
Please report any requests, suggestions or bugs via the RT bug-tracking system
|
||||
at http://rt.cpan.org/ or email to bug-Compress-unLZMA\@rt.cpan.org.
|
||||
|
||||
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Compress-unLZMA is the RT queue for Compress::unLZMA.
|
||||
Please check to see if your bug has already been reported.
|
||||
|
||||
=head1 MAINTAINER
|
||||
|
||||
Adriano Ferreira, ferreira@cpan.org
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2004
|
||||
|
||||
Fabien Potencier, fabpot@cpan.org
|
||||
|
||||
This software may be freely copied and distributed under the same
|
||||
terms and conditions as Perl.
|
||||
|
||||
=head1 LZMA COPYRIGHT
|
||||
|
||||
LZMA SDK 4.01 Copyright (C) 1999-2004 Igor Pavlov 2004-02-15
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
LZMA SDK also can be available under a proprietary license for
|
||||
those who cannot use the GNU LGPL in their code. To request
|
||||
such proprietary license or any additional consultations,
|
||||
write to support@7-zip.org
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
perl(1), http://www.7-zip.org/.
|
||||
|
||||
=cut
|
||||
Reference in New Issue
Block a user