From 91c78ff6b233af4b300cdae8b9030b3de13706e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcela=20Ma=C5=A1l=C3=A1=C5=88ov=C3=A1?= Date: Mon, 8 Jun 2009 13:05:52 +0000 Subject: [PATCH] - #504386 update of Compress::Raw::Zlib 2.020 --- perl-update-Compress_Raw_Zlib.patch | 864 ++++++++++++++++++++++++++++ perl.spec | 2 +- 2 files changed, 865 insertions(+), 1 deletion(-) create mode 100644 perl-update-Compress_Raw_Zlib.patch diff --git a/perl-update-Compress_Raw_Zlib.patch b/perl-update-Compress_Raw_Zlib.patch new file mode 100644 index 0000000..fa2d857 --- /dev/null +++ b/perl-update-Compress_Raw_Zlib.patch @@ -0,0 +1,864 @@ +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/Changes.cc perl-5.10.0/ext/Compress/Raw/Zlib/Changes +--- perl-5.10.0/ext/Compress/Raw/Zlib/Changes.cc 2007-12-18 11:47:07.000000000 +0100 ++++ perl-5.10.0/ext/Compress/Raw/Zlib/Changes 2009-06-03 10:42:12.000000000 +0200 +@@ -1,6 +1,62 @@ + CHANGES + ------- + ++ 2.020 3 June 2009 ++ ++ * Minor documentation update. ++ ++ 2.019 4 May 2009 ++ ++ * No Changes ++ ++ 2.018 3 May 2009 ++ ++ * No Changes ++ ++ 2.017 28 March 2009 ++ ++ * Added 'LimitOutput' option ++ ++ * Removed MAN3PODS from Makefile.PL ++ ++ * Fixed coring issue when LimitOutput was used. ++ ++ * Documented Compress::Raw::Zlib::zlib_version() ++ ++ * Documented Compress::Raw::Zlib::deflateReset() ++ [RT #40566] ++ ++ 2.015 3 September 2008 ++ ++ * Makefile.PL ++ Backout changes made in 2.014 ++ ++ 2.014 2 September 2008 ++ ++ * Makefile.PL ++ Updated to check for indirect dependencies. ++ ++ 2.012 15 July 2008 ++ ++ * Document the gzip flags that WindowBits can take. ++ ++ * Allow a dictionary to be used with a raw inflate. ++ Needs zlib 1.2.2.1 or better. ++ [RT #36046] ++ ++ 2.011 5 May 2008 ++ ++ * A C++-style comment sneaked in with the last update. Fixed. ++ [core patch #33828] ++ ++ 2.010 5 May 2008 ++ ++ * No Changes ++ ++ 2.009 20 April 2008 ++ ++ * No Changes ++ + 2.008 2 November 2007 + + * Minor documentation changes in README +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/Makefile.PL.cc perl-5.10.0/ext/Compress/Raw/Zlib/Makefile.PL +--- perl-5.10.0/ext/Compress/Raw/Zlib/Makefile.PL.cc 2007-12-18 11:47:07.000000000 +0100 ++++ perl-5.10.0/ext/Compress/Raw/Zlib/Makefile.PL 2009-03-29 00:08:40.000000000 +0100 +@@ -77,24 +77,11 @@ WriteMakefile( + }, + + ( +- $ENV{SKIP_FOR_CORE} +- ? (MAN3PODS => {}) +- : () +- ), +- +- ( + $BUILD_ZLIB + ? zlib_files($ZLIB_LIB) + : (LIBS => [ "-L$ZLIB_LIB -lz " ]) + ), + +- ( +- $] >= 5.005 +- ? (ABSTRACT_FROM => 'lib/Compress/Raw/Zlib.pm', +- AUTHOR => 'Paul Marquess ') +- : () +- ), +- + INSTALLDIRS => ($] >= 5.009 ? 'perl' : 'site'), + + ((ExtUtils::MakeMaker->VERSION() gt '6.30') ? +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/pm_to_blib.cc perl-5.10.0/ext/Compress/Raw/Zlib/pm_to_blib +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/private/MakeUtil.pm.cc perl-5.10.0/ext/Compress/Raw/Zlib/private/MakeUtil.pm +--- perl-5.10.0/ext/Compress/Raw/Zlib/private/MakeUtil.pm.cc 2007-12-18 11:47:07.000000000 +0100 ++++ perl-5.10.0/ext/Compress/Raw/Zlib/private/MakeUtil.pm 2008-09-02 15:14:33.000000000 +0200 +@@ -6,6 +6,8 @@ use strict ; + use Config qw(%Config); + use File::Copy; + ++my $VERSION = '1.0'; ++ + + BEGIN + { +@@ -47,6 +49,11 @@ sub MY::postamble + + my @files = getPerlFiles('MANIFEST'); + ++ # Note: Once you remove all the layers of shell/makefile escaping ++ # the regular expression below reads ++ # ++ # /^\s*local\s*\(\s*\$^W\s*\)/ ++ # + my $postamble = ' + + MyTrebleCheck: +@@ -290,6 +297,83 @@ sub doUpDownViaCopy + } + } + ++ ++sub FindBrokenDependencies ++{ ++ my $version = shift ; ++ my %thisModule = map { $_ => 1} @_; ++ ++ my @modules = qw( ++ IO::Compress::Base ++ IO::Compress::Base::Common ++ IO::Uncompress::Base ++ ++ Compress::Raw::Zlib ++ Compress::Raw::Bzip2 ++ ++ IO::Compress::RawDeflate ++ IO::Uncompress::RawInflate ++ IO::Compress::Deflate ++ IO::Uncompress::Inflate ++ IO::Compress::Gzip ++ IO::Compress::Gzip::Constants ++ IO::Uncompress::Gunzip ++ IO::Compress::Zip ++ IO::Uncompress::Unzip ++ ++ IO::Compress::Bzip2 ++ IO::Uncompress::Bunzip2 ++ ++ IO::Compress::Lzf ++ IO::Uncompress::UnLzf ++ ++ IO::Compress::Lzop ++ IO::Uncompress::UnLzop ++ ++ Compress::Zlib ++ ); ++ ++ my @broken = (); ++ ++ foreach my $module ( grep { ! $thisModule{$_} } @modules) ++ { ++ my $hasVersion = getInstalledVersion($module); ++ ++ # No need to upgrade if the module isn't installed at all ++ next ++ if ! defined $hasVersion; ++ ++ # If already have C::Z version 1, then an upgrade to any of the ++ # IO::Compress modules will not break it. ++ next ++ if $module eq 'Compress::Zlib' && $hasVersion < 2; ++ ++ if ($hasVersion < $version) ++ { ++ push @broken, $module ++ } ++ } ++ ++ return @broken; ++} ++ ++sub getInstalledVersion ++{ ++ my $module = shift; ++ my $version; ++ ++ eval " require $module; "; ++ ++ if ($@ eq '') ++ { ++ no strict 'refs'; ++ $version = ${ $module . "::VERSION" }; ++ $version = 0 ++ } ++ ++ return $version; ++} ++ + package MakeUtil ; + + 1; +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/README.cc perl-5.10.0/ext/Compress/Raw/Zlib/README +--- perl-5.10.0/ext/Compress/Raw/Zlib/README.cc 2007-12-18 11:47:07.000000000 +0100 ++++ perl-5.10.0/ext/Compress/Raw/Zlib/README 2009-06-03 10:36:58.000000000 +0200 +@@ -1,16 +1,14 @@ + + Compress-Raw-Zlib + +- Version 2.008 ++ Version 2.020 + +- 2nd November 2007 ++ 3rd June 2009 + +- +- Copyright (c) 2005-2007 Paul Marquess. All rights reserved. ++ Copyright (c) 2005-2009 Paul Marquess. All rights reserved. + This program is free software; you can redistribute it + and/or modify it under the same terms as Perl itself. + +- + The directory zlib-src contains a subset of the + source files copied directly from zlib version 1.2.3. + These files are Copyright(C) 1995-2005 +@@ -18,39 +16,27 @@ + Full source for the zlib library is available at + http://www.zlib.org + +- +- + DESCRIPTION + ----------- + +- + This module provides a Perl interface to the zlib compression library. + +- +- +- +- + PREREQUISITES + ------------- + + Before you can build Compress-Raw-Zlib you need to have the following + installed on your system: + +- + * A C compiler + + * Perl 5.004 or better. + +- +- + By default, Compress-Raw-Zlib will build its own private copy of the + zlib library. If you want to use a different version of + zlib, follow the instructions in the section called + "Controlling the version of zlib used by Compress-Raw-Zlib" + later in this document. + +- +- + BUILDING THE MODULE + ------------------- + +@@ -61,8 +47,6 @@ using this sequence of commands: + make + make test + +- +- + INSTALLATION + ------------ + +@@ -70,9 +54,6 @@ To install Compress-Raw-Zlib, run the co + + make install + +- +- +- + Controlling the version of zlib used by Compress-Raw-Zlib + ---------------------------------------------------------- + +@@ -92,7 +73,6 @@ zlib library is used: + Note that if you intend to use either Option 2 or 3, you need to have + zlib version 1.0.5 or better. + +- + The contents of the file config.in are used to control which of the + three options is actually used. This file is read during the + +@@ -101,8 +81,6 @@ three options is actually used. This fil + step of the build, so remember to make any required changes to config.in + before building this module. + +- +- + Option 1 + -------- + +@@ -169,10 +147,9 @@ Setting the Gzip OS Code + ------------------------ + + Every gzip stream stores a byte in its header to identify the Operating +-System that was used to create the gzip stream. When you build +-Compress-Raw-Zlib it will attempt to determine the value that is correct for +-your Operating System. This will then be used by IO::Gzip as the default +-value for the OS byte in all gzip headers it creates. ++System that was used to create the gzip stream. When you build Compress-Raw-Zlib it will attempt to determine the value that is correct for ++your Operating System. This will then be used by IO::Compress::Gzip as the ++default value for the OS byte in all gzip headers it creates. + + The variable GZIP_OS_CODE in the config.in file controls the setting of + this value when building Compress-Raw-Zlib. If GZIP_OS_CODE is set to +@@ -197,16 +174,37 @@ If you find you have to change this valu + detected is incorrect, please take a few moments to contact the author of + this module. + +- +- + TROUBLESHOOTING + --------------- + ++Undefined Symbol gzsetparams ++---------------------------- + ++If you get the error shown below when you run the Compress-Raw-Zlib test ++harness it probably means you are running a copy of zlib that is ++version 1.0.5 or older. + ++t/01version.........Can't load 'blib/arch/auto/Compress/Zlib/Zlib.so' for ++ module Compress::Raw::Zlib: blib/arch/auto/Compress/Raw/Zlib/Zlib.so: ++ undefined symbol: gzsetparams at ... + ++There are two ways to fix this problem: + ++ 1. Upgrade to the latest version of zlib. + ++ 2. Edit config.in and set the OLD_ZLIB variable to True. ++ ++Test Harness 01version fails ++---------------------------- ++If the 01version test harness fails, and the problem isn't covered by the ++scenario above, it probably means that you have two versions of ++zlib installed on your system. ++ ++Run the command below to see if this is indeed the case ++ ++ make test TEST_VERBOSE=1 TEST_FILES=t/01version.t ++ ++Try removing the one you don't want to use and rebuild. + + Solaris build fails with "language optional software package not installed" + --------------------------------------------------------------------------- +@@ -245,9 +243,6 @@ may vary. + If that doesn't work for you, it's time to make changes to the Makefile + by hand. Good luck! + +- +- +- + Solaris build fails with "gcc: unrecognized option `-KPIC'" + ----------------------------------------------------------- + +@@ -285,10 +280,6 @@ I've had a report that when building Com + is necessary to have first built the zlib library with the -fpic + option. + +- +- +- +- + Linux Notes + ----------- + +@@ -307,9 +298,6 @@ This usually means that you have not ins + for zlib. Check for an RPM that start with "zlib-devel" in your Linux + distribution. + +- +- +- + Win32 Notes + ----------- + +@@ -318,15 +306,11 @@ it ships with a pre-compiled version of + newer version of Compress-Raw-Zlib is available run this from the command + prompt + +- C:\> ppm verify -upgrade Compress-Zlib +- ++ C:\> ppm verify -upgrade Compress-Raw-Zlib + + If you are not running Activestate Perl and you don't have access + to a C compiler, you will not be able to build and install this module. + +- +- +- + Win32 & Cygwin Notes + -------------------- + +@@ -338,7 +322,6 @@ Windows. + The workaround is to install Compress-Raw-Zlib manually using the + instructions given at the start of this file. + +- + FEEDBACK + -------- + +@@ -372,8 +355,7 @@ To help me help you, I need all of the f + If you haven't installed Compress-Raw-Zlib then search Compress::Raw::Zlib.pm + for a line like this: + +- $VERSION = "2.008" ; +- ++ $VERSION = "2.020" ; + + c. The version of zlib you have used. + If you have successfully installed Compress-Raw-Zlib, this one-liner +@@ -381,10 +363,8 @@ To help me help you, I need all of the f + + perl -MCompress::Raw::Zlib -e "print q[zlib ver ]. Compress::Raw::Zlib::ZLIB_VERSION.qq[\n]" + +- + If not, look at the beginning of the file zlib.h. + +- + 2. If you are having problems building Compress-Raw-Zlib, send me a + complete log of what happened. Start by unpacking the Compress-Raw-Zlib + module into a fresh directory and keep a log of all the steps +@@ -394,5 +374,4 @@ To help me help you, I need all of the f + make + make test TEST_VERBOSE=1 + +- + Paul Marquess +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/typemap.cc perl-5.10.0/ext/Compress/Raw/Zlib/typemap +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/adler32.c.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/adler32.c +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/compress.c.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/compress.c +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/crc32.c.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/crc32.c +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/crc32.h.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/crc32.h +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/deflate.c.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/deflate.c +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/deflate.h.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/deflate.h +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/infback.c.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/infback.c +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/inffast.c.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/inffast.c +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/inffast.h.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/inffast.h +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/inffixed.h.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/inffixed.h +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/inflate.c.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/inflate.c +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/inflate.h.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/inflate.h +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/inftrees.c.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/inftrees.c +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/inftrees.h.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/inftrees.h +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/trees.c.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/trees.c +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/trees.h.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/trees.h +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/uncompr.c.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/uncompr.c +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/zconf.h.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/zconf.h +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/zlib.h.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/zlib.h +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/zutil.c.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/zutil.c +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/zutil.h.cc perl-5.10.0/ext/Compress/Raw/Zlib/zlib-src/zutil.h +diff -up perl-5.10.0/ext/Compress/Raw/Zlib/Zlib.xs.cc perl-5.10.0/ext/Compress/Raw/Zlib/Zlib.xs +--- perl-5.10.0/ext/Compress/Raw/Zlib/Zlib.xs.cc 2007-12-18 11:47:07.000000000 +0100 ++++ perl-5.10.0/ext/Compress/Raw/Zlib/Zlib.xs 2009-03-26 10:40:57.000000000 +0100 +@@ -3,7 +3,7 @@ + * Created : 22nd January 1996 + * Version : 2.000 + * +- * Copyright (c) 1995-2007 Paul Marquess. All rights reserved. ++ * Copyright (c) 1995-2009 Paul Marquess. All rights reserved. + * This program is free software; you can redistribute it and/or + * modify it under the same terms as Perl itself. + * +@@ -50,6 +50,10 @@ + # define AT_LEAST_ZLIB_1_2_2_1 + #endif + ++#if defined(ZLIB_VERNUM) && ZLIB_VERNUM >= 0x1222 ++# define AT_LEAST_ZLIB_1_2_2_2 ++#endif ++ + #if defined(ZLIB_VERNUM) && ZLIB_VERNUM >= 0x1223 + # define AT_LEAST_ZLIB_1_2_2_3 + #endif +@@ -64,6 +68,11 @@ + # include "ppport.h" + #endif + ++#if PERL_REVISION == 5 && PERL_VERSION == 9 ++ /* For Andreas */ ++# define sv_pvbyte_force(sv,lp) sv_pvbyten_force(sv,lp) ++#endif ++ + #if PERL_REVISION == 5 && (PERL_VERSION < 8 || (PERL_VERSION == 8 && PERL_SUBVERSION < 4 )) + + # ifdef SvPVbyte_force +@@ -103,6 +112,7 @@ typedef struct di_stream { + #define FLAG_CRC32 2 + #define FLAG_ADLER32 4 + #define FLAG_CONSUME_INPUT 8 ++#define FLAG_LIMIT_OUTPUT 16 + uLong crc32 ; + uLong adler32 ; + z_stream stream; +@@ -228,7 +238,8 @@ typedef di_stream * Compress__Raw__Zlib_ + #define adlerInitial adler32(0L, Z_NULL, 0) + #define crcInitial crc32(0L, Z_NULL, 0) + +-static const char * const my_z_errmsg[] = { ++/* static const char * const my_z_errmsg[] = { */ ++static const char my_z_errmsg[][32] = { + "need dictionary", /* Z_NEED_DICT 2 */ + "stream end", /* Z_STREAM_END 1 */ + "", /* Z_OK 0 */ +@@ -460,6 +471,8 @@ DispStream(s, message) + printf(" CRC32 %s\n", EnDis(FLAG_CRC32)); + printf(" ADLER32 %s\n", EnDis(FLAG_ADLER32)); + printf(" CONSUME %s\n", EnDis(FLAG_CONSUME_INPUT)); ++ printf(" LIMIT %s\n", EnDis(FLAG_LIMIT_OUTPUT)); ++ + + #ifdef MAGIC_APPEND + printf(" window 0x%p\n", s->window); +@@ -510,7 +523,7 @@ PostInitStream(s, flags, bufsize, window + + static SV* + #ifdef CAN_PROTOTYPE +-deRef(SV * sv, char * string) ++deRef(SV * sv, const char * string) + #else + deRef(sv, string) + SV * sv ; +@@ -528,6 +541,8 @@ char * string; + case SVt_PVHV: + case SVt_PVCV: + croak("%s: buffer parameter is not a SCALAR reference", string); ++ default: ++ break; + } + if (SvROK(sv)) + croak("%s: buffer parameter is a reference to a reference", string) ; +@@ -542,7 +557,7 @@ char * string; + + static SV* + #ifdef CAN_PROTOTYPE +-deRef_l(SV * sv, char * string) ++deRef_l(SV * sv, const char * string) + #else + deRef_l(sv, string) + SV * sv ; +@@ -565,6 +580,8 @@ char * string ; + case SVt_PVHV: + case SVt_PVCV: + croak("%s: buffer parameter is not a SCALAR reference", string); ++ default: ++ break; + } + if (SvROK(sv)) + croak("%s: buffer parameter is a reference to a reference", string) ; +@@ -802,6 +819,19 @@ _inflateInit(flags, windowBits, bufsize, + s = NULL ; + } + else if (SvCUR(dictionary)) { ++#ifdef AT_LEAST_ZLIB_1_2_2_1 ++ /* Zlib 1.2.2.1 or better allows a dictionary with raw inflate */ ++ if (s->WindowBits < 0) { ++ err = inflateSetDictionary(&(s->stream), ++ (const Bytef*)SvPVbyte_nolen(dictionary), ++ SvCUR(dictionary)); ++ if (err != Z_OK) { ++ Safefree(s) ; ++ s = NULL ; ++ } ++ } ++ else ++#endif + /* Dictionary specified - take a copy for use in inflate */ + s->dictionary = newSVsv(dictionary) ; + } +@@ -1246,7 +1276,7 @@ inflate (s, buf, output, eof=FALSE) + bool eof + uInt cur_length = 0; + uInt prefix_length = 0; +- uInt increment = 0; ++ int increment = 0; + STRLEN stmp = NO_INIT + uLong bufinc = NO_INIT + PREINIT: +@@ -1280,22 +1310,39 @@ inflate (s, buf, output, eof=FALSE) + if((s->flags & FLAG_APPEND) != FLAG_APPEND) { + SvCUR_set(output, 0); + } ++ ++ /* Assume no output buffer - the code below will update if there is any available */ ++ s->stream.avail_out = 0; ++ ++ + if (SvLEN(output)) { + prefix_length = cur_length = SvCUR(output) ; +- s->stream.next_out = (Bytef*) SvPVbyte_nolen(output) + cur_length; +- increment = SvLEN(output) - cur_length - 1; +- s->stream.avail_out = increment; +- } +- else { +- s->stream.avail_out = 0; ++ ++ if (s->flags & FLAG_LIMIT_OUTPUT && SvLEN(output) - cur_length - 1 < bufinc) ++ { ++ Sv_Grow(output, bufinc + cur_length + 1) ; ++ } ++ ++ /* Only setup the stream output pointers if there is spare ++ capacity in the outout SV ++ */ ++ if (SvLEN(output) > cur_length + 1) ++ { ++ s->stream.next_out = (Bytef*) SvPVbyte_nolen(output) + cur_length; ++ increment = SvLEN(output) - cur_length - 1; ++ s->stream.avail_out = increment; ++ } + } ++ ++ + s->bytesInflated = 0; + +- while (1) { ++ RETVAL = Z_OK; + +- if (s->stream.avail_out == 0 ) { ++ while (RETVAL == Z_OK) { ++ if (s->stream.avail_out == 0) { + /* out of space in the output buffer so make it bigger */ +- Sv_Grow(output, SvLEN(output) + bufinc) ; ++ Sv_Grow(output, SvLEN(output) + bufinc +1) ; + cur_length += increment ; + s->stream.next_out = (Bytef*) SvPVbyte_nolen(output) + cur_length ; + increment = bufinc ; +@@ -1303,10 +1350,30 @@ inflate (s, buf, output, eof=FALSE) + bufinc *= 2 ; + } + ++ /* printf("INFLATE Availl In %d, Out %d\n", s->stream.avail_in, ++ s->stream.avail_out); ++DispStream(s, "BEFORE"); ++Perl_sv_dump(output); */ + RETVAL = inflate(&(s->stream), Z_SYNC_FLUSH); ++ /* printf("INFLATE returned %d %s, avail in %d, out %d\n", RETVAL, ++ GetErrorString(RETVAL), s->stream.avail_in, s->stream.avail_out); */ ++ ++ ++ if (RETVAL == Z_NEED_DICT && s->dictionary) { ++ s->dict_adler = s->stream.adler ; ++ RETVAL = inflateSetDictionary(&(s->stream), ++ (const Bytef*)SvPVbyte_nolen(s->dictionary), ++ SvCUR(s->dictionary)); ++ if (RETVAL == Z_OK) ++ continue; ++ } ++ ++ if (s->flags & FLAG_LIMIT_OUTPUT && ++ (RETVAL == Z_OK || RETVAL == Z_BUF_ERROR )) ++ break; + + if (RETVAL == Z_STREAM_ERROR || RETVAL == Z_MEM_ERROR || +- RETVAL == Z_DATA_ERROR || RETVAL == Z_STREAM_END ) ++ RETVAL == Z_DATA_ERROR || RETVAL == Z_STREAM_END ) + break ; + + if (RETVAL == Z_BUF_ERROR) { +@@ -1317,19 +1384,9 @@ inflate (s, buf, output, eof=FALSE) + break ; + } + } +- +- if (RETVAL == Z_NEED_DICT && s->dictionary) { +- s->dict_adler = s->stream.adler ; +- RETVAL = inflateSetDictionary(&(s->stream), +- (const Bytef*)SvPVbyte_nolen(s->dictionary), +- SvCUR(s->dictionary)); +- } +- +- if (RETVAL != Z_OK) +- break; + } + #ifdef NEED_DUMMY_BYTE_AT_END +- if (eof && RETVAL == Z_OK) { ++ if (eof && RETVAL == Z_OK && s->flags & FLAG_LIMIT_OUTPUT == 0) { + Bytef* nextIn = s->stream.next_in; + uInt availIn = s->stream.avail_in; + s->stream.next_in = (Bytef*) " "; +@@ -1350,8 +1407,8 @@ inflate (s, buf, output, eof=FALSE) + #endif + + s->last_error = RETVAL ; +- if (RETVAL == Z_OK || RETVAL == Z_STREAM_END || RETVAL == Z_DATA_ERROR) { +- unsigned in ; ++ if (RETVAL == Z_OK || RETVAL == Z_STREAM_END || RETVAL == Z_BUF_ERROR || RETVAL == Z_DATA_ERROR) { ++ unsigned in ; + + s->bytesInflated = cur_length + increment - s->stream.avail_out - prefix_length; + s->uncompressedBytes += s->bytesInflated ; +@@ -1377,7 +1434,7 @@ inflate (s, buf, output, eof=FALSE) + SvCUR(output)-prefix_length) ; + + /* fix the input buffer */ +- if (s->flags & FLAG_CONSUME_INPUT) { ++ if (s->flags & FLAG_CONSUME_INPUT || s->flags & FLAG_LIMIT_OUTPUT) { + in = s->stream.avail_in ; + SvCUR_set(buf, in) ; + if (in) +@@ -1385,6 +1442,7 @@ inflate (s, buf, output, eof=FALSE) + *SvEND(buf) = '\0'; + SvSETMAGIC(buf); + } ++ + } + OUTPUT: + RETVAL +diff -up perl-5.10.0/lib/Compress/Raw/FAQ.pod.cc perl-5.10.0/lib/Compress/Raw/FAQ.pod +--- perl-5.10.0/lib/Compress/Raw/FAQ.pod.cc 2009-06-08 12:36:21.579210608 +0200 ++++ perl-5.10.0/lib/Compress/Raw/FAQ.pod 2009-06-03 10:37:02.000000000 +0200 +@@ -0,0 +1,142 @@ ++ ++=head1 NAME ++ ++Compress::Raw::Zlib::FAQ -- Frequently Asked Questions about Compress::Raw::Zlib ++ ++=head1 DESCRIPTION ++ ++Common questions answered. ++ ++=head2 Compatibility with Unix compress/uncompress. ++ ++This module is not compatible with Unix C. ++ ++If you have the C program available, you can use this to read ++compressed files ++ ++ open F, "uncompress -c $filename |"; ++ while () ++ { ++ ... ++ ++Alternatively, if you have the C program available, you can use ++this to read compressed files ++ ++ open F, "gunzip -c $filename |"; ++ while () ++ { ++ ... ++ ++and this to write compress files, if you have the C program ++available ++ ++ open F, "| compress -c $filename "; ++ print F "data"; ++ ... ++ close F ; ++ ++=head2 Accessing .tar.Z files ++ ++See previous FAQ item. ++ ++If the C module is installed and either the C or ++C programs are available, you can use one of these workarounds to ++read C<.tar.Z> files. ++ ++Firstly with C ++ ++ use strict; ++ use warnings; ++ use Archive::Tar; ++ ++ open F, "uncompress -c $filename |"; ++ my $tar = Archive::Tar->new(*F); ++ ... ++ ++and this with C ++ ++ use strict; ++ use warnings; ++ use Archive::Tar; ++ ++ open F, "gunzip -c $filename |"; ++ my $tar = Archive::Tar->new(*F); ++ ... ++ ++Similarly, if the C program is available, you can use this to ++write a C<.tar.Z> file ++ ++ use strict; ++ use warnings; ++ use Archive::Tar; ++ use IO::File; ++ ++ my $fh = new IO::File "| compress -c >$filename"; ++ my $tar = Archive::Tar->new(); ++ ... ++ $tar->write($fh); ++ $fh->close ; ++ ++=head2 Accessing Zip Files ++ ++This module does not support reading/writing zip files. ++ ++Support for reading/writing zip files is included with the ++C and C modules. ++ ++The primary focus of the C and C ++modules is to provide an C compatible streaming read/write ++interface to zip files/buffers. They are not fully flegged archivers. If ++you are looking for an archiver check out the C module. You ++can find it on CPAN at ++ ++ http://www.cpan.org/modules/by-module/Archive/Archive-Zip-*.tar.gz ++ ++=head2 Zlib Library Version Support ++ ++By default C will build with a private copy of version ++1.2.3 of the zlib library. (See the F file for details of ++how to override this behaviour) ++ ++If you decide to use a different version of the zlib library, you need to be ++aware of the following issues ++ ++=over 5 ++ ++=item * ++ ++First off, you must have zlib 1.0.5 or better. ++ ++=item * ++ ++You need to have zlib 1.2.1 or better if you want to use the C<-Merge> ++option with C, C and ++C. ++ ++=back ++ ++=head1 SEE ALSO ++ ++L, L, L, L, L, L, L, L, L, L, L, L, L, L, L ++ ++L ++ ++L, L, ++L, ++L ++ ++=head1 AUTHOR ++ ++This module was written by Paul Marquess, F. ++ ++=head1 MODIFICATION HISTORY ++ ++See the Changes file. ++ ++=head1 COPYRIGHT AND LICENSE ++ ++Copyright (c) 2005-2009 Paul Marquess. All rights reserved. ++ ++This program is free software; you can redistribute it and/or ++modify it under the same terms as Perl itself. ++ diff --git a/perl.spec b/perl.spec index 0cfa0fc..5bb40f5 100644 --- a/perl.spec +++ b/perl.spec @@ -7,7 +7,7 @@ Name: perl Version: %{perl_version} -Release: 70%{?dist} +Release: 71%{?dist} Epoch: %{perl_epoch} Summary: Practical Extraction and Report Language Group: Development/Languages