===================================================================
RCS file: /cvs/cvsweb/cvsweb.cgi,v
retrieving revision 1.1.1.35
retrieving revision 1.1.1.36
diff -u -p -r1.1.1.35 -r1.1.1.36
--- cvsweb/cvsweb.cgi 2002/09/30 19:43:49 1.1.1.35
+++ cvsweb/cvsweb.cgi 2002/09/30 19:48:52 1.1.1.36
@@ -45,10 +45,9 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# FreeBSD: projects/cvsweb/cvsweb.cgi,v 1.119 2002/07/23 13:58:32 scop Exp
+# $FreeBSD: projects/cvsweb/cvsweb.cgi,v 1.119.2.6 2002/09/26 20:56:05 scop Exp $
# $zId: cvsweb.cgi,v 1.112 2001/07/24 13:03:16 hzeller Exp $
# $Idaemons: /home/cvs/cvsweb/cvsweb.cgi,v 1.84 2001/10/07 20:50:10 knu Exp $
-# $FreeBSD: www/en/cgi/cvsweb.cgi,v 1.86 2002/09/26 22:18:25 scop Exp $
#
###
@@ -94,7 +93,7 @@ use vars qw (
$module $use_descriptions %descriptions @mytz $dwhere $moddate
$use_moddate $has_zlib $gzip_open
$allow_tar @tar_options @gzip_options @zip_options @cvs_options
- $LOG_FILESEPARATOR $LOG_REVSEPARATOR
+ @annotate_options $LOG_FILESEPARATOR $LOG_REVSEPARATOR
$tmpdir $HTML_DOCTYPE $HTML_META
);
@@ -150,7 +149,7 @@ sub forbidden_module($);
##### Start of Configuration Area ########
delete $ENV{PATH};
-$cvsweb_revision = '2.0.5';
+$cvsweb_revision = '2.0.6';
use File::Basename ();
@@ -236,18 +235,6 @@ $LOG_REVSEPARATOR = q/^-{28}$/;
},
);
-$cgi_style::hsty_base = 'http://www.FreeBSD.org';
-$_ = q$FreeBSD: www/en/cgi/cvsweb.cgi,v 1.86 2002/09/26 22:18:25 scop Exp $;
-@_ = split;
-$cgi_style::hsty_date = "@_[3,4]";
-
-# warningproof
-0 if $cgi_style::hsty_base ne $cgi_style::hsty_date;
-
-package cgi_style;
-require "$main::mydir/cgi-style.pl";
-package main;
-
$HTML_DOCTYPE =
'';
@@ -481,8 +468,7 @@ if ($input{'cvsroot'} && $CVSROOT{$input{'cvsroot'}})
$cvsroot = $CVSROOT{$cvstree};
# create icons out of description
-my $k;
-foreach $k (keys %ICONS) {
+foreach my $k (keys %ICONS) {
no strict 'refs';
my ($itxt, $ipath, $iwidth, $iheight) = @{$ICONS{$k}};
if ($ipath) {
@@ -494,7 +480,6 @@ foreach $k (keys %ICONS) {
${"${k}icon"} = $itxt;
}
}
-undef $k;
my $config_cvstree = "$config-$cvstree";
@@ -825,39 +810,37 @@ if (-d $fullname) {
my $filesexists;
my $filesfound;
- foreach (sort { &fileSortCmp } @dir) {
- if ($_ eq '.') {
- next;
- }
+ foreach my $file (sort { &fileSortCmp } @dir) {
+ next if ($file eq '.');
+
# ignore CVS lock and stale NFS files
- next if (/^#cvs\.|^,|^\.nfs/);
+ next if ($file =~ /^#cvs\.|^,|^\.nfs/);
# Check whether to show the CVSROOT path
- next if ($input{'hidecvsroot'} && ($_ eq 'CVSROOT'));
+ next if ($input{'hidecvsroot'} && $file eq 'CVSROOT');
# Check whether the module is in the restricted list
- next if ($_ && &forbidden_module($_));
+ next if ($file && &forbidden_module($file));
# Ignore non-readable files
- next if ($input{'hidenonreadable'} && !(-r "$fullname/$_"));
+ next if ($input{'hidenonreadable'} && !(-r "$fullname/$file"));
- if (s|^Attic/||) {
+ if ($file =~ s|^Attic/||) {
$attic = " (in the Attic) " . $hideAtticToggleLink;
} else {
$attic = "";
}
- if ($_ eq '..' || -d "$fullname/$_") {
- next if ($_ eq '..' && $where eq '/');
- my ($rev, $date, $log, $author, $filename);
- ($rev, $date, $log, $author, $filename) =
- @{$fileinfo{$_}}
- if (defined($fileinfo{$_}));
+ if ($file eq '..' || -d "$fullname/$file") {
+ next if ($file eq '..' && $where eq '/');
+ my ($rev, $date, $log, $author, $filename) =
+ @{$fileinfo{$file}}
+ if (defined($fileinfo{$file}));
printf "
\n",
$tabcolors[$dirrow % 2] if $dirtable;
- if ($_ eq '..') {
+ if ($file eq '..') {
$url = "../$query";
if ($nofilelinks) {
print $backicon;
@@ -866,17 +849,17 @@ if (-d $fullname) {
}
print ' ', &link("Parent Directory", $url);
} else {
- $url = './' . urlencode($_) . "/$query";
- print "";
+ $url = './' . urlencode($file) . "/$query";
+ print "";
if ($nofilelinks) {
print $diricon;
} else {
print &link($diricon, $url);
}
- print ' ', &link("$_/", $url), $attic;
+ print ' ', &link("$file/", $url), $attic;
- if ($_ eq "Attic") {
+ if ($file eq "Attic") {
print " ";
print &link(
"[Don't hide]",
@@ -919,7 +902,7 @@ if (-d $fullname) {
}
} else {
my ($dwhere) =
- ($where ne "/" ? $where : "") . $_;
+ ($where ne "/" ? $where : "") . $file;
if ($use_descriptions
&& defined $descriptions{$dwhere})
@@ -946,33 +929,29 @@ if (-d $fullname) {
print " \n";
}
$dirrow++;
- } elsif (s/,v$//) {
+ } elsif ($file =~ s/,v$//) {
# Skip forbidden files now so we'll give no hint
# about their existence. This should probably have
# been done earlier, but it's straightforward here.
- next if forbidden_file("$fullname/$_");
+ next if forbidden_file("$fullname/$file");
- $fileurl = ($attic ? "Attic/" : "") . urlencode($_);
+ $fileurl = ($attic ? "Attic/" : "") . urlencode($file);
$url = './' . $fileurl . $query;
- my $rev = '';
- my $date = '';
- my $log = '';
- my $author = '';
$filesexists++;
- next if (!defined($fileinfo{$_}));
- ($rev, $date, $log, $author) = @{$fileinfo{$_}};
+ next if (!defined($fileinfo{$file}));
+ my ($rev, $date, $log, $author) = @{$fileinfo{$file}};
$filesfound++;
printf " |
\n",
$tabcolors[$dirrow % 2] if $dirtable;
- print "";
+ print "";
if ($nofilelinks) {
print $fileicon;
} else {
print &link($fileicon, $url);
}
- print ' ', &link($_, $url), $attic;
+ print ' ', &link(htmlquote($file), $url), $attic;
print " | \n " if ($dirtable);
download_link($fileurl, $rev, $rev,
$defaultViewable ? "text/x-cvsweb-markup" :
@@ -1426,6 +1405,7 @@ sub spacedHtmlText($;$) {
return $_;
}
+# Note that this doesn't htmlquote the first argument...
sub link($$) {
my ($name, $url) = @_;
@@ -1627,16 +1607,27 @@ sub doAnnotate($$) {
$| = 1;
$| = 0; # Flush
+ # Work around a mod_perl bug (?) in order to make open2() work.
+ # Search for "untie STDIN" in mod_perl mailing list archives.
+ my $old_stdin;
+ if ($is_mod_perl && ($old_stdin = tied *STDIN)) {
+ local $^W = undef;
+ untie *STDIN;
+ }
+
# this annotate version is based on the
# cvs annotate-demo Perl script by Cyclic Software
# It was written by Cyclic Software, http://www.cyclic.com/, and is in
# the public domain.
# we could abandon the use of rlog, rcsdiff and co using
# the cvsserver in a similiar way one day (..after rewrite)
- $pid = open2($reader, $writer, $CMD{cvs}, @cvs_options, "server")
+ $pid = open2($reader, $writer, $CMD{cvs}, @annotate_options, 'server')
or fatal("500 Internal Error",
'Fatal Error - unable to open cvs for annotation');
+ # Re-tie STDIN if we fiddled around with it earlier, just to be sure.
+ tie(*STDIN, ref($old_stdin), $old_stdin) if ($old_stdin && !tied(*STDIN));
+
# OK, first send the request to the server. A simplified example is:
# Root /home/kingdon/zwork/cvsroot
# Argument foo/xx
@@ -1780,6 +1771,8 @@ sub doAnnotate($$) {
} else {
print "";
}
+ html_footer();
+
close($reader) or warn "cannot close: $!";
wait;
}
@@ -2122,7 +2115,7 @@ sub getDirLogs($$@) {
push (@files, &safeglob("$DirName/*,v"));
push (@files, &safeglob("$DirName/Attic/*,v"))
if (!$input{'hideattic'});
- foreach $file (@otherFiles) {
+ foreach my $file (@otherFiles) {
push (@files, "$DirName/$file");
}
@@ -3632,21 +3625,20 @@ sub http_header(;$) {
sub html_header($) {
my ($title) = @_;
http_header("text/html");
-
- (my $header = &cgi_style::html_header) =~ s,\A.*\n,,s;
-
print <
$title
$HTML_META
-$header
+$body_tag
+$logo $title
EOH
}
sub html_footer() {
- return &cgi_style::html_footer;
+ print " \n$address\n" if $address;
+ print " |