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