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