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