=================================================================== RCS file: /cvs/cvsweb/cvsweb.cgi,v retrieving revision 4.17 retrieving revision 4.20 diff -u -p -r4.17 -r4.20 --- cvsweb/cvsweb.cgi 2019/11/11 13:28:36 4.17 +++ cvsweb/cvsweb.cgi 2019/11/11 15:46:39 4.20 @@ -1,5 +1,5 @@ #!/usr/bin/perl -# $Id: cvsweb.cgi,v 4.17 2019/11/11 13:28:36 schwarze Exp $ +# $Id: cvsweb.cgi,v 4.20 2019/11/11 15:46:39 schwarze Exp $ # $knu: cvsweb.cgi,v 1.299 2010/11/13 16:37:18 simon # # cvsweb - a CGI interface to CVS trees. @@ -62,20 +62,19 @@ use vars qw ( %alltags %fileinfo %tags @branchnames %nameprinted %symrev %revsym @allrevisions %date %author @revdisplayorder @revisions %state %difflines %log %branchpoint @revorder $keywordsubstitution - $prcgi @prcategories $re_prcategories $prkeyword $re_prkeyword $mancgi - $doCheckout $scriptname $scriptwhere + $mancgi $doCheckout $scriptname $scriptwhere $where $Browser $nofilelinks $maycompress @stickyvars $is_links $is_lynx $is_w3m $is_msie $is_mozilla3 $is_textbased %input $query $barequery $sortby $bydate $byrev $byauthor $bylog $byfile $defaultDiffType $logsort $cvstree $cvsroot $charset $output_filter - @command_path %CMD $allow_compress $backicon $diricon $fileicon $graphicon + @command_path %CMD $allow_compress $backicon $diricon $fileicon $fullname $cvstreedefault $logo $defaulttitle $address $binfileicon $long_intro $short_instruction $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 - $allow_cvsgraph $cvsgraph_config $edit_option_form + $edit_option_form $show_subdir_lastmod $show_log_in_markup $preformat_in_markup $tabstop $state $annTable $sel @ForbiddenFiles $use_descriptions %descriptions @mytz $dwhere @@ -83,7 +82,6 @@ use vars qw ( $allow_tar @tar_options @gzip_options @zip_options @cvs_options @annotate_options @rcsdiff_options $HTML_DOCTYPE $HTML_META $cssurl $CSS $cvshistory_url - $allow_enscript @enscript_options %enscript_types ); require Compress::Zlib; @@ -150,16 +148,12 @@ sub config_error($$); sub redirect($;$); sub safeglob($); sub search_path($); -sub getEnscriptHL($); sub getMimeType($;$); sub head($;$); sub scan_directives(@); sub openOutputFilter(); sub doAnnotate($$); sub doCheckout($$$); -sub doEnscript($$$;$); -sub doGraph(); -sub doGraphView(); sub cvswebMarkup($$$$$$;$); sub viewable($); sub doDiff($$$$$$); @@ -180,7 +174,6 @@ sub download_url($$;$); sub download_link($$$;$); sub display_url($$;$); sub display_link($$;$$); -sub graph_link($;$); sub history_link($$;$); sub toggleQuery($;$); sub htmlquote($); @@ -213,8 +206,8 @@ $cvstreedefault = $logo = $defaulttitle = $hr_ignkeysubst = $inputTextSize = $mime_types = $allow_annotate = $allow_markup = $allow_compress = $edit_option_form = $show_subdir_lastmod = $show_log_in_markup = $preformat_in_markup = - $tabstop = $use_moddate = $gzip_open = $DEBUG = $allow_cvsgraph = - $cvsgraph_config = $cvshistory_url = $allow_tar = undef; + $tabstop = $use_moddate = $gzip_open = $DEBUG = + $cvshistory_url = $allow_tar = undef; $allow_version_select = $allow_mailtos = $allow_log_extra = 1; @@ -373,8 +366,8 @@ if (defined($ENV{QUERY_STRING})) { undef %input; my $t; -for my $p (qw(graph hideattic hidecvsroot hidenonreadable ignorecase ln copt - makeimage options tarball)) { +for my $p (qw(hideattic hidecvsroot hidenonreadable ignorecase ln copt + options tarball)) { $t = $query{$p}; if (defined($t)) { ($input{$p}) = ($t =~ /^([01]|on)$/) @@ -537,27 +530,6 @@ foreach (@stickyvars) { } } -if ($allow_enscript) { - push(@DIFFTYPES, qw(uc cc)); - @DIFFTYPES{qw(uc cc)} = ( - { - 'descr' => 'unified, colored', - 'opts' => ['-u'], - 'colored' => 0, - }, - { - 'descr' => 'context, colored', - 'opts' => ['-c'], - 'colored' => 0, - }, - ); -} else { - # No Enscript -> respect difftype, but don't offer colorization. - if ($input{f} && $input{f} =~ /^([ucs])c$/) { - $input{f} = $1; - } -} - # is there any query ? if (@barequery) { $barequery = join (';', @barequery); @@ -630,10 +602,6 @@ if (-f $config_cvstree) { } undef $config_cvstree; -$re_prcategories = '(?:' . join ('|', @prcategories) . ')' if @prcategories; -$re_prkeyword = quotemeta($prkeyword) if defined($prkeyword); -$prcgi .= '%s' if defined($prcgi) && $prcgi !~ /%s/; - $fullname = catfile($cvsroot, $where); my $rewrite = 0; @@ -1056,12 +1024,11 @@ EOF $filesfound++; printf "\n", ($dirrow % 2) ? 'even' : 'odd'; - printf '', $allow_cvsgraph ? '' : ' colspan="2"'; + printf ''; my $icon = $isbinary ? $binfileicon : $fileicon; print $nofilelinks ? $icon : &link($icon, $url); print ' ', &link(htmlquote($file), $url), $attic; - print '', graph_link($fileurl) if $allow_cvsgraph; print "\n", display_link($fileurl, $rev); my $ageclass = 'age'; my $age = ''; @@ -1285,16 +1252,6 @@ elsif (-f $fullname . ',v') { exit; } - if ($allow_cvsgraph && $input{graph}) { - if ($input{makeimage}) { - doGraph(); - } else { - doGraphView(); - } - gzipclose(); - exit; - } - &doLog($fullname); } @@ -1492,39 +1449,6 @@ sub htmlify($;$) } if ($extra) { - - # get PR #'s as link: "PR#nnnn" "PR: nnnn, ..." "PR nnnn, ..." "bin/nnnn" - if (defined($prcgi) && defined($re_prkeyword)) { - my $prev; - - do { - $prev = $_; - $_ = htmlify_sub { - s{ - (\b$re_prkeyword[:\#]?\s* - (?: - \#? - \d+[,\s]\s* - )* - \#?) - (\d+)\b - }{ - $1 . &link($2, sprintf($prcgi, $2)) - }egix; - } $_; - } while ($_ ne $prev); - - if (defined($re_prcategories)) { - $_ = htmlify_sub { - s{ - (\b$re_prcategories/(\d+)\b) - }{ - &link($1, sprintf($prcgi, $2)) - }egox; - } $_; - } - } - # get manpage specs as link: "foo.1" "foo(1)" if (defined($mancgi)) { $_ = htmlify_sub { @@ -1702,21 +1626,6 @@ sub search_path($) # -# Gets the enscript(1) highlight mode corresponding to the given filename, -# or undef if unsupported. -# -sub getEnscriptHL($) -{ - return undef unless $allow_enscript; - my ($filename) = @_; - while (my ($hl, $regex) = each %enscript_types) { - return $hl if ($filename =~ $regex); - } - return undef; -} - - -# # Gets the MIME type for the given file name. # sub getMimeType($;$) @@ -2144,14 +2053,8 @@ EOF printf '
', $url . $barequery; } else { - print "
\n";
     my $linenumbers = $input{ln} || 0;
-
-    if (my $enscript_hl = getEnscriptHL($filename)) {
-      doEnscript($filehandle, $enscript_hl, $linenumbers);
-
-    } else {
       my $ln  = 0;
       my @buf = ();
       my $ts  = undef;
@@ -2171,8 +2074,6 @@ EOF
         }
         print $preformat_in_markup ? spacedHtmlText($_, $ts) : htmlquote($_);
       }
-    }
-
     print "
\n"; } html_footer(); @@ -2315,36 +2216,6 @@ sub doDiff($$$$$$) html_footer(); gzipclose(); exit; - - } elsif ($f =~ /^([ucs])c$/) { - # - # Enscript colored diff. - # - my $hl = 'diff'; - $hl .= $1 if ($1 eq 'u' || $1 eq 's'); - (my $where_nd = $where) =~ s/\.diff$//; - (my $pathname = $where_nd) =~ s|((?<=/)Attic/)?[^/]*$||; - (my $filename = $where_nd) =~ s|^.*/||; - (my $swhere = $scriptwhere) =~ s|\.diff$||; - navigateHeader($swhere, $pathname, $filename, $rev2, 'diff'); - printf(<Diff for /%s between versions %s and %s -
-EOF
-    doEnscript(\$fh, $hl, 0, 'cvsweb_diff');
-    print <
-
-
-EOF - printDiffSelectStickyVars(); - print 'Diff format: '; - printDiffSelect(); - print "\n
\n"; - html_footer(); - gzipclose(); - exit; - } else { # # Plain diff. @@ -2912,8 +2783,6 @@ sub printLog($$$;$$) $fileurl, $_, $barequery, $_)); } } - print ' - ', graph_link('', 'revision graph') - if (!$inlogview && $allow_cvsgraph); } print "
\n"; @@ -3046,89 +2915,6 @@ sub printLog($$$;$$) } -# -# Generates the HTML view for CvsGraph. -# -sub doGraphView() -{ - (my $pathname = $where) =~ s|[^/]*$||; - (my $filename = $where) =~ s|^.*/||; - - navigateHeader($scriptwhere, $pathname, $filename, undef, 'graph'); - - my $title = 'Revision graph of ' . htmlquote($pathname . $filename); - my $mapname = 'CvsGraphMap'; - - printf(<%s -
%s -EOF - - # Remove any pre-existing tag/branch names from branch links. - (my $notag_query = $barequery) =~ s/;+only_with_tag=.*?(?=;|$)//g; - - my @graph_cmd = - ($CMD{cvsgraph}, - '-r', $cvsroot, - '-m', $pathname, - '-i', - '-M', $mapname, - '-x', 'x', - "-Omap_branch_href=\"href=\\\"./?only_with_tag=%(%t%)$notag_query\\\"\"", - "-Omap_rev_href=\"href=\\\"?rev=%(%R%)$barequery\\\"\"", - "-Omap_diff_href=\"href=\\\"%(%F%).diff" . - "?r1=%(%P%);r2=%(%R%)$barequery\\\"\"", - ); - push(@graph_cmd, '-c', $cvsgraph_config) if $cvsgraph_config; - push(@graph_cmd, $filename . ',v'); - - local *CVSGRAPH_OUT; - my ($h, $err) = - startproc(\@graph_cmd, \"", '>pipe', \*CVSGRAPH_OUT); - fatal('500 Internal Error', $err) unless $h; - - # Browser compatibility kludge: many browsers do not support client side - # image maps where the element contains only the id attribute. Let's - # add the corresponding name attribute to it on the fly. - while () { - s/(/$1 name="$2">/; - print; - } - - $h->finish(); - print "
\n"; - - html_footer(); -} - - -# -# Generates a graph using CvsGraph. -# -sub doGraph() -{ - (my $pathname = $where) =~ s|[^/]*$||; - (my $filename = $where) =~ s|^.*/||; - - http_header('image/png'); - - my @graph_cmd = ($CMD{cvsgraph}, '-r', $cvsroot, '-m', $pathname); - push(@graph_cmd, '-c', $cvsgraph_config) if $cvsgraph_config; - push(@graph_cmd, $filename . ',v'); - - local *CVSGRAPH_OUT; - my ($h, $err) = - startproc(\@graph_cmd, \"", '>pipe', \*CVSGRAPH_OUT); - fatal('500 Internal Error', $err) unless $h; - { - local $/ = undef; - binmode(\*STDOUT); - print ; - } - $h->finish(); -} - - sub doLog($) { my ($fullname) = @_; @@ -3153,8 +2939,6 @@ sub doLog($) &clickablePath($upwhere, 1), "\n

\n"; print "

\n "; print &link('Request diff between arbitrary revisions', '#diff'); - print ' - ', &graph_link('', 'Display revisions graphically') - if $allow_cvsgraph; if ($cvshistory_url) { (my $d = $upwhere) =~ s|/+$||; print ' - ', history_link($d, $filename); @@ -3554,36 +3338,6 @@ EOF } -sub doEnscript($$$;$) -{ - my ($filehandle, $highlight, $linenumbers, $lang) = @_; - $lang ||= 'cvsweb'; - - my @cmd = ($CMD{enscript}, - @enscript_options, - '-q', "--language=$lang", '-o', '-', "--highlight=$highlight"); - - local *ENSCRIPT_OUT; - my ($h, $err) = - startproc(\@cmd, $filehandle, '>pipe', \*ENSCRIPT_OUT); - fatal('500 Internal Error', $err) unless $h; - - # We could short-circuit and have enscript output directly to STDOUT above, - # but that doesn't work with mod_perl (at least some 1.99 versions). - if ($linenumbers) { - my $ln = 0; - while () { - printf '%5d: ', (++$ln) x 2; - print $_; - } - } else { - local $/ = undef; - print ; - } - $h->finish(); -} - - # # The passed in $path and $filename should not be URI escaped, and $swhere # *should* be. @@ -3919,17 +3673,6 @@ sub display_link($$;$$) return sprintf('%s', display_url($url, $revision, $mtype) . $barequery, htmlquote($textlink)); -} - -# -# Expects the passed in URL to be URI escaped, and without a query string. -# The passed in link text should be already HTML escaped as appropriate. -# -sub graph_link($;$) -{ - my ($url, $text) = @_; - $text ||= $graphicon; - return sprintf('%s', $url, $barequery, $text); } #