===================================================================
RCS file: /cvs/cvsweb/cvsweb.cgi,v
retrieving revision 4.19
retrieving revision 4.23
diff -u -p -r4.19 -r4.23
--- cvsweb/cvsweb.cgi 2019/11/11 14:56:27 4.19
+++ cvsweb/cvsweb.cgi 2019/11/26 11:21:27 4.23
@@ -1,5 +1,5 @@
#!/usr/bin/perl
-# $Id: cvsweb.cgi,v 4.19 2019/11/11 14:56:27 schwarze Exp $
+# $Id: cvsweb.cgi,v 4.23 2019/11/26 11:21:27 schwarze Exp $
# $knu: cvsweb.cgi,v 1.299 2010/11/13 16:37:18 simon
#
# cvsweb - a CGI interface to CVS trees.
@@ -62,8 +62,7 @@ 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
@@ -82,7 +81,7 @@ use vars qw (
$use_moddate $gzip_open $file_list_len
$allow_tar @tar_options @gzip_options @zip_options @cvs_options
@annotate_options @rcsdiff_options
- $HTML_DOCTYPE $HTML_META $cssurl $CSS $cvshistory_url
+ $HTML_DOCTYPE $HTML_META $cssurl $CSS
);
require Compress::Zlib;
@@ -145,7 +144,6 @@ sub spacedHtmlText($;$);
sub link($$);
sub revcmp($$);
sub fatal($$@);
-sub config_error($$);
sub redirect($;$);
sub safeglob($);
sub search_path($);
@@ -175,7 +173,6 @@ sub download_url($$;$);
sub download_link($$$;$);
sub display_url($$;$);
sub display_link($$;$$);
-sub history_link($$;$);
sub toggleQuery($;$);
sub htmlquote($);
sub htmlunquote($);
@@ -208,7 +205,7 @@ $cvstreedefault = $logo = $defaulttitle =
$allow_markup = $allow_compress = $edit_option_form =
$show_subdir_lastmod = $show_log_in_markup = $preformat_in_markup =
$tabstop = $use_moddate = $gzip_open = $DEBUG =
- $cvshistory_url = $allow_tar = undef;
+ $allow_tar = undef;
$allow_version_select = $allow_mailtos = $allow_log_extra = 1;
@@ -264,7 +261,7 @@ $scriptname = '' unless defined($scriptname);
$where = $pathinfo;
$doCheckout = $where =~ s|^/$CheckoutMagic/|/|o;
$where =~ s|^/||;
-$scriptname =~ s|^/*|/|;
+$scriptname =~ s|^/+||;
# Let's workaround thttpd's stupidity..
if ($scriptname =~ m|/$|) {
@@ -272,6 +269,7 @@ if ($scriptname =~ m|/$|) {
my $re = quotemeta $pathinfo;
$scriptname =~ s/$re$//;
}
+$scriptname = "/$scriptname" if $scriptname;
# $scriptname : the URI escaped path to this script
# $where : the path in the CVS repository (without leading /, or only /)
@@ -316,14 +314,18 @@ $maycompress = (
qw(cvsroot hideattic ignorecase sortby logsort f only_with_tag ln
hidecvsroot hidenonreadable);
-#
# Load configuration.
-#
-if (-f $config) {
- do "$config" or config_error($config, $@);
-} else {
- fatal("500 Internal Error",
- 'Configuration not found. Set the parameter $config
in cvsweb.cgi to your cvsweb.conf configuration file first.');
+{
+ $config =~ m|^/| or fatal '500 Internal Error',
+ 'Configuration file name "%s
" is not an absolute path.',
+ $config;
+ defined do $config and last;
+ $@ and fatal '500 Internal Error',
+ 'Error loading configuration file "%s
":
%s', + $config, $@; + fatal '500 Internal Error', + 'Cannot read configuration file "
%s
": %s',
+ $config, $! || 'unknown error';
}
# Try to find a readable dir where we can cd into. Some abs_path()
@@ -603,10 +605,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;
@@ -817,10 +815,6 @@ if (-d $fullname) {
} else {
print 'Current directory: ', clickablePath($where, 0), ''; - if ($cvshistory_url) { - (my $d = $where) =~ s|^/*(.*?)/*$|$1|; - print ' - ', history_link($d, ''); - } print "
\n"; print "Current tag: ", htmlquote($input{only_with_tag}), "
\n" if $input{only_with_tag}; @@ -1454,39 +1448,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 { @@ -1583,17 +1544,6 @@ sub fatal($$@) # -# Signal a (fatal) configuration error. -# -sub config_error($$) -{ - fatal('500 Internal Error', - 'Error loading configuration file "%s
":\n "; print &link('Request diff between arbitrary revisions', '#diff'); - if ($cvshistory_url) { - (my $d = $upwhere) =~ s|/+$||; - print ' - ', history_link($d, $filename); - } print "\n
\n\n"; @@ -3711,21 +3657,6 @@ sub display_link($$;$$) return sprintf('%s', display_url($url, $revision, $mtype) . $barequery, htmlquote($textlink)); -} - -# -# Returns a link to CVSHistory for the given directory and filename. -# -sub history_link($$;$) -{ - my ($dir, $file, $text) = @_; - $dir ||= ''; - $file ||= ''; - $text ||= 'History'; - return &link($text, - sprintf('%s?cvsroot=%s;dsearch=%s;fsearch=%s;limit=1', - $cvshistory_url, uri_escape($input{cvsroot} || ''), - uri_escape($dir), uri_escape($file))); } # Returns a Query string with the