version 4.19, 2019/11/11 14:56:27 |
version 4.22, 2019/11/13 09:12:47 |
|
|
%alltags %fileinfo %tags @branchnames %nameprinted |
%alltags %fileinfo %tags @branchnames %nameprinted |
%symrev %revsym @allrevisions %date %author @revdisplayorder |
%symrev %revsym @allrevisions %date %author @revdisplayorder |
@revisions %state %difflines %log %branchpoint @revorder $keywordsubstitution |
@revisions %state %difflines %log %branchpoint @revorder $keywordsubstitution |
$prcgi @prcategories $re_prcategories $prkeyword $re_prkeyword $mancgi |
$mancgi $doCheckout $scriptname $scriptwhere |
$doCheckout $scriptname $scriptwhere |
|
$where $Browser $nofilelinks $maycompress @stickyvars |
$where $Browser $nofilelinks $maycompress @stickyvars |
$is_links $is_lynx $is_w3m $is_msie $is_mozilla3 $is_textbased |
$is_links $is_lynx $is_w3m $is_msie $is_mozilla3 $is_textbased |
%input $query $barequery $sortby $bydate $byrev $byauthor |
%input $query $barequery $sortby $bydate $byrev $byauthor |
Line 145 sub spacedHtmlText($;$); |
|
Line 144 sub spacedHtmlText($;$); |
|
sub link($$); |
sub link($$); |
sub revcmp($$); |
sub revcmp($$); |
sub fatal($$@); |
sub fatal($$@); |
sub config_error($$); |
|
sub redirect($;$); |
sub redirect($;$); |
sub safeglob($); |
sub safeglob($); |
sub search_path($); |
sub search_path($); |
Line 264 $scriptname = '' unless defined($scriptname); |
|
Line 262 $scriptname = '' unless defined($scriptname); |
|
$where = $pathinfo; |
$where = $pathinfo; |
$doCheckout = $where =~ s|^/$CheckoutMagic/|/|o; |
$doCheckout = $where =~ s|^/$CheckoutMagic/|/|o; |
$where =~ s|^/||; |
$where =~ s|^/||; |
$scriptname =~ s|^/*|/|; |
$scriptname =~ s|^/+||; |
|
|
# Let's workaround thttpd's stupidity.. |
# Let's workaround thttpd's stupidity.. |
if ($scriptname =~ m|/$|) { |
if ($scriptname =~ m|/$|) { |
Line 272 if ($scriptname =~ m|/$|) { |
|
Line 270 if ($scriptname =~ m|/$|) { |
|
my $re = quotemeta $pathinfo; |
my $re = quotemeta $pathinfo; |
$scriptname =~ s/$re$//; |
$scriptname =~ s/$re$//; |
} |
} |
|
$scriptname = "/$scriptname" if $scriptname; |
|
|
# $scriptname : the URI escaped path to this script |
# $scriptname : the URI escaped path to this script |
# $where : the path in the CVS repository (without leading /, or only /) |
# $where : the path in the CVS repository (without leading /, or only /) |
Line 316 $maycompress = ( |
|
Line 315 $maycompress = ( |
|
qw(cvsroot hideattic ignorecase sortby logsort f only_with_tag ln |
qw(cvsroot hideattic ignorecase sortby logsort f only_with_tag ln |
hidecvsroot hidenonreadable); |
hidecvsroot hidenonreadable); |
|
|
# |
|
# Load configuration. |
# Load configuration. |
# |
{ |
if (-f $config) { |
$config =~ m|^/| or fatal '500 Internal Error', |
do "$config" or config_error($config, $@); |
'Configuration file name "<code>%s</code>" is not an absolute path.', |
} else { |
$config; |
fatal("500 Internal Error", |
defined do $config and last; |
'Configuration not found. Set the parameter <code>$config</code> in cvsweb.cgi to your <b>cvsweb.conf</b> configuration file first.'); |
$@ and fatal '500 Internal Error', |
|
'Error loading configuration file "<code>%s</code>": <pre>%s</pre>', |
|
$config, $@; |
|
fatal '500 Internal Error', |
|
'Cannot read configuration file "<code>%s</code>": %s', |
|
$config, $! || 'unknown error'; |
} |
} |
|
|
# Try to find a readable dir where we can cd into. Some abs_path() |
# Try to find a readable dir where we can cd into. Some abs_path() |
Line 603 if (-f $config_cvstree) { |
|
Line 606 if (-f $config_cvstree) { |
|
} |
} |
undef $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); |
$fullname = catfile($cvsroot, $where); |
|
|
my $rewrite = 0; |
my $rewrite = 0; |
Line 1454 sub htmlify($;$) |
|
Line 1453 sub htmlify($;$) |
|
} |
} |
|
|
if ($extra) { |
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)" |
# get manpage specs as link: "foo.1" "foo(1)" |
if (defined($mancgi)) { |
if (defined($mancgi)) { |
$_ = htmlify_sub { |
$_ = htmlify_sub { |
|
|
sprintf($format, map(htmlquote($_), @args)), "</div>\n"; |
sprintf($format, map(htmlquote($_), @args)), "</div>\n"; |
html_footer(); |
html_footer(); |
exit(1); |
exit(1); |
} |
|
|
|
|
|
# |
|
# Signal a (fatal) configuration error. |
|
# |
|
sub config_error($$) |
|
{ |
|
fatal('500 Internal Error', |
|
'Error loading configuration file "<code>%s</code>":<br /><br />' . |
|
'%s<br />', @_); |
|
} |
} |
|
|
|
|