===================================================================
RCS file: /cvs/cvsweb/cvsweb.cgi,v
retrieving revision 1.1.1.6
retrieving revision 3.33
diff -u -p -r1.1.1.6 -r3.33
--- cvsweb/cvsweb.cgi 2000/09/19 20:14:40 1.1.1.6
+++ cvsweb/cvsweb.cgi 2000/10/07 07:44:12 3.33
@@ -42,8 +42,8 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $zId: cvsweb.cgi,v 1.101 2000/09/13 22:44:05 jumager Exp $
-# $kId: cvsweb.cgi,v 1.24 2000/09/19 20:07:16 knu Exp $
+# $zId: cvsweb.cgi,v 1.103 2000/09/20 17:02:29 jumager Exp $
+# $Id: cvsweb.cgi,v 3.33 2000/10/07 07:44:12 knu Exp $
#
###
@@ -64,8 +64,9 @@ use vars qw (
$bylog $byfile $hr_default $logsort $cvstree $cvsroot
$mimetype $defaultTextPlain $defaultViewable $allow_compress
$GZIPBIN $backicon $diricon $fileicon $fullname $newname
- $cvstreedefault $body_tag $logo $defaulttitle $address
- $backcolor $long_intro $short_instruction $shortLogLen
+ $cvstreedefault $body_tag $body_tag_for_src
+ $logo $defaulttitle $address
+ $long_intro $short_instruction $shortLogLen
$show_author $dirtable $tablepadding $columnHeaderColorDefault
$columnHeaderColorSorted $hr_breakable $showfunc $hr_ignwhite
$hr_ignkeysubst $diffcolorHeading $diffcolorEmpty $diffcolorRemove
@@ -78,6 +79,7 @@ use vars qw (
$tabstop $state $annTable $sel $curbranch @HideModules
$module $use_descriptions %descriptions @mytz $dwhere $moddate
$use_moddate $has_zlib $gzip_open
+ $LOG_FILESEPARATOR $LOG_REVSEPARATOR
);
sub printDiffSelect($);
@@ -124,14 +126,13 @@ sub forbidden_module($);
use Cwd;
# == EDIT this ==
-# User configuration is stored in
-$config = undef;
-
-for ($ENV{CVSWEB_CONFIG},
-# '/home/knu/etc/cvsweb.conf',
+# Locations to search for user configuration, in order:
+for (
+ $ENV{CVSWEB_CONFIG},
'/usr/local/etc/cvsweb.conf',
- getcwd . '/cvsweb.conf') {
- $config = $_ if defined($_) && -r $_;
+ getcwd() . '/cvsweb.conf'
+ ) {
+ $config = $_ if defined($_) && -r $_;
}
# == Configuration defaults ==
@@ -145,8 +146,9 @@ $allow_version_select = 1;
# These are defined to allow checking with perl -cw
%CVSROOT = %MIRRORS = %DEFAULTVALUE = %ICONS = %MTYPES =
%tags = %alltags = @tabcolors = ();
-$cvstreedefault = $body_tag = $logo = $defaulttitle = $address =
-$backcolor = $long_intro = $short_instruction = $shortLogLen =
+$cvstreedefault = $body_tag = $body_tag_for_src =
+$logo = $defaulttitle = $address =
+$long_intro = $short_instruction = $shortLogLen =
$show_author = $dirtable = $tablepadding = $columnHeaderColorDefault =
$columnHeaderColorSorted = $hr_breakable = $showfunc = $hr_ignwhite =
$hr_ignkeysubst = $diffcolorHeading = $diffcolorEmpty = $diffcolorRemove =
@@ -156,8 +158,11 @@ $allow_markup = $use_java_script = $open_extern_window
$extern_window_width = $extern_window_height = $edit_option_form =
$checkout_magic = $show_subdir_lastmod = $show_log_in_markup = $v =
$navigationHeaderColor = $tableBorderColor = $markupLogColor =
-$tabstop = $use_moddate = $moddate = undef;
+$tabstop = $use_moddate = $moddate = $gzip_open = undef;
+$LOG_FILESEPARATOR = q/^={77}$/;
+$LOG_REVSEPARATOR = q/^-{28}$/;
+
##### End of configuration variables #####
use Time::Local;
@@ -209,7 +214,8 @@ $nofilelinks = $is_textbased;
# display garbage then :-/
# Turn off gzip if running under mod_perl and no zlib is available,
# piping does not work as expected inside the server.
-$maycompress = (($ENV{HTTP_ACCEPT_ENCODING} =~ m`gzip`
+$maycompress = (((defined($ENV{HTTP_ACCEPT_ENCODING})
+ && $ENV{HTTP_ACCEPT_ENCODING} =~ m`gzip`)
|| $is_mozilla3)
&& !$is_msie
&& !($is_mod_perl && !$has_zlib));
@@ -221,9 +227,11 @@ $maycompress = (($ENV{HTTP_ACCEPT_ENCODING} =~ m`gzip`
@stickyvars = qw(cvsroot hideattic sortby logsort f only_with_tag);
if (-f $config) {
- do $config;
-}
-else {
+ do $config
+ || &fatal("500 Internal Error",
+ sprintf('Error in loading configuration file: %s
%s
',
+ $config, &htmlify($@)));
+} else {
&fatal("500 Internal Error",
'Configuration not found. Set the variable $config
'
. 'in cvsweb.cgi, or the environment variable '
@@ -275,25 +283,24 @@ foreach (keys %DEFAULTVALUE)
}
$barequery = "";
+my @barequery;
foreach (@stickyvars) {
# construct a query string with the sticky non default parameters set
if (defined($input{$_}) && $input{$_} ne '' &&
!(defined($DEFAULTVALUE{$_}) && $input{$_} eq $DEFAULTVALUE{$_})) {
- if ($barequery) {
- $barequery = $barequery . "&";
- }
- my $thisval = urlencode($_) . "=" . urlencode($input{$_});
- $barequery .= $thisval;
+ push @barequery, join('=', urlencode($_), urlencode($input{$_}));
}
}
# is there any query ?
-if ($barequery) {
+if (@barequery) {
+ $barequery = join('&', @barequery);
$query = "?$barequery";
- $barequery = "&" . $barequery;
+ $barequery = "&$barequery";
}
else {
$query = "";
}
+undef @barequery;
# get actual parameters
$sortby = $input{"sortby"};
@@ -341,7 +348,8 @@ if ($input{'cvsroot'} && $CVSROOT{$input{'cvsroot'}})
$cvsroot = $CVSROOT{$cvstree};
# create icons out of description
-foreach my $k (keys %ICONS) {
+my $k;
+foreach $k (keys %ICONS) {
no strict 'refs';
my ($itxt,$ipath,$iwidth,$iheight) = @{$ICONS{$k}};
if ($ipath) {
@@ -351,9 +359,18 @@ foreach my $k (keys %ICONS) {
${"${k}icon"} = $itxt;
}
}
+undef $k;
+my $config_cvstree = "$config-$cvstree";
+
# Do some special configuration for cvstrees
-do "$config-$cvstree" if (-f "$config-$cvstree");
+if (-f $config_cvstree) {
+ do $config_cvstree
+ || &fatal("500 Internal Error",
+ sprintf('Error in loading configuration file: %s
%s
',
+ $config_cvstree, &htmlify($@)));
+}
+undef $config_cvstree;
$prcategories = '(?:' . join('|', @prcategories) . ')';
$prcgi .= '%s' if defined($prcgi) && $prcgi !~ /%s/;
@@ -782,18 +799,18 @@ elsif (-d $fullname) {
elsif (-f $fullname . ',v') {
if (defined($input{'rev'}) || $doCheckout) {
&doCheckout($fullname, $input{'rev'});
- close(GZIP) if ($gzip_open);
+ gzipclose();
exit;
}
if (defined($input{'annotate'}) && $allow_annotate) {
&doAnnotate($input{'annotate'});
- close(GZIP) if ($gzip_open);
+ gzipclose();
exit;
}
if (defined($input{'r1'}) && defined($input{'r2'})) {
&doDiff($fullname, $input{'r1'}, $input{'tr1'},
$input{'r2'}, $input{'tr2'}, $input{'f'});
- close(GZIP) if ($gzip_open);
+ gzipclose();
exit;
}
print("going to dolog($fullname)\n") if ($verbose);
@@ -816,7 +833,7 @@ elsif (-d $fullname) {
# e.g. foo.c
&doDiff($fullname, $input{'r1'}, $input{'tr1'},
$input{'r2'}, $input{'tr2'}, $input{'f'});
- close(GZIP) if ($gzip_open);
+ gzipclose();
exit;
}
elsif (($newname = $fullname) =~ s|/([^/]+)$|/Attic/$1| &&
@@ -851,7 +868,7 @@ elsif (-d $fullname) {
&fatal("404 Not Found","$where: no such file or directory");
}
-close(GZIP) if ($gzip_open);
+gzipclose();
## End MAIN
sub printDiffSelect($) {
@@ -919,13 +936,13 @@ sub htmlify($;$) {
if ($extra) {
# get PR #'s as link ..
if (defined($prcgi)) {
- 1 while $string =~ s`\b(pr[:#]?\s*(?:#?\d+[,\s]\s*)*#?)(\d+)\b`$1 . &link($2, sprintf($prcgi, $2))`ie; # `
- $string =~ s`\b${prcategories}/(\d+)\b`&link($&, sprintf($prcgi, $1))`igeo; # `
+ 1 while $string =~ s`\b(pr[:#]?\s*(?:#?\d+[,\s]\s*)*#?)(\d+)\b`$1 . &link($2, sprintf($prcgi, $2))`ie; # `;
+ $string =~ s`\b${prcategories}/(\d+)\b`&link($&, sprintf($prcgi, $1))`igeo; # `;
}
# get manpage specs as link ..
if (defined($mancgi)) {
- $string =~ s`\b([a-zA-Z]\w+)\(([0-9n])\)\B`&link($&, sprintf($mancgi, $2, $1))`ge; # `
+ $string =~ s`\b([a-zA-Z]\w+)(?:\(([0-9n])\)\B|\.([0-9n])\b)`&link($&, sprintf($mancgi, $2 ne '' ? $2 : $3, $1))`ge; # `x;
}
}
@@ -965,7 +982,7 @@ sub spacedHtmlText($;$) {
sub link($$) {
my($name, $where) = @_;
- return "$name\n";
+ return "$name";
}
sub revcmp($$) {
@@ -1130,11 +1147,6 @@ sub doAnnotate($$) {
($pathname = $where) =~ s/(Attic\/)?[^\/]*$//;
($filename = $where) =~ s/^.*\///;
- http_header();
-
- navigateHeader($scriptwhere,$pathname,$filename,$rev, "annotate");
- print "