diff options
author | Rafael Garcia-Suarez <rgarciasuarez@mandriva.org> | 2005-11-15 12:21:27 +0000 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@mandriva.org> | 2005-11-15 12:21:27 +0000 |
commit | b571220cbbbde8891200514f1ff2121a930190f6 (patch) | |
tree | 0e798981b9ba7f2c7464ad455725945619f1ea92 /Packdrakeng/zlib.pm | |
parent | 2467af4e8aad36e46336e1e260fbe9064e0392a1 (diff) | |
download | rpmtools-b571220cbbbde8891200514f1ff2121a930190f6.tar rpmtools-b571220cbbbde8891200514f1ff2121a930190f6.tar.gz rpmtools-b571220cbbbde8891200514f1ff2121a930190f6.tar.bz2 rpmtools-b571220cbbbde8891200514f1ff2121a930190f6.tar.xz rpmtools-b571220cbbbde8891200514f1ff2121a930190f6.zip |
Replace modules by wrappers around new MDV:: namespace. Add a deprecation warning.
Diffstat (limited to 'Packdrakeng/zlib.pm')
-rw-r--r-- | Packdrakeng/zlib.pm | 179 |
1 files changed, 9 insertions, 170 deletions
diff --git a/Packdrakeng/zlib.pm b/Packdrakeng/zlib.pm index c3875f0..576652a 100644 --- a/Packdrakeng/zlib.pm +++ b/Packdrakeng/zlib.pm @@ -1,180 +1,19 @@ -##- Nanar <nanardon@mandrake.org> -##- -##- This program is free software; you can redistribute it and/or modify -##- it under the terms of the GNU General Public License as published by -##- the Free Software Foundation; either version 2, or (at your option) -##- any later version. -##- -##- This program is distributed in the hope that it will be useful, -##- but WITHOUT ANY WARRANTY; without even the implied warranty of -##- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -##- GNU General Public License for more details. -##- -##- You should have received a copy of the GNU General Public License -##- along with this program; if not, write to the Free Software -##- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#- This package provides functions to use Compress::Zlib instead of gzip. - package Packdrakeng::zlib; -use strict; -use Compress::Zlib; - (our $VERSION) = q($Id$) =~ /(\d+\.\d+)/; -my $gzip_header = pack("C" . Compress::Zlib::MIN_HDR_SIZE, - Compress::Zlib::MAGIC1, Compress::Zlib::MAGIC2, - Compress::Zlib::Z_DEFLATED(), 0,0,0,0,0,0, Compress::Zlib::OSCODE); - -sub gzip_compress { - my ($pack, $sourcefh) = @_; - my ($insize, $outsize) = (0, 0); # aka uncompressed / compressed data length - - # If $sourcefh is not set, this means we want a flush(), for end_block() - # EOF, flush compress stream, adding crc - if (!defined($sourcefh)) { - if (defined($pack->{cstream_data}{object})) { - my ($cbuf, $status) = $pack->{cstream_data}{object}->flush(); - $outsize += syswrite($pack->{handle}, $cbuf); - $outsize += syswrite($pack->{handle}, pack("V V", $pack->{cstream_data}{crc}, $pack->{cstream_data}{object}->total_in())); - } - $pack->{cstream_data} = undef; - return(undef, $outsize); - } - - if (!defined $pack->{cstream_data}{object}) { - # Writing gzip header file - $outsize += syswrite($pack->{handle}, $gzip_header); - $pack->{cstream_data}{object} = deflateInit( - -Level => $pack->{level}, - # Zlib does not create a gzip header, except with this flag - -WindowBits => - MAX_WBITS(), - ); - } - - binmode $sourcefh; - while (my $lenght = sysread($sourcefh, my $buf, $pack->{bufsize})) { - $pack->{cstream_data}{crc} = crc32($buf, $pack->{cstream_data}{crc}); - my ($cbuf, $status) = $pack->{cstream_data}{object}->deflate($buf); - my $wres = syswrite($pack->{handle}, $cbuf) || 0; - $wres == length($cbuf) or do { - warn "Can't push all data to compressor\n"; - return 0, 0; - }; - $outsize += $wres; - $insize += $lenght; - } +use MDV::Packdrakeng::zlib; - ($insize, $outsize) -} - -sub gzip_uncompress { - my ($pack, $destfh, $fileinfo) = @_; - - if (!defined $fileinfo) { - $pack->{ustream_data} = undef; - return 0; - } - - if (defined($pack->{ustream_data}) && ($fileinfo->{coff} != $pack->{ustream_data}{coff} || $fileinfo->{off} < $pack->{ustream_data}{off})) { - $pack->{ustream_data} = undef; - } - - if (!defined($pack->{ustream_data})) { - $pack->{ustream_data}{coff} = $fileinfo->{coff}; - $pack->{ustream_data}{read} = 0; # uncompressed data read - $pack->{ustream_data}{x} = inflateInit( - -WindowBits => - MAX_WBITS(), - ); - $pack->{ustream_data}{cread} = 0; # Compressed data read - { - my $buf; - # get magic - if (sysread($pack->{handle}, $buf, 2) == 2) { - my @magic = unpack("C*", $buf); - $magic[0] == Compress::Zlib::MAGIC1 && $magic[1] == Compress::Zlib::MAGIC2 or do { - warn("Wrong magic header found\n"); - return -1; - }; - } else { - warn("Unexpected end of file while reading magic\n"); - return -1; - } - my ($method, $flags); - if (sysread($pack->{handle}, $buf, 2) == 2) { - ($method, $flags) = unpack("C2", $buf); - } else { - warn("Unexpected end of file while reading flags\n"); - return -1; - } +*Packdrakeng::zlib:: = *MDV::Packdrakeng::zlib::; +warn "Warning: Packdrakeng::zlib is deprecated, use MDV::Packdrakeng::zlib instead.\n"; +1; - if (sysread($pack->{handle}, $buf, 6) != 6) { - warn("Unexpected end of file while reading gzip header\n"); - return -1; - } +=head1 NAME - $pack->{ustream_data}{cread} += 12; #Gzip header fixed size is already read - if ($flags & 0x04) { - if (sysread($pack->{handle}, $buf, 2) == 2) { - my $len = unpack("I", $buf); - $pack->{ustream_data}{cread} += $len; - if (sysread($pack->{handle}, $buf, $len) != $len) { - warn("Unexpected end of file while reading gzip header\n"); - return -1; - } - } else { - warn("Unexpected end of file while reading gzip header\n"); - return -1; - } - } - } - } else { - sysseek($pack->{handle}, $pack->{ustream_data}{cread} - 2, 1); - } - $pack->{ustream_data}{off} = $fileinfo->{off}; - my $byteswritten = 0; - while ($byteswritten < $fileinfo->{size}) { - my ($l, $out, $status) = (0, $pack->{ustream_data}{buf}); - $pack->{ustream_data}{buf} = undef; - if (!defined($out)) { - my $cl=sysread($pack->{handle}, my $buf, - $pack->{ustream_data}{cread} + $pack->{bufsize} > $fileinfo->{csize} ? - $fileinfo->{csize} - $pack->{ustream_data}{cread} : - $pack->{bufsize}) or do { - warn("Unexpected end of file\n"); - return -1; - }; - $pack->{ustream_data}{cread} += $cl; - ($out, $status) = $pack->{ustream_data}{x}->inflate(\$buf); - $status == Z_OK || $status == Z_STREAM_END or do { - warn("Unable to uncompress data\n"); - return -1; - }; - } - $l = length($out) or next; - if ($pack->{ustream_data}{read} < $fileinfo->{off} && $pack->{ustream_data}{read} + $l > $fileinfo->{off}) { - $out = substr($out, $fileinfo->{off} - $pack->{ustream_data}{read}); - } - $pack->{ustream_data}{read} += $l; - if ($pack->{ustream_data}{read} <= $fileinfo->{off}) { next } +Packdrakeng::zlib - Compatibility wrapper around MDV::Packdrakeng::zlib - my $bw; - if ($byteswritten + length($out) > $fileinfo->{size}) { - $bw = $fileinfo->{size} - $byteswritten; - $pack->{ustream_data}{buf} = substr($out, $bw); # keeping track of unwritten uncompressed data - $pack->{ustream_data}{read} -= length($pack->{ustream_data}{buf}); - } else { - $bw = length($out); - } - syswrite($destfh, $out, $bw) == $bw or do { - warn "Can't write data into dest\n"; - return -1; - }; - $byteswritten += $bw; +=head1 DESCRIPTION - } - $byteswritten -} +Don't use this module. Use MDV::Packdrakeng::zlib instead. -1; +=cut |