=================================================================== RCS file: /cvs/cvsweb/cvsweb.cgi,v retrieving revision 4.29 retrieving revision 4.32 diff -u -p -r4.29 -r4.32 --- cvsweb/cvsweb.cgi 2019/11/29 13:39:50 4.29 +++ cvsweb/cvsweb.cgi 2019/11/29 15:05:26 4.32 @@ -1,5 +1,5 @@ #!/usr/bin/perl -# $Id: cvsweb.cgi,v 4.29 2019/11/29 13:39:50 schwarze Exp $ +# $Id: cvsweb.cgi,v 4.32 2019/11/29 15:05:26 schwarze Exp $ # $knu: cvsweb.cgi,v 1.299 2010/11/13 16:37:18 simon # # cvsweb - a CGI interface to CVS trees. @@ -69,7 +69,7 @@ use vars qw ( $bylog $byfile $defaultDiffType $logsort $cvstree $cvsroot $charset $output_filter %CMD $allow_compress $backicon $diricon $fileicon $fullname $logo $defaulttitle $address $binfileicon - $long_intro $short_instruction $shortLogLen $show_author + $shortLogLen $show_author $tablepadding $hr_breakable $showfunc $hr_ignwhite $hr_ignkeysubst $inputTextSize $mime_types $allow_annotate $allow_markup $allow_mailtos $allow_log_extra $allow_dir_extra $allow_source_extra @@ -78,7 +78,7 @@ use vars qw ( $tabstop $state $annTable $sel @ForbiddenFiles $use_descriptions %descriptions $dwhere $use_moddate $gzip_open $file_list_len - $allow_tar @tar_options @gzip_options @cvs_options + $allow_tar @tar_options @cvs_options @annotate_options @rcsdiff_options $HTML_DOCTYPE $HTML_META $cssurl $CSS ); @@ -128,7 +128,7 @@ EOM $MimeTypes = undef if $@; $CheckoutMagic = '~checkout~'; - $CMD{$_} = "/usr/bin/$_" for (qw(cvs gzip rcsdiff rlog)); + $CMD{$_} = "/usr/bin/$_" for (qw(cvs rcsdiff rlog)); $CMD{tar} = "/bin/tar"; } @@ -190,6 +190,10 @@ sub checkout_to_temp($$$); # (think mod_perl)... delete(@ENV{qw(PATH IFS CDPATH ENV BASH_ENV)}); +# Helps to achieve read only access to the repositories +# with cvs >= 1.12.1 and doesn't hurt other versions. +$ENV{CVSREADONLYFS} = 1; + # Location of the configuration file inside the web server chroot: $config = '/conf/cvsweb/cvsweb.conf'; @@ -199,7 +203,7 @@ $config = '/conf/cvsweb/cvsweb.conf'; %MTYPES = %tags = %alltags = %fileinfo = %DIFF_COMMANDS = (); $logo = $defaulttitle = - $address = $long_intro = $short_instruction = $shortLogLen = $show_author = + $address = $shortLogLen = $show_author = $tablepadding = $hr_breakable = $showfunc = $hr_ignwhite = $hr_ignkeysubst = $inputTextSize = $mime_types = $allow_annotate = $allow_markup = $allow_compress = $edit_option_form = @@ -678,22 +682,13 @@ if ($input{tarball}) { ('500 Internal Error', 'Export failure (exit status %s), output:
%s
', $errcode, $err || $export_err); - } else { - $| = 1; # Essential to get the buffering right. local (*TAR_OUT); - - my (@cmd, $ctype); - my @tar = ($CMD{tar}, @tar_options, '-cf', '-', $basedir); - my @gzip = ($CMD{gzip}, @gzip_options, '-c'); - push(@cmd, \@tar, '|', \@gzip); - $ctype = 'application/x-gzip'; - push(@cmd, '>pipe', \*TAR_OUT); - - my ($h, $err) = startproc(@cmd); + my ($h, $err) = startproc($CMD{tar}, @tar_options, '-czf', '-', + $basedir, '>pipe', \*TAR_OUT); if ($h) { - print "Content-Type: $ctype\r\n\r\n"; + print "Content-Type: application/x-gzip\r\n\r\n"; local $/ = undef; print ; $h->finish(); @@ -727,8 +722,6 @@ if (-d $fullname) { if ($where eq '/') { html_header($defaulttitle); - $long_intro =~ s/!!CVSROOTdescr!!/$CVSROOTdescr{$cvstree}/g; - print $long_intro; } else { html_header($where); my $html = (-f catfile($fullname, 'README.cvs.html,v') || @@ -765,7 +758,6 @@ if (-d $fullname) { } $h->finish(); } - print $short_instruction; } if ($use_descriptions &&