.gear/rules | 2 + .../tags/1878a555be028b4cf2b6341c471690c6e568c05c | 13 ++ .../tags/3e8fdc6e6f3af200981bafb7d21732ddf46daa45 | 13 ++ .gear/tags/list | 2 + CGI.pm | 96 +++--------- CGI/Apache.pm | 1 + CGI/Carp.pm | 18 ++- CGI/Cookie.pm | 23 +-- CGI/Fast.pm | 4 +- CGI/Pretty.pm | 4 +- CGI/Switch.pm | 1 + perl-CGI.spec | 160 ++++++++++++++++++++ 12 files changed, 238 insertions(+), 99 deletions(-) diff --git a/.gear/rules b/.gear/rules new file mode 100644 index 0000000..6e9e6de --- /dev/null +++ b/.gear/rules @@ -0,0 +1,2 @@ +tar: @version@:. name=CGI.pm-@version@ +diff: @version@:. . name=perl-CGI-@version@-@release@.patch diff --git a/.gear/tags/1878a555be028b4cf2b6341c471690c6e568c05c b/.gear/tags/1878a555be028b4cf2b6341c471690c6e568c05c new file mode 100644 index 0000000..79aef1a --- /dev/null +++ b/.gear/tags/1878a555be028b4cf2b6341c471690c6e568c05c @@ -0,0 +1,13 @@ +object e8644840afdd46e207da7ee7157ab65b4a8394b1 +type commit +tag 3.35 +tagger Alexey Tourbin <at@altlinux.ru> 1208267197 +0400 + +3.35 +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.9 (GNU/Linux) + +iEYEABECAAYFAkgEsb0ACgkQfBKgtDjnu0aeewCgq0bRhv43S7ExBkNBCxiCozTw +yvMAn0WsHrshZkk/kgP14OqZtUfYAxjr +=G88N +-----END PGP SIGNATURE----- diff --git a/.gear/tags/3e8fdc6e6f3af200981bafb7d21732ddf46daa45 b/.gear/tags/3e8fdc6e6f3af200981bafb7d21732ddf46daa45 new file mode 100644 index 0000000..ea26bc1 --- /dev/null +++ b/.gear/tags/3e8fdc6e6f3af200981bafb7d21732ddf46daa45 @@ -0,0 +1,13 @@ +object b829e6c300121c0cb9bad777ba7f1ad3f80ad850 +type commit +tag 3.37 +tagger Alexey Tourbin <at@altlinux.ru> 1208980707 +0400 + +3.37 +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.9 (GNU/Linux) + +iEYEABECAAYFAkgPlOMACgkQfBKgtDjnu0b3qwCgj7I4irkS3nwVuLQdoK/Ev0v9 +5pYAoMp98TcAofdS/XjRk44XAAZi81UT +=6WlD +-----END PGP SIGNATURE----- diff --git a/.gear/tags/list b/.gear/tags/list new file mode 100644 index 0000000..1868209 --- /dev/null +++ b/.gear/tags/list @@ -0,0 +1,2 @@ +1878a555be028b4cf2b6341c471690c6e568c05c 3.35 +3e8fdc6e6f3af200981bafb7d21732ddf46daa45 3.37 diff --git a/CGI.pm b/CGI.pm index a77a645..75834e4 100644 --- a/CGI.pm +++ b/CGI.pm @@ -21,9 +21,6 @@ use Carp 'croak'; $CGI::revision = '$Id: CGI.pm,v 1.251 2008/04/23 13:08:23 lstein Exp $'; $CGI::VERSION='3.37'; -# HARD-CODED LOCATION FOR FILE UPLOAD TEMPORARY FILES. -# UNCOMMENT THIS ONLY IF YOU KNOW WHAT YOU'RE DOING. -# $CGITempFile::TMPDIRECTORY = '/usr/tmp'; use CGI::Util qw(rearrange make_attributes unescape escape expires ebcdic2ascii ascii2ebcdic); #use constant XHTML_DTD => ['-//W3C//DTD XHTML Basic 1.0//EN', @@ -182,20 +179,23 @@ $SL = { $IIS++ if defined($ENV{'SERVER_SOFTWARE'}) && $ENV{'SERVER_SOFTWARE'}=~/IIS/; # Turn on special checking for Doug MacEachern's modperl -if (exists $ENV{MOD_PERL}) { +use constant MOD_PERL => + exists $ENV{MOD_PERL} ? + exists $ENV{MOD_PERL_API_VERSION} && $ENV{MOD_PERL_API_VERSION} == 2 ? + 2 : 1 : 0; + +if (MOD_PERL == 2) { # mod_perl handlers may run system() on scripts using CGI.pm; # Make sure so we don't get fooled by inherited $ENV{MOD_PERL} - if (exists $ENV{MOD_PERL_API_VERSION} && $ENV{MOD_PERL_API_VERSION} == 2) { $MOD_PERL = 2; require Apache2::Response; require Apache2::RequestRec; require Apache2::RequestUtil; require Apache2::RequestIO; require APR::Pool; - } else { +} elsif (MOD_PERL == 1) { $MOD_PERL = 1; require Apache; - } } # Turn on special checking for ActiveState's PerlEx @@ -348,8 +348,8 @@ sub new { $self->upload_hook(shift @initializer, shift @initializer); $self->{'use_tempfile'} = shift @initializer if (@initializer > 0); } - if ($MOD_PERL) { - if ($MOD_PERL == 1) { + if (MOD_PERL) { + if (MOD_PERL == 1) { $self->r(Apache->request) unless $self->r; my $r = $self->r; $r->register_cleanup(\&CGI::_reset_globals); @@ -610,6 +610,7 @@ sub init { } if (defined($fh) && ($fh ne '')) { + local $_; while (<$fh>) { chomp; last if /^=/; @@ -634,7 +635,7 @@ sub init { # If method is GET or HEAD, fetch the query from # the environment. if ($is_xforms || $meth=~/^(GET|HEAD)$/) { - if ($MOD_PERL) { + if (MOD_PERL) { $query_string = $self->r->args; } else { $query_string = $ENV{'QUERY_STRING'} if defined $ENV{'QUERY_STRING'}; @@ -991,7 +992,7 @@ END_OF_FUNC sub read_from_client { my($self, $buff, $len, $offset) = @_; local $^W=0; # prevent a warning - return $MOD_PERL + return MOD_PERL ? $self->r->read($$buff, $len, $offset) : read(\*STDIN, $$buff, $len, $offset); } @@ -1026,7 +1027,7 @@ sub import_names { my($self,$namespace,$delete) = self_or_default(@_); $namespace = 'Q' unless defined($namespace); die "Can't import names into \"main\"\n" if \%{"${namespace}::"} == \%::; - if ($delete || $MOD_PERL || exists $ENV{'FCGI_ROLE'}) { + if ($delete || MOD_PERL || exists $ENV{'FCGI_ROLE'}) { # can anyone find an easier way to do this? foreach (keys %{"${namespace}::"}) { local *symbol = "${namespace}::${_}"; @@ -1522,7 +1523,7 @@ sub header { push(@header,map {ucfirst $_} @other); push(@header,"Content-Type: $type") if $type ne ''; my $header = join($CRLF,@header)."${CRLF}${CRLF}"; - if (($MOD_PERL >= 1) && !$nph) { + if ((MOD_PERL >= 1) && !$nph) { $self->r->send_cgi_header($header); return ''; } @@ -3991,38 +3992,6 @@ END_OF_AUTOLOAD #################################################################################### package CGITempFile; -sub find_tempdir { - $SL = $CGI::SL; - $MAC = $CGI::OS eq 'MACINTOSH'; - my ($vol) = $MAC ? MacPerl::Volumes() =~ /:(.*)/ : ""; - unless (defined $TMPDIRECTORY) { - @TEMP=("${SL}usr${SL}tmp","${SL}var${SL}tmp", - "C:${SL}temp","${SL}tmp","${SL}temp", - "${vol}${SL}Temporary Items", - "${SL}WWW_ROOT", "${SL}SYS\$SCRATCH", - "C:${SL}system${SL}temp"); - unshift(@TEMP,$ENV{'TMPDIR'}) if defined $ENV{'TMPDIR'}; - - # this feature was supposed to provide per-user tmpfiles, but - # it is problematic. - # unshift(@TEMP,(getpwuid($<))[7].'/tmp') if $CGI::OS eq 'UNIX'; - # Rob: getpwuid() is unfortunately UNIX specific. On brain dead OS'es this - # : can generate a 'getpwuid() not implemented' exception, even though - # : it's never called. Found under DOS/Win with the DJGPP perl port. - # : Refer to getpwuid() only at run-time if we're fortunate and have UNIX. - # unshift(@TEMP,(eval {(getpwuid($>))[7]}).'/tmp') if $CGI::OS eq 'UNIX' and $> != 0; - - foreach (@TEMP) { - do {$TMPDIRECTORY = $_; last} if -d $_ && -w _; - } - } - $TMPDIRECTORY = $MAC ? "" : "." unless $TMPDIRECTORY; -} - -find_tempdir(); - -$MAXTRIES = 5000; - # cute feature, but overload implementation broke it # %OVERLOAD = ('""'=>'as_string'); *CGITempFile::AUTOLOAD = \&CGI::AUTOLOAD; @@ -4044,15 +4013,10 @@ $AUTOLOADED_ROUTINES=<<'END_OF_AUTOLOAD'; 'new' => <<'END_OF_FUNC', sub new { my($package,$sequence) = @_; - my $filename; - find_tempdir() unless -w $TMPDIRECTORY; - for (my $i = 0; $i < $MAXTRIES; $i++) { - last if ! -f ($filename = sprintf("\%s${SL}CGItemp%d", $TMPDIRECTORY, $sequence++)); - } - # check that it is a more-or-less valid filename - return unless $filename =~ m!^([a-zA-Z0-9_\+ \'\":/.\$\\-]+)$!; - # this used to untaint, now it doesn't - # $filename = $1; + require File::Temp; + $TMPDIRECTORY = File::Temp::tempdir('cgi.XXXXXXXX', TMPDIR => 1, CLEANUP => 1) + unless $TMPDIRECTORY && -d $TMPDIRECTORY && -w _; + my $filename = File::Temp::tempnam($TMPDIRECTORY, 'cgi'); return bless \$filename; } END_OF_FUNC @@ -4166,7 +4130,7 @@ script and restore it later. For example, using the object oriented style, here is how you create a simple "Hello World" HTML page: - #!/usr/local/bin/perl -w + #!/usr/bin/perl -w use CGI; # load CGI routines $q = new CGI; # create new CGI object print $q->header, # create the HTTP header @@ -4184,7 +4148,7 @@ The main differences are that we now need to import a set of functions into our name space (usually the "standard" functions), and we don't need to create the CGI object. - #!/usr/local/bin/perl + #!/usr/bin/perl use CGI qw/:standard/; # load standard CGI routines print header, # create the HTTP header start_html('hello world'), # start the HTML @@ -4916,20 +4880,6 @@ To ensure that the temporary file cannot be read by other CGI scripts, use suEXEC or a CGI wrapper program to run your script. The temporary file is created with mode 0600 (neither world nor group readable). -The temporary directory is selected using the following algorithm: - - 1. if the current user (e.g. "nobody") has a directory named - "tmp" in its home directory, use that (Unix systems only). - - 2. if the environment variable TMPDIR exists, use the location - indicated. - - 3. Otherwise try the locations /usr/tmp, /var/tmp, C:\temp, - /tmp, /temp, ::Temporary Items, and \WWW_ROOT. - -Each of these locations is checked that it is a directory and is -writable. If not, the algorithm tries the next choice. - =back =head2 SPECIAL FORMS FOR IMPORTING HTML-TAG FUNCTIONS @@ -7351,7 +7301,7 @@ path information in CGI scripts destined for use with IIS. As per path_info() but returns the additional path information translated into a physical path, e.g. -"/usr/local/etc/httpd/htdocs/additional/stuff". +"/etc/httpd/htdocs/additional/stuff". The Microsoft IIS is broken with respect to the translated path as well. @@ -7509,7 +7459,7 @@ You are also advised to put the script into NPH mode and to set $| to Here is a simple script that demonstrates server push: - #!/usr/local/bin/perl + #!/usr/bin/perl use CGI qw/:push -nph/; $| = 1; print multipart_init(-boundary=>'----here we go!'); @@ -7760,7 +7710,7 @@ for suggestions and bug fixes. =head1 A COMPLETE EXAMPLE OF A SIMPLE FORM-BASED SCRIPT - #!/usr/local/bin/perl + #!/usr/bin/perl use CGI ':standard'; diff --git a/CGI/Apache.pm b/CGI/Apache.pm index c711a48..85aa98e 100644 --- a/CGI/Apache.pm +++ b/CGI/Apache.pm @@ -1,5 +1,6 @@ use CGI; +package CGI::Apache; $VERSION = '1.00'; 1; diff --git a/CGI/Carp.pm b/CGI/Carp.pm index 4ddf27c..ac0be1d 100644 --- a/CGI/Carp.pm +++ b/CGI/Carp.pm @@ -408,18 +408,22 @@ sub _warn { } } +use constant MOD_PERL => + exists $ENV{MOD_PERL} ? + exists $ENV{MOD_PERL_API_VERSION} && $ENV{MOD_PERL_API_VERSION} == 2 ? + 2 : 1 : 0; # The mod_perl package Apache::Registry loads CGI programs by calling # eval. These evals don't count when looking at the stack backtrace. sub _longmess { my $message = Carp::longmess(); $message =~ s,eval[^\n]+(ModPerl|Apache)/(?:Registry|Dispatch)\w*\.pm.*,,s - if exists $ENV{MOD_PERL}; + if MOD_PERL; return $message; } sub ineval { - (exists $ENV{MOD_PERL} ? 0 : $^S) || _longmess() =~ /eval [\{\']/m + (MOD_PERL ? 0 : $^S) || _longmess() =~ /eval [\{\']/m } sub die { @@ -446,7 +450,7 @@ sub die { my($file,$line,$id) = id(1); $arg .= " at $file line $line." unless $arg=~/\n$/; &fatalsToBrowser($arg) if $WRAP; - if (($arg =~ /\n$/) || !exists($ENV{MOD_PERL})) { + if (($arg =~ /\n$/) || !MOD_PERL) { my $stamp = stamp; $arg=~s/^/$stamp/gm; } @@ -518,7 +522,6 @@ For help, please send mail to $wm, giving this error message and the time and date of the error. END ; - my $mod_perl = exists $ENV{MOD_PERL}; if ($CUSTOM_MSG) { if (ref($CUSTOM_MSG) eq 'CODE') { @@ -540,10 +543,9 @@ $outer_message END ; - if ($mod_perl) { + if (MOD_PERL) { my $r; - if ($ENV{MOD_PERL_API_VERSION} && $ENV{MOD_PERL_API_VERSION} == 2) { - $mod_perl = 2; + if (MOD_PERL == 2) { require Apache2::RequestRec; require Apache2::RequestIO; require Apache2::RequestUtil; @@ -561,7 +563,7 @@ END # handler to produce the doc for us. if ($r->bytes_sent) { $r->print($mess); - $mod_perl == 2 ? ModPerl::Util::exit(0) : $r->exit; + MOD_PERL == 2 ? ModPerl::Util::exit(0) : $r->exit; } else { # MSIE won't display a custom 500 response unless it is >512 bytes! if ($ENV{HTTP_USER_AGENT} =~ /MSIE/) { diff --git a/CGI/Cookie.pm b/CGI/Cookie.pm index c9f318e..c854d17 100644 --- a/CGI/Cookie.pm +++ b/CGI/Cookie.pm @@ -22,16 +22,11 @@ use overload '""' => \&as_string, 'fallback'=>1; # Turn on special checking for Doug MacEachern's modperl -my $MOD_PERL = 0; -if (exists $ENV{MOD_PERL}) { - if (exists $ENV{MOD_PERL_API_VERSION} && $ENV{MOD_PERL_API_VERSION} == 2) { - $MOD_PERL = 2; - require Apache2::RequestUtil; - require APR::Table; - } else { - $MOD_PERL = 1; +if (CGI::MOD_PERL == 2) { + require Apache2::RequestUtil; + require APR::Table; +} elsif (CGI::MOD_PERL == 1) { require Apache; - } } # fetch a list of cookies from the environment and @@ -70,13 +65,13 @@ sub fetch { sub get_raw_cookie { my $r = shift; - $r ||= eval { $MOD_PERL == 2 ? + $r ||= eval { CGI::MOD_PERL == 2 ? Apache2::RequestUtil->request() : - Apache->request } if $MOD_PERL; + Apache->request } if CGI::MOD_PERL; if ($r) { $raw_cookie = $r->headers_in->{'Cookie'}; } else { - if ($MOD_PERL && !exists $ENV{REQUEST_METHOD}) { + if (CGI::MOD_PERL && !exists $ENV{REQUEST_METHOD}) { die "Run $r->subprocess_env; before calling fetch()"; } $raw_cookie = $ENV{HTTP_COOKIE} || $ENV{COOKIE}; @@ -179,10 +174,10 @@ sub bake { my ($self, $r) = @_; $r ||= eval { - $MOD_PERL == 2 + CGI::MOD_PERL == 2 ? Apache2::RequestUtil->request() : Apache->request - } if $MOD_PERL; + } if CGI::MOD_PERL; if ($r) { $r->headers_out->add('Set-Cookie' => $self->as_string); } else { diff --git a/CGI/Fast.pm b/CGI/Fast.pm index d29feb4..ce7d205 100644 --- a/CGI/Fast.pm +++ b/CGI/Fast.pm @@ -106,7 +106,7 @@ waiting some more. A typical FastCGI script will look like this: - #!/usr/local/bin/perl # must be a FastCGI version of perl! + #!/usr/bin/perl # must be a FastCGI version of perl! use CGI::Fast; &do_some_initialization(); while ($q = new CGI::Fast) { @@ -181,7 +181,7 @@ Maximum length of the queue of pending connections. For example: - #!/usr/local/bin/perl # must be a FastCGI version of perl! + #!/usr/bin/perl # must be a FastCGI version of perl! use CGI::Fast; &do_some_initialization(); $ENV{FCGI_SOCKET_PATH} = "sputnik:8888"; diff --git a/CGI/Pretty.pm b/CGI/Pretty.pm index 2147143..9184dda 100644 --- a/CGI/Pretty.pm +++ b/CGI/Pretty.pm @@ -147,8 +147,8 @@ sub new { my $class = shift; my $this = $class->SUPER::new( @_ ); - if ($CGI::MOD_PERL) { - if ($CGI::MOD_PERL == 1) { + if (CGI::MOD_PERL) { + if (CGI::MOD_PERL == 1) { my $r = Apache->request; $r->register_cleanup(\&CGI::Pretty::_reset_globals); } diff --git a/CGI/Switch.pm b/CGI/Switch.pm index b8cc9ef..8a84fc2 100644 --- a/CGI/Switch.pm +++ b/CGI/Switch.pm @@ -1,5 +1,6 @@ use CGI; +package CGI::Switch; $VERSION = '1.00'; 1; diff --git a/perl-CGI.spec b/perl-CGI.spec new file mode 100644 index 0000000..0d4bc69 --- /dev/null +++ b/perl-CGI.spec @@ -0,0 +1,160 @@ +%define dist CGI.pm +Name: perl-CGI +Version: 3.37 +Release: alt1 + +Summary: Simple CGI class for Perl +License: GPL or Artistic +Group: Development/Perl + +URL: %CPAN %dist +Source: %dist-%version.tar +Patch: %name-%version-%release.patch + +BuildArch: noarch + +# skip conditional dependencies +%add_findreq_skiplist */CGI/Fast.pm + +# Automatically added by buildreq on Thu Apr 24 2008 +BuildRequires: perl-FCGI perl-devel + +%description +This is CGI.pm, an easy-to-use Perl5 library for writing +World Wide Web CGI scripts. + +%prep +%setup -q -n %dist-%version +%patch -p1 +bzip2 -9kf Changes + +%build +%perl_vendor_build + +%install +%perl_vendor_install + +%files +%doc Changes.bz2 README examples +%perl_vendor_privlib/CGI.pm +%dir %perl_vendor_privlib/CGI +%perl_vendor_privlib/CGI/*.pm + +%changelog +* Thu Apr 24 2008 Alexey Tourbin <at@altlinux.ru> 3.37-alt1 +- 3.35 -> 3.37 + +* Tue Apr 15 2008 Alexey Tourbin <at@altlinux.ru> 3.35-alt1 +- 3.33 -> 3.35 + +* Sun Mar 02 2008 Alexey Tourbin <at@altlinux.ru> 3.33-alt1 +- 3.29 -> 3.33 + +* Mon Aug 20 2007 Alexey Tourbin <at@altlinux.ru> 3.29-alt2 +- changed src.rpm packaging to keep upstream tarball unchanged + +* Tue Apr 17 2007 Alexey Tourbin <at@altlinux.ru> 3.29-alt1 +- 3.28 -> 3.29 + +* Fri Mar 30 2007 Alexey Tourbin <at@altlinux.ru> 3.28-alt1 +- 3.25 -> 3.28 +- fixed insecure temporary file creation in CGI.pm + +* Fri Oct 06 2006 Alexey Tourbin <at@altlinux.ru> 3.25-alt1 +- 3.23 -> 3.25 +- imported sources into git and built with gear +- turned mod_perl variables into constants so that constant folding works; + relaxed mode for perl.req is not needed now + +* Fri Aug 25 2006 Alexey Tourbin <at@altlinux.ru> 3.23-alt1 +- 3.22 -> 3.23 + +* Thu Aug 24 2006 Alexey Tourbin <at@altlinux.ru> 3.22-alt1 +- 3.21 -> 3.22 + +* Tue Aug 22 2006 Alexey Tourbin <at@altlinux.ru> 3.21-alt1 +- 3.20 -> 3.21 + +* Wed Apr 26 2006 Alexey Tourbin <at@altlinux.ru> 3.20-alt1 +- 3.17 -> 3.20 + +* Mon Apr 17 2006 Alexey Tourbin <at@altlinux.ru> 3.17-alt1 +- 3.11 -> 3.17 + +* Mon Aug 08 2005 Alexey Tourbin <at@altlinux.ru> 3.11-alt1 +- 3.10 -> 3.11 + +* Sat May 21 2005 Alexey Tourbin <at@altlinux.ru> 3.10-alt1 +- 3.09 -> 3.10 +- removed old dependencies + +* Sat May 07 2005 Alexey Tourbin <at@altlinux.ru> 3.09-alt1 +- 3.07 -> 3.09 + +* Sat Mar 19 2005 Alexey Tourbin <at@altlinux.ru> 3.07-alt1.1 +- fixed $CGI::Apache::VERSION (cpan #11941) +- fixed $CGI::Switch::VERSION (cpan #11942) + +* Wed Mar 16 2005 Alexey Tourbin <at@altlinux.ru> 3.07-alt1 +- 3.06 -> 3.07 + +* Thu Mar 10 2005 Alexey Tourbin <at@altlinux.ru> 3.06-alt1 +- 3.05 -> 3.06 +- cgi_docs.html not packaged (no longer maintained) +- cgi-lib_porting.html not packaged (cgi-lib.pl was defunct) +- manual pages not packaged (use perldoc) + +* Sat Feb 19 2005 ALT QA Team Robot <qa-robot@altlinux.org> 3.05-alt1.1 +- Rebuilt with rpm-build-perl-0.5.1. + +* Fri Jul 02 2004 Alexey Tourbin <at@altlinux.ru> 3.05-alt1 +- 3.04 -> 3.05 + +* Tue Mar 16 2004 Alexey Tourbin <at@altlinux.ru> 3.04-alt1 +- 3.04 + +* Fri Dec 19 2003 Alexey Tourbin <at@altlinux.ru> 3.01-alt1 +- 3.01 +- upload_tmpdir.patch not needed + +* Thu Aug 21 2003 Alexey Tourbin <at@altlinux.ru> 3.00-alt1 +- 3.00 (cross-site scripting vulnerability fixed) +- upload_tmpdir.patch updated + +* Tue Jul 22 2003 Alexey Tourbin <at@altlinux.ru> 2.98-alt1 +- 2.98 (crash in Dump function fixed) +- upload_tmpdir.patch updated + +* Thu Jul 10 2003 Alexey Tourbin <at@altlinux.ru> 2.97-alt1 +- 2.97 (bugfixes) + +* Mon Jun 16 2003 Alexey Tourbin <at@altlinux.ru> 2.95-alt1 +- 2.95 +- merged packages down, with dependency tuning + +* Fri Mar 21 2003 Stanislav Ievlev <inger@altlinux.ru> 2.91-alt1 +- 2.91 + +* Tue Nov 12 2002 Stanislav Ievlev <inger@altlinux.ru> 2.89-alt2 +- hack reqs + +* Thu Oct 31 2002 Alexey Tourbin <at@altlinux.ru> 2.89-alt1 +- 2.89 +- package split: perl-CGI, perl-CGI-Apache, perl-CGI-FCGI +- perl-5.8 build with new rpm macros + +* Sun Mar 10 2002 Yuri N. Sedunov <aris@altlinux.ru> 2.80-alt1 +- 2.80 +- spec file skeletonization. + +* Mon Jun 25 2001 Stanislav Ievlev <inger@altlinux.ru> 2.752-alt1 +- Release for ALT Linux. + +* Wed Apr 25 2001 Pixel <pixel@mandrakesoft.com> 2.752-2mdk +- rebuild with new perl + +* Sat Mar 3 2001 Pixel <pixel@mandrakesoft.com> 2.752-1mdk +- cleanup (made by Alexander Skwar <ASkwar@Linux-Mandrake.com>) +- First seperate Mandrake version +- Added Upload Tmpdir patch from perl +- Requires perl *WITHOUT* CGI.pm!