Add and remove files forgotten in change #27384
[p5sagit/p5-mst-13.2.git] / ext / Compress / IO / Zlib / lib / IO / Uncompress / Inflate.pm
CommitLineData
642e522c 1package IO::Uncompress::Inflate ;
2# for RFC1950
3
4use strict ;
5use warnings;
a02d0f6f 6use bytes;
642e522c 7
a02d0f6f 8use IO::Compress::Base::Common qw(:Status createSelfTiedObject);
9use IO::Compress::Zlib::Constants;
1a6a8453 10
11use IO::Uncompress::RawInflate ;
642e522c 12
13require Exporter ;
14our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $InflateError);
15
a02d0f6f 16$VERSION = '2.000_08';
642e522c 17$InflateError = '';
18
1a6a8453 19@ISA = qw( Exporter IO::Uncompress::RawInflate );
642e522c 20@EXPORT_OK = qw( $InflateError inflate ) ;
1a6a8453 21%EXPORT_TAGS = %IO::Uncompress::RawInflate::DEFLATE_CONSTANTS ;
642e522c 22push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ;
23Exporter::export_ok_tags('all');
24
25
26sub new
27{
1a6a8453 28 my $class = shift ;
29 my $obj = createSelfTiedObject($class, \$InflateError);
30
31 $obj->_create(undef, 0, @_);
642e522c 32}
33
34sub inflate
35{
1a6a8453 36 my $obj = createSelfTiedObject(undef, \$InflateError);
37 return $obj->_inf(@_);
38}
39
40sub getExtraParams
41{
42 return ();
43}
44
45sub ckParams
46{
47 my $self = shift ;
48 my $got = shift ;
49
50 # gunzip always needs adler32
51 $got->value('ADLER32' => 1);
52
53 return 1;
54}
55
56sub ckMagic
57{
58 my $self = shift;
59
60 my $magic ;
61 $self->smartReadExact(\$magic, ZLIB_HEADER_SIZE);
62
63 *$self->{HeaderPending} = $magic ;
64
65 return $self->HeaderError("Header size is " .
66 ZLIB_HEADER_SIZE . " bytes")
67 if length $magic != ZLIB_HEADER_SIZE;
68
69 return $self->HeaderError("CRC mismatch.")
70 if ! isZlibMagic($magic) ;
71
72 *$self->{Type} = 'rfc1950';
73 return $magic;
74}
75
76sub readHeader
77{
78 my $self = shift;
79 my $magic = shift ;
80
81 return $self->_readDeflateHeader($magic) ;
82}
83
84sub chkTrailer
85{
86 my $self = shift;
87 my $trailer = shift;
88
89 my $ADLER32 = unpack("N", $trailer) ;
90 *$self->{Info}{ADLER32} = $ADLER32;
91 return $self->TrailerError("CRC mismatch")
92 if *$self->{Strict} && $ADLER32 != *$self->{Uncomp}->adler32() ;
93
a02d0f6f 94 return STATUS_OK;
1a6a8453 95}
96
97
98
99sub isZlibMagic
100{
101 my $buffer = shift ;
102 return 0 if length $buffer < ZLIB_HEADER_SIZE ;
103 my $hdr = unpack("n", $buffer) ;
104 return $hdr % 31 == 0 ;
642e522c 105}
106
1a6a8453 107sub bits
108{
109 my $data = shift ;
110 my $offset = shift ;
111 my $mask = shift ;
112
113 ($data >> $offset ) & $mask & 0xFF ;
114}
115
116
117sub _readDeflateHeader
118{
119 my ($self, $buffer) = @_ ;
120
121# if (! $buffer) {
122# $self->smartReadExact(\$buffer, ZLIB_HEADER_SIZE);
123#
124# *$self->{HeaderPending} = $buffer ;
125#
126# return $self->HeaderError("Header size is " .
127# ZLIB_HEADER_SIZE . " bytes")
128# if length $buffer != ZLIB_HEADER_SIZE;
129#
130# return $self->HeaderError("CRC mismatch.")
131# if ! isZlibMagic($buffer) ;
132# }
133
134 my ($CMF, $FLG) = unpack "C C", $buffer;
135 my $FDICT = bits($FLG, ZLIB_FLG_FDICT_OFFSET, ZLIB_FLG_FDICT_BITS ),
136
137 my $cm = bits($CMF, ZLIB_CMF_CM_OFFSET, ZLIB_CMF_CM_BITS) ;
138 $cm == ZLIB_CMF_CM_DEFLATED
139 or return $self->HeaderError("Not Deflate (CM is $cm)") ;
140
141 my $DICTID;
142 if ($FDICT) {
143 $self->smartReadExact(\$buffer, ZLIB_FDICT_SIZE)
144 or return $self->TruncatedHeader("FDICT");
145
146 $DICTID = unpack("N", $buffer) ;
147 }
148
149 *$self->{Type} = 'rfc1950';
150
151 return {
152 'Type' => 'rfc1950',
153 'FingerprintLength' => ZLIB_HEADER_SIZE,
154 'HeaderLength' => ZLIB_HEADER_SIZE,
155 'TrailerLength' => ZLIB_TRAILER_SIZE,
156 'Header' => $buffer,
157
158 CMF => $CMF ,
159 CM => bits($CMF, ZLIB_CMF_CM_OFFSET, ZLIB_CMF_CM_BITS ),
160 CINFO => bits($CMF, ZLIB_CMF_CINFO_OFFSET, ZLIB_CMF_CINFO_BITS ),
161 FLG => $FLG ,
162 FCHECK => bits($FLG, ZLIB_FLG_FCHECK_OFFSET, ZLIB_FLG_FCHECK_BITS),
163 FDICT => bits($FLG, ZLIB_FLG_FDICT_OFFSET, ZLIB_FLG_FDICT_BITS ),
164 FLEVEL => bits($FLG, ZLIB_FLG_LEVEL_OFFSET, ZLIB_FLG_LEVEL_BITS ),
165 DICTID => $DICTID ,
166
167 };
168}
169
170
171
172
642e522c 1731 ;
174
175__END__
176
177
178=head1 NAME
179
a02d0f6f 180
642e522c 181IO::Uncompress::Inflate - Perl interface to read RFC 1950 files/buffers
182
a02d0f6f 183
642e522c 184=head1 SYNOPSIS
185
186 use IO::Uncompress::Inflate qw(inflate $InflateError) ;
187
188 my $status = inflate $input => $output [,OPTS]
189 or die "inflate failed: $InflateError\n";
190
191 my $z = new IO::Uncompress::Inflate $input [OPTS]
192 or die "inflate failed: $InflateError\n";
193
194 $status = $z->read($buffer)
195 $status = $z->read($buffer, $length)
196 $status = $z->read($buffer, $length, $offset)
197 $line = $z->getline()
198 $char = $z->getc()
199 $char = $z->ungetc()
a02d0f6f 200 $char = $z->opened()
201
642e522c 202 $status = $z->inflateSync()
a02d0f6f 203
642e522c 204 $z->trailingData()
205 $data = $z->getHeaderInfo()
206 $z->tell()
207 $z->seek($position, $whence)
208 $z->binmode()
209 $z->fileno()
210 $z->eof()
211 $z->close()
212
213 $InflateError ;
214
215 # IO::File mode
216
217 <$z>
218 read($z, $buffer);
219 read($z, $buffer, $length);
220 read($z, $buffer, $length, $offset);
221 tell($z)
222 seek($z, $position, $whence)
223 binmode($z)
224 fileno($z)
225 eof($z)
226 close($z)
227
228
229=head1 DESCRIPTION
230
231
232
233B<WARNING -- This is a Beta release>.
234
235=over 5
236
237=item * DO NOT use in production code.
238
239=item * The documentation is incomplete in places.
240
241=item * Parts of the interface defined here are tentative.
242
243=item * Please report any problems you find.
244
245=back
246
247
248
249
250
1a6a8453 251This module provides a Perl interface that allows the reading of
642e522c 252files/buffers that conform to RFC 1950.
253
1a6a8453 254For writing RFC 1950 files/buffers, see the companion module IO::Compress::Deflate.
642e522c 255
256
257
258=head1 Functional Interface
259
1a6a8453 260A top-level function, C<inflate>, is provided to carry out
261"one-shot" uncompression between buffers and/or files. For finer
262control over the uncompression process, see the L</"OO Interface">
263section.
642e522c 264
265 use IO::Uncompress::Inflate qw(inflate $InflateError) ;
266
267 inflate $input => $output [,OPTS]
268 or die "inflate failed: $InflateError\n";
269
1a6a8453 270
642e522c 271
272The functional interface needs Perl5.005 or better.
273
274
275=head2 inflate $input => $output [, OPTS]
276
1a6a8453 277
278C<inflate> expects at least two parameters, C<$input> and C<$output>.
642e522c 279
280=head3 The C<$input> parameter
281
282The parameter, C<$input>, is used to define the source of
283the compressed data.
284
285It can take one of the following forms:
286
287=over 5
288
289=item A filename
290
291If the C<$input> parameter is a simple scalar, it is assumed to be a
292filename. This file will be opened for reading and the input data
293will be read from it.
294
295=item A filehandle
296
297If the C<$input> parameter is a filehandle, the input data will be
298read from it.
299The string '-' can be used as an alias for standard input.
300
301=item A scalar reference
302
303If C<$input> is a scalar reference, the input data will be read
304from C<$$input>.
305
306=item An array reference
307
1a6a8453 308If C<$input> is an array reference, each element in the array must be a
309filename.
310
311The input data will be read from each file in turn.
312
642e522c 313The complete array will be walked to ensure that it only
1a6a8453 314contains valid filenames before any data is uncompressed.
315
316
642e522c 317
318=item An Input FileGlob string
319
320If C<$input> is a string that is delimited by the characters "<" and ">"
321C<inflate> will assume that it is an I<input fileglob string>. The
322input is the list of files that match the fileglob.
323
324If the fileglob does not match any files ...
325
326See L<File::GlobMapper|File::GlobMapper> for more details.
327
328
329=back
330
331If the C<$input> parameter is any other type, C<undef> will be returned.
332
333
334
335=head3 The C<$output> parameter
336
337The parameter C<$output> is used to control the destination of the
338uncompressed data. This parameter can take one of these forms.
339
340=over 5
341
342=item A filename
343
1a6a8453 344If the C<$output> parameter is a simple scalar, it is assumed to be a
345filename. This file will be opened for writing and the uncompressed
346data will be written to it.
642e522c 347
348=item A filehandle
349
1a6a8453 350If the C<$output> parameter is a filehandle, the uncompressed data
351will be written to it.
642e522c 352The string '-' can be used as an alias for standard output.
353
354
355=item A scalar reference
356
1a6a8453 357If C<$output> is a scalar reference, the uncompressed data will be
358stored in C<$$output>.
642e522c 359
642e522c 360
361
362=item An Array Reference
363
1a6a8453 364If C<$output> is an array reference, the uncompressed data will be
365pushed onto the array.
642e522c 366
367=item An Output FileGlob
368
369If C<$output> is a string that is delimited by the characters "<" and ">"
370C<inflate> will assume that it is an I<output fileglob string>. The
371output is the list of files that match the fileglob.
372
373When C<$output> is an fileglob string, C<$input> must also be a fileglob
374string. Anything else is an error.
375
376=back
377
378If the C<$output> parameter is any other type, C<undef> will be returned.
379
642e522c 380
642e522c 381
382=head2 Notes
383
384When C<$input> maps to multiple files/buffers and C<$output> is a single
1a6a8453 385file/buffer the uncompressed input files/buffers will all be stored
386in C<$output> as a single uncompressed stream.
642e522c 387
388
389
390=head2 Optional Parameters
391
392Unless specified below, the optional parameters for C<inflate>,
393C<OPTS>, are the same as those used with the OO interface defined in the
394L</"Constructor Options"> section below.
395
396=over 5
397
398=item AutoClose =E<gt> 0|1
399
1a6a8453 400This option applies to any input or output data streams to
401C<inflate> that are filehandles.
642e522c 402
403If C<AutoClose> is specified, and the value is true, it will result in all
404input and/or output filehandles being closed once C<inflate> has
405completed.
406
407This parameter defaults to 0.
408
409
410
1a6a8453 411=item BinModeOut =E<gt> 0|1
412
413When writing to a file or filehandle, set C<binmode> before writing to the
414file.
415
416Defaults to 0.
417
418
419
420
421
642e522c 422=item -Append =E<gt> 0|1
423
424TODO
425
1a6a8453 426=item -MultiStream =E<gt> 0|1
427
428Creates a new stream after each file.
429
430Defaults to 1.
431
642e522c 432
433
434=back
435
436
437
438
439=head2 Examples
440
441To read the contents of the file C<file1.txt.1950> and write the
442compressed data to the file C<file1.txt>.
443
444 use strict ;
445 use warnings ;
446 use IO::Uncompress::Inflate qw(inflate $InflateError) ;
447
448 my $input = "file1.txt.1950";
449 my $output = "file1.txt";
450 inflate $input => $output
451 or die "inflate failed: $InflateError\n";
452
453
454To read from an existing Perl filehandle, C<$input>, and write the
455uncompressed data to a buffer, C<$buffer>.
456
457 use strict ;
458 use warnings ;
459 use IO::Uncompress::Inflate qw(inflate $InflateError) ;
460 use IO::File ;
461
462 my $input = new IO::File "<file1.txt.1950"
463 or die "Cannot open 'file1.txt.1950': $!\n" ;
464 my $buffer ;
465 inflate $input => \$buffer
466 or die "inflate failed: $InflateError\n";
467
468To uncompress all files in the directory "/my/home" that match "*.txt.1950" and store the compressed data in the same directory
469
470 use strict ;
471 use warnings ;
472 use IO::Uncompress::Inflate qw(inflate $InflateError) ;
473
474 inflate '</my/home/*.txt.1950>' => '</my/home/#1.txt>'
475 or die "inflate failed: $InflateError\n";
476
477and if you want to compress each file one at a time, this will do the trick
478
479 use strict ;
480 use warnings ;
481 use IO::Uncompress::Inflate qw(inflate $InflateError) ;
482
483 for my $input ( glob "/my/home/*.txt.1950" )
484 {
485 my $output = $input;
486 $output =~ s/.1950// ;
487 inflate $input => $output
488 or die "Error compressing '$input': $InflateError\n";
489 }
490
491=head1 OO Interface
492
493=head2 Constructor
494
495The format of the constructor for IO::Uncompress::Inflate is shown below
496
497
498 my $z = new IO::Uncompress::Inflate $input [OPTS]
499 or die "IO::Uncompress::Inflate failed: $InflateError\n";
500
501Returns an C<IO::Uncompress::Inflate> object on success and undef on failure.
502The variable C<$InflateError> will contain an error message on failure.
503
1a6a8453 504If you are running Perl 5.005 or better the object, C<$z>, returned from
505IO::Uncompress::Inflate can be used exactly like an L<IO::File|IO::File> filehandle.
506This means that all normal input file operations can be carried out with
507C<$z>. For example, to read a line from a compressed file/buffer you can
508use either of these forms
642e522c 509
510 $line = $z->getline();
511 $line = <$z>;
512
513The mandatory parameter C<$input> is used to determine the source of the
514compressed data. This parameter can take one of three forms.
515
516=over 5
517
518=item A filename
519
520If the C<$input> parameter is a scalar, it is assumed to be a filename. This
521file will be opened for reading and the compressed data will be read from it.
522
523=item A filehandle
524
525If the C<$input> parameter is a filehandle, the compressed data will be
526read from it.
527The string '-' can be used as an alias for standard input.
528
529
530=item A scalar reference
531
532If C<$input> is a scalar reference, the compressed data will be read from
533C<$$output>.
534
535=back
536
537=head2 Constructor Options
538
539
540The option names defined below are case insensitive and can be optionally
541prefixed by a '-'. So all of the following are valid
542
543 -AutoClose
544 -autoclose
545 AUTOCLOSE
546 autoclose
547
548OPTS is a combination of the following options:
549
550=over 5
551
552=item -AutoClose =E<gt> 0|1
553
554This option is only valid when the C<$input> parameter is a filehandle. If
555specified, and the value is true, it will result in the file being closed once
556either the C<close> method is called or the IO::Uncompress::Inflate object is
557destroyed.
558
559This parameter defaults to 0.
560
561=item -MultiStream =E<gt> 0|1
562
563
564
565Allows multiple concatenated compressed streams to be treated as a single
566compressed stream. Decompression will stop once either the end of the
567file/buffer is reached, an error is encountered (premature eof, corrupt
568compressed data) or the end of a stream is not immediately followed by the
569start of another stream.
570
571This parameter defaults to 0.
572
573
574
575=item -Prime =E<gt> $string
576
577This option will uncompress the contents of C<$string> before processing the
578input file/buffer.
579
580This option can be useful when the compressed data is embedded in another
581file/data structure and it is not possible to work out where the compressed
1a6a8453 582data begins without having to read the first few bytes. If this is the
583case, the uncompression can be I<primed> with these bytes using this
584option.
642e522c 585
586=item -Transparent =E<gt> 0|1
587
588If this option is set and the input file or buffer is not compressed data,
589the module will allow reading of it anyway.
590
591This option defaults to 1.
592
593=item -BlockSize =E<gt> $num
594
1a6a8453 595When reading the compressed input data, IO::Uncompress::Inflate will read it in
596blocks of C<$num> bytes.
642e522c 597
598This option defaults to 4096.
599
600=item -InputLength =E<gt> $size
601
1a6a8453 602When present this option will limit the number of compressed bytes read
603from the input file/buffer to C<$size>. This option can be used in the
604situation where there is useful data directly after the compressed data
605stream and you know beforehand the exact length of the compressed data
606stream.
642e522c 607
1a6a8453 608This option is mostly used when reading from a filehandle, in which case
609the file pointer will be left pointing to the first byte directly after the
642e522c 610compressed data stream.
611
612
613
614This option defaults to off.
615
616=item -Append =E<gt> 0|1
617
618This option controls what the C<read> method does with uncompressed data.
619
1a6a8453 620If set to 1, all uncompressed data will be appended to the output parameter
621of the C<read> method.
642e522c 622
1a6a8453 623If set to 0, the contents of the output parameter of the C<read> method
624will be overwritten by the uncompressed data.
642e522c 625
626Defaults to 0.
627
628=item -Strict =E<gt> 0|1
629
630
631
632This option controls whether the extra checks defined below are used when
1a6a8453 633carrying out the decompression. When Strict is on, the extra tests are
634carried out, when Strict is off they are not.
642e522c 635
636The default for this option is off.
637
638
639
640
641
642=over 5
643
644=item 1
645
646The ADLER32 checksum field must be present.
647
648=item 2
649
650The value of the ADLER32 field read must match the adler32 value of the
651uncompressed data actually contained in the file.
652
653=back
654
655
656
657
658
659
660
661
662
a02d0f6f 663
664
642e522c 665=back
666
667=head2 Examples
668
669TODO
670
671=head1 Methods
672
673=head2 read
674
675Usage is
676
677 $status = $z->read($buffer)
678
679Reads a block of compressed data (the size the the compressed block is
680determined by the C<Buffer> option in the constructor), uncompresses it and
1a6a8453 681writes any uncompressed data into C<$buffer>. If the C<Append> parameter is
682set in the constructor, the uncompressed data will be appended to the
683C<$buffer> parameter. Otherwise C<$buffer> will be overwritten.
642e522c 684
1a6a8453 685Returns the number of uncompressed bytes written to C<$buffer>, zero if eof
686or a negative number on error.
642e522c 687
688=head2 read
689
690Usage is
691
692 $status = $z->read($buffer, $length)
693 $status = $z->read($buffer, $length, $offset)
694
695 $status = read($z, $buffer, $length)
696 $status = read($z, $buffer, $length, $offset)
697
698Attempt to read C<$length> bytes of uncompressed data into C<$buffer>.
699
1a6a8453 700The main difference between this form of the C<read> method and the
701previous one, is that this one will attempt to return I<exactly> C<$length>
702bytes. The only circumstances that this function will not is if end-of-file
703or an IO error is encountered.
642e522c 704
1a6a8453 705Returns the number of uncompressed bytes written to C<$buffer>, zero if eof
706or a negative number on error.
642e522c 707
708
709=head2 getline
710
711Usage is
712
713 $line = $z->getline()
714 $line = <$z>
715
716Reads a single line.
717
718This method fully supports the use of of the variable C<$/>
719(or C<$INPUT_RECORD_SEPARATOR> or C<$RS> when C<English> is in use) to
720determine what constitutes an end of line. Both paragraph mode and file
721slurp mode are supported.
722
723
724=head2 getc
725
726Usage is
727
728 $char = $z->getc()
729
730Read a single character.
731
732=head2 ungetc
733
734Usage is
735
736 $char = $z->ungetc($string)
737
738
a02d0f6f 739
642e522c 740=head2 inflateSync
741
742Usage is
743
744 $status = $z->inflateSync()
745
746TODO
747
a02d0f6f 748
642e522c 749=head2 getHeaderInfo
750
751Usage is
752
1a6a8453 753 $hdr = $z->getHeaderInfo();
754 @hdrs = $z->getHeaderInfo();
642e522c 755
1a6a8453 756This method returns either a hash reference (in scalar context) or a list
757or hash references (in array context) that contains information about each
758of the header fields in the compressed data stream(s).
642e522c 759
760
761
762
763=head2 tell
764
765Usage is
766
767 $z->tell()
768 tell $z
769
770Returns the uncompressed file offset.
771
772=head2 eof
773
774Usage is
775
776 $z->eof();
777 eof($z);
778
779
780
781Returns true if the end of the compressed input stream has been reached.
782
783
784
785=head2 seek
786
787 $z->seek($position, $whence);
788 seek($z, $position, $whence);
789
790
791
792
793Provides a sub-set of the C<seek> functionality, with the restriction
794that it is only legal to seek forward in the input file/buffer.
795It is a fatal error to attempt to seek backward.
796
797
798
799The C<$whence> parameter takes one the usual values, namely SEEK_SET,
800SEEK_CUR or SEEK_END.
801
802Returns 1 on success, 0 on failure.
803
804=head2 binmode
805
806Usage is
807
808 $z->binmode
809 binmode $z ;
810
811This is a noop provided for completeness.
812
a02d0f6f 813=head2 opened
814
815 $z->opened()
816
817Returns true if the object currently refers to a opened file/buffer.
818
819=head2 autoflush
820
821 my $prev = $z->autoflush()
822 my $prev = $z->autoflush(EXPR)
823
824If the C<$z> object is associated with a file or a filehandle, this method
825returns the current autoflush setting for the underlying filehandle. If
826C<EXPR> is present, and is non-zero, it will enable flushing after every
827write/print operation.
828
829If C<$z> is associated with a buffer, this method has no effect and always
830returns C<undef>.
831
832B<Note> that the special variable C<$|> B<cannot> be used to set or
833retrieve the autoflush setting.
834
835=head2 input_line_number
836
837 $z->input_line_number()
838 $z->input_line_number(EXPR)
839
840
841
842Returns the current uncompressed line number. If C<EXPR> is present it has
843the effect of setting the line number. Note that setting the line number
844does not change the current position within the file/buffer being read.
845
846The contents of C<$/> are used to to determine what constitutes a line
847terminator.
848
849
850
642e522c 851=head2 fileno
852
853 $z->fileno()
854 fileno($z)
855
a02d0f6f 856If the C<$z> object is associated with a file or a filehandle, this method
857will return the underlying file descriptor.
642e522c 858
859If the C<$z> object is is associated with a buffer, this method will
860return undef.
861
862=head2 close
863
864 $z->close() ;
865 close $z ;
866
867
868
869Closes the output file/buffer.
870
871
872
873For most versions of Perl this method will be automatically invoked if
874the IO::Uncompress::Inflate object is destroyed (either explicitly or by the
875variable with the reference to the object going out of scope). The
876exceptions are Perl versions 5.005 through 5.00504 and 5.8.0. In
877these cases, the C<close> method will be called automatically, but
878not until global destruction of all live objects when the program is
879terminating.
880
881Therefore, if you want your scripts to be able to run on all versions
882of Perl, you should call C<close> explicitly and not rely on automatic
883closing.
884
885Returns true on success, otherwise 0.
886
887If the C<AutoClose> option has been enabled when the IO::Uncompress::Inflate
888object was created, and the object is associated with a file, the
889underlying file will also be closed.
890
891
892
893
894=head1 Importing
895
896No symbolic constants are required by this IO::Uncompress::Inflate at present.
897
898=over 5
899
900=item :all
901
902Imports C<inflate> and C<$InflateError>.
903Same as doing this
904
905 use IO::Uncompress::Inflate qw(inflate $InflateError) ;
906
907=back
908
909=head1 EXAMPLES
910
911
912
913
914=head1 SEE ALSO
915
a02d0f6f 916L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
642e522c 917
918L<Compress::Zlib::FAQ|Compress::Zlib::FAQ>
919
a02d0f6f 920L<File::GlobMapper|File::GlobMapper>, L<Archive::Zip|Archive::Zip>,
921L<Archive::Tar|Archive::Tar>,
642e522c 922L<IO::Zlib|IO::Zlib>
923
a02d0f6f 924
642e522c 925For RFC 1950, 1951 and 1952 see
926F<http://www.faqs.org/rfcs/rfc1950.html>,
927F<http://www.faqs.org/rfcs/rfc1951.html> and
928F<http://www.faqs.org/rfcs/rfc1952.html>
929
a02d0f6f 930The I<zlib> compression library was written by Jean-loup Gailly
931F<gzip@prep.ai.mit.edu> and Mark Adler F<madler@alumni.caltech.edu>.
932
933The primary site for the I<zlib> compression library is
934F<http://www.zlib.org>.
935
936The primary site for gzip is F<http://www.gzip.org>.
937
938
939
940
941
942
642e522c 943
944=head1 AUTHOR
945
946The I<IO::Uncompress::Inflate> module was written by Paul Marquess,
a02d0f6f 947F<pmqs@cpan.org>.
642e522c 948
642e522c 949
642e522c 950
951=head1 MODIFICATION HISTORY
952
953See the Changes file.
954
955=head1 COPYRIGHT AND LICENSE
956
957
1a6a8453 958Copyright (c) 2005-2006 Paul Marquess. All rights reserved.
a02d0f6f 959
642e522c 960This program is free software; you can redistribute it and/or
961modify it under the same terms as Perl itself.
962