package IO::Compress::Gzip ;
require 5.004 ;
use strict ;
use warnings;
use bytes;
use IO::Compress::RawDeflate 2.015 ;
use Compress::Raw::Zlib 2.015 ;
use IO::Compress::Base::Common 2.015 qw(:Status :Parse createSelfTiedObject);
use IO::Compress::Gzip::Constants 2.015 ;
use IO::Compress::Zlib::Extra 2.015 ;
BEGIN
{
if (defined &utf8::downgrade )
{ *noUTF8 = \&utf8::downgrade }
else
{ *noUTF8 = sub {} }
}
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $GzipError);
$VERSION = '2.015';
$GzipError = '' ;
@ISA = qw(Exporter IO::Compress::RawDeflate);
@EXPORT_OK = qw( $GzipError gzip ) ;
%EXPORT_TAGS = %IO::Compress::RawDeflate::DEFLATE_CONSTANTS ;
push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ;
Exporter::export_ok_tags('all');
sub new
{
my $class = shift ;
my $obj = createSelfTiedObject($class, \$GzipError);
$obj->_create(undef, @_);
}
sub gzip
{
my $obj = createSelfTiedObject(undef, \$GzipError);
return $obj->_def(@_);
}
#sub newHeader
#{
# my $self = shift ;
# #return GZIP_MINIMUM_HEADER ;
# return $self->mkHeader(*$self->{Got});
#}
sub getExtraParams
{
my $self = shift ;
return (
# zlib behaviour
$self->getZlibParams(),
# Gzip header fields
'Minimal' => [0, 1, Parse_boolean, 0],
'Comment' => [0, 1, Parse_any, undef],
'Name' => [0, 1, Parse_any, undef],
'Time' => [0, 1, Parse_any, undef],
'TextFlag' => [0, 1, Parse_boolean, 0],
'HeaderCRC' => [0, 1, Parse_boolean, 0],
'OS_Code' => [0, 1, Parse_unsigned, $Compress::Raw::Zlib::gzip_os_code],
'ExtraField'=> [0, 1, Parse_any, undef],
'ExtraFlags'=> [0, 1, Parse_any, undef],
);
}
sub ckParams
{
my $self = shift ;
my $got = shift ;
# gzip always needs crc32
$got->value('CRC32' => 1);
return 1
if $got->value('Merge') ;
my $strict = $got->value('Strict') ;
{
if (! $got->parsed('Time') ) {
=1= |