===================================================================
RCS file: /cvs/cvsweb/cvsweb.cgi,v
retrieving revision 1.1.1.15
retrieving revision 3.35
diff -u -p -r1.1.1.15 -r3.35
--- cvsweb/cvsweb.cgi 2000/12/18 04:35:54 1.1.1.15
+++ cvsweb/cvsweb.cgi 2000/10/10 21:14:05 3.35
@@ -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.104 2000/11/01 22:05:12 hnordstrom Exp $
-# $kId: cvsweb.cgi,v 1.45 2000/12/18 04:25:30 knu Exp $
+# $zId: cvsweb.cgi,v 1.103 2000/09/20 17:02:29 jumager Exp $
+# $Id: cvsweb.cgi,v 3.35 2000/10/10 21:14:05 knu Exp $
#
###
@@ -52,7 +52,6 @@ use strict;
use vars qw (
$config $allow_version_select $verbose
%CVSROOT %CVSROOTdescr %MIRRORS %DEFAULTVALUE %ICONS %MTYPES
- @DIFFTYPES %DIFFTYPES @LOGSORTKEYS %LOGSORTKEYS
%alltags @tabcolors %fileinfo %tags @branchnames %nameprinted
%symrev %revsym @allrevisions %date %author @revdisplayorder
@revisions %state %difflines %log %branchpoint @revorder
@@ -62,11 +61,11 @@ use vars qw (
%funcline_regexp $is_mod_perl
$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
- $mimetype $charset $defaultTextPlain $defaultViewable
- $allow_compress $GZIPBIN $backicon $diricon $fileicon
- $fullname $newname $cvstreedefault
- $body_tag $body_tag_for_src $logo $defaulttitle $address
+ $bylog $byfile $hr_default $logsort $cvstree $cvsroot
+ $mimetype $defaultTextPlain $defaultViewable $allow_compress
+ $GZIPBIN $backicon $diricon $fileicon $fullname $newname
+ $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
@@ -84,10 +83,7 @@ use vars qw (
);
sub printDiffSelect($);
-sub printDiffLinks($$);
-sub printLogSortSelect($);
sub findLastModifiedSubdirs(@);
-sub htmlify_sub(&$);
sub htmlify($;$);
sub spacedHtmlText($;$);
sub link($$);
@@ -121,7 +117,6 @@ sub download_link($$$;$);
sub toggleQuery($$);
sub urlencode($);
sub htmlquote($);
-sub htmlunquote($);
sub http_header(;$);
sub html_header($);
sub html_footer();
@@ -169,49 +164,6 @@ $tabstop = $use_moddate = $moddate = $gzip_open = unde
$LOG_FILESEPARATOR = q/^={77}$/;
$LOG_REVSEPARATOR = q/^-{28}$/;
-@DIFFTYPES = qw(h H u c s);
-@DIFFTYPES{@DIFFTYPES} = (
- {
- 'descr' => 'colored',
- 'opts' => [ '-u' ],
- 'colored' => 1,
- },
- {
- 'descr' => 'long colored',
- 'opts' => [ '--unified=15' ],
- 'colored' => 1,
- },
- {
- 'descr' => 'unified',
- 'opts' => [ '-u' ],
- 'colored' => 0,
- },
- {
- 'descr' => 'context',
- 'opts' => [ '-c' ],
- 'colored' => 0,
- },
- {
- 'descr' => 'side by side',
- 'opts' => [ '--side-by-side', '--width=164' ],
- 'colored' => 0,
- },
- );
-
-@LOGSORTKEYS = qw(cvs date rev);
-@LOGSORTKEYS{@LOGSORTKEYS} = (
- {
- 'descr' => 'Not sorted',
- },
- {
- 'descr' => 'Commit date',
- },
- {
- 'descr' => 'Revision',
- },
- );
-
-
##### End of configuration variables #####
use Time::Local;
@@ -244,7 +196,7 @@ $is_mod_perl = defined($ENV{MOD_PERL});
# in lynx, it it very annoying to have two links
# per file, so disable the link at the icon
# in this case:
-$Browser = $ENV{HTTP_USER_AGENT} || '';
+$Browser = $ENV{HTTP_USER_AGENT};
$is_links = ($Browser =~ m`^Links `);
$is_lynx = ($Browser =~ m`^Lynx/`i);
$is_w3m = ($Browser =~ m`^w3m/`i);
@@ -375,7 +327,7 @@ else {
$byfile = 1;
}
-$defaultDiffType = $input{'f'};
+$hr_default = $input{'f'} eq 'h';
$logsort = $input{'logsort'};
@@ -530,8 +482,9 @@ elsif (-d $fullname) {
}
print "
\n";
$infocols++;
- printf '',
- $byfile ? $columnHeaderColorSorted : $columnHeaderColorDefault;
+ print " ";
if ($byfile) {
print 'File';
} else {
@@ -543,8 +496,9 @@ elsif (-d $fullname) {
# with revision information:
if (scalar(%fileinfo)) {
$infocols++;
- printf ' ',
- $byrev ? $columnHeaderColorSorted : $columnHeaderColorDefault;
+ print " ";
if ($byrev) {
print 'Rev.';
} else {
@@ -553,19 +507,21 @@ elsif (-d $fullname) {
}
print " ";
$infocols++;
- printf '',
- $bydate ? $columnHeaderColorSorted : $columnHeaderColorDefault;
+ print " ";
if ($bydate) {
print 'Age';
} else {
print &link('Age', sprintf('./%s#dirlist',
- &toggleQuery("sortby", "date")));
+ &toggleQuery("sortby", "date")));
}
print " ";
if ($show_author) {
$infocols++;
- printf '',
- $byauthor ? $columnHeaderColorSorted : $columnHeaderColorDefault;
+ print " ";
if ($byauthor) {
print 'Author';
} else {
@@ -575,18 +531,19 @@ elsif (-d $fullname) {
print " ";
}
$infocols++;
- printf '',
- $bylog ? $columnHeaderColorSorted : $columnHeaderColorDefault;
+ print " ";
if ($bylog) {
print 'Last log entry';
} else {
print &link('Last log entry', sprintf('./%s#dirlist',
- &toggleQuery("sortby", "log")));
+ &toggleQuery("sortby", "log")));
}
print " ";
}
elsif ($use_descriptions) {
- printf '', $columnHeaderColorDefault;
+ print " ";
print "Description";
$infocols++;
}
@@ -651,9 +608,9 @@ elsif (-d $fullname) {
next if ($_ eq '..' && $where eq '/');
my ($rev,$date,$log,$author,$filename) = @{$fileinfo{$_}}
if (defined($fileinfo{$_}));
- printf ' ', $tabcolors[$dirrow % 2] if $dirtable;
+ print " " if ($dirtable);
if ($_ eq '..') {
- $url = "../$query";
+ $url = "../" . $query;
if ($nofilelinks) {
print $backicon;
}
@@ -663,7 +620,7 @@ elsif (-d $fullname) {
print " ", &link("Previous Directory", $url);
}
else {
- $url = urlencode($_) . "/$query";
+ $url = urlencode($_) . '/' . $query;
print " ";
if ($nofilelinks) {
print $diricon;
@@ -682,7 +639,7 @@ elsif (-d $fullname) {
if ($filename) {
print " " if ($dirtable);
if ($date) {
- print " ", readableTime(time() - $date,0), " ";
+ print " " . readableTime(time() - $date,0) . " ";
}
if ($show_author) {
print " " if ($dirtable);
@@ -693,8 +650,8 @@ elsif (-d $fullname) {
print "$filename/$rev";
print " " if ($dirtable);
if ($log) {
- print " ",
- &htmlify(substr($log,0,$shortLogLen));
+ print " "
+ . &htmlify(substr($log,0,$shortLogLen));
if (length $log > 80) {
print "...";
}
@@ -704,7 +661,7 @@ elsif (-d $fullname) {
else {
my ($dwhere) = ($where ne "/" ? $where : "") . $_;
if ($use_descriptions && defined $descriptions{$dwhere}) {
- print " " if $dirtable;
+ print " " if $dirtable;
print $descriptions{$dwhere};
} elsif ($dirtable && $infocols > 1) {
# close the row with the appropriate number of
@@ -735,7 +692,7 @@ elsif (-d $fullname) {
next if (!defined($fileinfo{$_}));
($rev,$date,$log,$author) = @{$fileinfo{$_}};
$filesfound++;
- printf ' ', $tabcolors[$dirrow % 2] if $dirtable;
+ print " " if ($dirtable);
print " ";
if ($nofilelinks) {
print $fileicon;
@@ -750,7 +707,7 @@ elsif (-d $fullname) {
$defaultViewable ? "text/x-cvsweb-markup" : undef);
print " " if ($dirtable);
if ($date) {
- print " ", readableTime(time() - $date,0), " ";
+ print " " . readableTime(time() - $date,0) . " ";
}
if ($show_author) {
print " " if ($dirtable);
@@ -758,7 +715,7 @@ elsif (-d $fullname) {
}
print " " if ($dirtable);
if ($log) {
- print " ", &htmlify(substr($log,0,$shortLogLen));
+ print " " . &htmlify(substr($log,0,$shortLogLen));
if (length $log > 80) {
print "...";
}
@@ -773,7 +730,7 @@ elsif (-d $fullname) {
if ($dirtable && defined($tableBorderColor)) {
print "
";
}
- print( $dirtable == 1 ? "\n" : "\n" );
+ print "". ($dirtable == 1) ? "" : "" . "\n";
if ($filesexists && !$filesfound) {
print "NOTE: There are $filesexists files, but none matches the current tag ($input{only_with_tag})\n";
@@ -831,9 +788,12 @@ elsif (-d $fullname) {
print "Revision";
print " Log message";
print "";
- print "Sort log by: ";
- printLogSortSelect(0);
- print " ";
+ print "revisions by: \n";
+ print "\n";
+ print "Not sorted";
+ print " Commit date";
+ print " Revision";
+ print " ";
print "Diff format: ";
printDiffSelect(0);
print " ";
@@ -909,13 +869,13 @@ elsif (-d $fullname) {
my $fh = do {local(*FH);};
my ($xtra, $module);
# Assume it's a module name with a potential path following it.
- $xtra = (($module = $where) =~ s|/.*||) ? $& : '';
+ $xtra = $& if (($module = $where) =~ s|/.*||);
# Is there an indexed version of modules?
if (open($fh, "$cvsroot/CVSROOT/modules")) {
while (<$fh>) {
if (/^(\S+)\s+(\S+)/o && $module eq $1
- && -d "$cvsroot/$2" && $module ne $2) {
- &redirect("$scriptname/$2$xtra");
+ && -d "${cvsroot}/$2" && $module ne $2) {
+ &redirect($scriptname . '/' . $2 . $xtra);
}
}
}
@@ -927,43 +887,18 @@ gzipclose();
sub printDiffSelect($) {
my ($use_java_script) = @_;
- my $f = $input{'f'};
-
- print '';
-
- local $_;
- for (@DIFFTYPES) {
- printf('%s',
- $_,
- $f eq $_ ? ' SELECTED' : '',
- "\u$DIFFTYPES{$_}{'descr'}"
- );
- }
-
+ my ($f) = $input{'f'};
+ print "\n";
+ print "Colored Diff";
+ print " Long Colored Diff";
+ print " Unidiff";
+ print " Context Diff";
+ print " Side by Side";
print " ";
}
-sub printLogSortSelect($) {
- my ($use_java_script) = @_;
-
- print '';
-
- local $_;
- for (@LOGSORTKEYS) {
- printf('%s',
- $_,
- $logsort eq $_ ? ' SELECTED' : '',
- "\u$LOGSORTKEYS{$_}{'descr'}"
- );
- }
-
- print " ";
-}
-
sub findLastModifiedSubdirs(@) {
my (@dirs) = @_;
my ($dirname, @files);
@@ -998,93 +933,30 @@ sub findLastModifiedSubdirs(@) {
return @files;
}
-sub htmlify_sub(&$) {
- (my $proc, local $_) = @_;
- local @_ = split(m`(]+>[^<]* )`i);
- my $linked;
- my $result = '';
-
- while (($_, $linked) = splice(@_, 0, 2)) {
- &$proc();
- $result .= $_ if defined($_);
- $result .= $linked if defined($linked);
- }
-
- $result;
-}
-
sub htmlify($;$) {
- (local $_, my $extra) = @_;
+ (local $_, my $extra) = @_;
- $_ = htmlquote($_);
+ $_ = htmlquote($_);
- # get URL's as link
- s{
- (http|ftp|https)://\S+
- }{
- &link($&, htmlunquote($&))
- }egx;
+ # get URL's as link
+ s`(http|ftp|https)(://[-a-zA-Z0-9%.~:_/]+)([?&]([-a-zA-Z0-9%.~:_]+)=([-a-zA-Z0-9%.~:_])+)*`&link("$1$2$3", "$1$2$3")`ge; # `
+ # get e-mails as link
+ s`[-a-zA-Z0-9_.]+@([-a-zA-Z0-9]+\.)+[A-Za-z]{2,4}`&link($&, "mailto:$&")`ge; # `
- # get e-mails as link
- $_ = htmlify_sub {
- s<
- [\w+=\-.!]+@[\w\-]+(\.[\w\-]+)+
- ><
- &link($&, "mailto:$&")
- >egix;
- } $_;
+ if ($extra) {
+ # get PR #'s as link: "PR#nnnn" "PR: nnnn, ..." "PR nnnn, ..." "bin/nnnn"
+ if (defined($prcgi)) {
+ 1 while s`\b(pr[:#]?\s*(?:#?\d+[,\s]\s*)*#?)(\d+)\b`$1 . &link($2, sprintf($prcgi, $2))`ie; # `;
+ s`\b${prcategories}/(\d+)\b`&link($&, sprintf($prcgi, $1))`igeo; # `;
+ }
- if ($extra) {
- # get PR #'s as link: "PR#nnnn" "PR: nnnn, ..." "PR nnnn, ..." "bin/nnnn"
- if (defined($prcgi)) {
- my $prev;
-
- do {
- $prev = $_;
-
- $_ = htmlify_sub {
- s{
- (\bPR[:\#]?\s*
- (?:
- \#?
- \d+[,\s]\s*
- )*
- \#?)
- (\d+)\b
- }{
- $1 . &link($2, sprintf($prcgi, $2))
- }egix;
- } $_;
- } while ($_ ne $prev);
-
- $_ = htmlify_sub {
- s{
- (\b$prcategories/(\d+)\b)
- }{
- &link($1, sprintf($prcgi, $2))
- }egox;
- } $_;
+ # get manpage specs as link: "foo.1" "foo(1)"
+ if (defined($mancgi)) {
+ s`\b([a-zA-Z]\w+)(?:\(([0-9n])\)\B|\.([0-9n])\b)`&link($&, sprintf($mancgi, $2 ne '' ? $2 : $3, $1))`ge; # `x;
+ }
}
- # get manpage specs as link: "foo.1" "foo(1)"
- if (defined($mancgi)) {
- $_ = htmlify_sub {
- s{
- (\b([a-zA-Z][\w_.]+)
- (?:
- \( ([0-9n]) \)\B
- |
- \.([0-9n])\b
- )
- )
- }{
- &link($1, sprintf($mancgi, $3 ne '' ? $3 : $4, $2))
- }egx;
- } $_;
- }
- }
-
- $_;
+ $_;
}
sub spacedHtmlText($;$) {
@@ -1194,7 +1066,7 @@ sub safeglob($) {
$glob =~ s/{([^}]+)}/($t = $1) =~ s-,-|-g; "($t)"/eg;
foreach (readdir($dh)) {
if (/^${glob}$/) {
- push(@results, "$dirname/" .$_);
+ push(@results, $dirname . "/" .$_);
}
}
}
@@ -1393,7 +1265,7 @@ sub doAnnotate($$) {
}
else {
$revprint = sprintf('%-8s', $lrev);
- $revprint =~ s`\S+`&link($&, "$scriptwhere$query#rev$&")`e; # `
+ $revprint =~ s`\S+`&link($&, "$scriptwhere$barequery#rev$&")`e; # `
$oldLusr = '';
}
if ($lusr eq $oldLusr) {
@@ -1424,7 +1296,7 @@ sub doAnnotate($$) {
# CVS command line client. But for simplicity, we don't.
}
elsif ($words[0] eq "error") {
- fatal("500 Internal Error", "Error occured during annotate: $_ ");
+ fatal ("500 Internal Error", "Error occured during annotate: $_ ");
}
}
if ($annTable) {
@@ -1489,11 +1361,6 @@ sub doCheckout($$) {
open(STDERR, ">&STDOUT"); # Redirect stderr to stdout
exec("cvs", "-Rld", $cvsroot, "co", "-p", $revopt, $where);
}
-
- if (eof($fh)) {
- &fatal("404 Not Found",
- "$where is not (any longer) pertinent");
- }
#===================================================================
#Checking out squid/src/ftp.c
#RCS: /usr/src/CVS/squid/src/ftp.c,v
@@ -1513,7 +1380,12 @@ sub doCheckout($$) {
}
if ($filename ne $where) {
&fatal("500 Internal Error",
- "Unexpected output from cvs co: $cvsheader");
+ "Unexpected output from cvs co: $cvsheader"
+ . "Check whether the directory $cvsroot/CVSROOT exists "
+ . "and the script has write-access to the CVSROOT/history "
+ . "file if it exists."
+ . " The script needs to place lock files in the "
+ . "directory the file is in as well. ");
}
$| = 1;
@@ -1598,7 +1470,7 @@ sub viewable($) {
sub doDiff($$$$$$) {
my($fullname, $r1, $tr1, $r2, $tr2, $f) = @_;
my $fh = do {local(*FH);};
- my ($rev1, $rev2, $sym1, $sym2, $f1, $f2);
+ my ($rev1, $rev2, $sym1, $sym2, @difftype, $diffname, $f1, $f2);
if ($r1 =~ /([^:]+)(:(.+))?/) {
$rev1 = $1;
@@ -1632,18 +1504,36 @@ sub doDiff($$$$$$) {
($rev1, $sym1) = ($rev2, $sym2);
($rev2, $sym2) = ($tmp1, $tmp2);
}
- my $difftype = $DIFFTYPES{$f};
-
- if (!$difftype) {
+ my $human_readable = 0;
+ if ($f eq 'c') {
+ @difftype = qw{-c};
+ $diffname = "Context diff";
+ }
+ elsif ($f eq 's') {
+ @difftype = qw{--side-by-side --width=164};
+ $diffname = "Side by Side";
+ }
+ elsif ($f eq 'H') {
+ $human_readable = 1;
+ @difftype = qw{--unified=15};
+ $diffname = "Long Human readable";
+ }
+ elsif ($f eq 'h') {
+ @difftype =qw{-u};
+ $human_readable = 1;
+ $diffname = "Human readable";
+ }
+ elsif ($f eq 'u') {
+ @difftype = qw{-u};
+ $diffname = "Unidiff";
+ }
+ else {
fatal ("400 Bad arguments", "Diff format $f not understood");
}
- my @difftype = @{$difftype->{'opts'}};
- my $human_readable = $difftype->{'colored'};
-
# apply special options
if ($showfunc) {
- push @difftype, '-p' if $f ne 's';
+ push @difftype, '-p' if $f =~ /^[cHhu]$/;
my($re1, $re2);
@@ -1705,14 +1595,14 @@ sub doDiff($$$$$$) {
s|$cvsroot/||o;
if ($sym1) {
chop;
- $_ .= " $sym1\n";
+ $_ .= " " . $sym1 . "\n";
}
}
elsif (m|^$f2 $cvsroot|o) {
s|$cvsroot/||o;
if ($sym2) {
chop;
- $_ .= " $sym2\n";
+ $_ .= " " . $sym2 . "\n";
}
}
print $_;
@@ -1780,66 +1670,63 @@ sub getDirLogs($$@) {
again:
if ($state eq "head") {
#$rcsfile = $1 if (/^RCS file: (.+)$/); #not used (yet)
-
- if (/^Working file: (.+)$/) {
- $filename = $1;
- } elsif (/^head: (.+)$/) {
- $head = $1;
- } elsif (/^branch: (.+)$/) {
- $branch = $1
- } elsif (/^symbolic names:/) {
- $state = "tags";
- ($branch = $head) =~ s/\.\d+$// if (!defined($branch));
- $branch =~ s/(\d+)$/0.$1/;
- $symrev{MAIN} = $branch;
- $symrev{HEAD} = $branch;
- $alltags{MAIN} = 1;
- $alltags{HEAD} = 1;
- push (@filetags, "MAIN", "HEAD");
- } elsif (/$LOG_REVSEPARATOR/o) {
- $state = "log";
- $rev = undef;
- $date = undef;
- $log = "";
- # Try to reconstruct the relative filename if RCS spits out a full path
- $filename =~ s%^\Q$DirName\E/%%;
- }
+ $filename = $1 if (/^Working file: (.+)$/);
+ $head = $1 if (/^head: (.+)$/);
+ $branch = $1 if (/^branch: (.+)$/);
+ }
+ if ($state eq "head" && /^symbolic names/) {
+ $state = "tags";
+ ($branch = $head) =~ s/\.\d+$// if (!defined($branch));
+ $branch =~ s/(\.?)(\d+)$/${1}0.$2/;
+ $symrev{MAIN} = $branch;
+ $symrev{HEAD} = $branch;
+ $alltags{MAIN} = 1;
+ $alltags{HEAD} = 1;
+ push (@filetags, "MAIN", "HEAD");
next;
}
- if ($state eq "tags") {
- if (/^\s+(.+):\s+([\d\.]+)\s+$/) {
- push (@filetags, $1);
- $symrev{$1} = $2;
- $alltags{$1} = 1;
+ if ($state eq "tags" &&
+ /^\s+(.+):\s+([\d\.]+)\s+$/) {
+ push (@filetags, $1);
+ $symrev{$1} = $2;
+ $alltags{$1} = 1;
+ next;
+ }
+ if ($state eq "tags" && /^\S/) {
+ if (defined($tag) && (defined($symrev{$tag}) || $tag eq "HEAD")) {
+ $revwanted = $tag eq "HEAD" ? $symrev{"MAIN"} : $symrev{$tag};
+ ($branch = $revwanted) =~ s/\b0\.//;
+ ($branchpoint = $branch) =~ s/\.?\d+$//;
+ $revwanted = undef if ($revwanted ne $branch);
+ }
+ elsif (defined($tag) && $tag ne "HEAD") {
+ print "Tag not found, skip this file" if ($verbose);
+ $state = "skip";
next;
- } elsif (/^\S/) {
- if (defined($tag)) {
- if(defined($symrev{$tag}) || $tag eq "HEAD") {
- $revwanted = $symrev{$tag eq "HEAD" ? "MAIN" : $tag};
- ($branch = $revwanted) =~ s/\b0\.//;
- ($branchpoint = $branch) =~ s/\.?\d+$//;
- $revwanted = undef if ($revwanted ne $branch);
- } elsif ($tag ne "HEAD") {
- print "Tag not found, skip this file" if ($verbose);
- $state = "skip";
- next;
- }
- }
- foreach my $tagfound (@filetags) {
- $tags{$tagfound} = 1;
- }
- $state = "head";
- goto again;
}
+ foreach my $tagfound (@filetags) {
+ $tags{$tagfound} = 1;
+ }
+ $state = "head";
+ goto again;
}
+ if ($state eq "head" && /$LOG_REVSEPARATOR/o) {
+ $state = "log";
+ $rev = undef;
+ $date = undef;
+ $log = "";
+ # Try to reconstruct the relative filename if RCS spits out a full path
+ $filename =~ s%^\Q$DirName\E/%%;
+ next;
+ }
if ($state eq "log") {
if (/$LOG_REVSEPARATOR/o || /$LOG_FILESEPARATOR/o) {
# End of a log entry.
my $revbranch;
($revbranch = $rev) =~ s/\.\d+$//;
- print "$filename $rev Wanted: $revwanted ",
- "Revbranch: $revbranch Branch: $branch ",
- "Branchpoint: $branchpoint\n" if ($verbose);
+ print "$filename $rev Wanted: $revwanted "
+ . "Revbranch: $revbranch Branch: $branch "
+ . "Branchpoint: $branchpoint\n" if ($verbose);
if (!defined($revwanted) && defined($branch)
&& $branch eq $revbranch || !defined($tag)) {
print "File revision $rev found for branch $branch\n"
@@ -1877,7 +1764,7 @@ again:
next;
}
else {
- $log .= $_;
+ $log = $log . $_;
}
}
if (/$LOG_FILESEPARATOR/o) {
@@ -2014,11 +1901,12 @@ sub readLog($;$) {
# is the first commit listed on the appropriate branch.
# This is not neccesary the same revision as marked as head in the RCS file.
my $headrev = $curbranch || "1";
- ($symrev{"MAIN"} = $headrev) =~ s/(\d+)$/0.$1/;
+ ($symrev{"MAIN"} = $headrev) =~ s/(\.?)(\d+)$/${1}0.$2/;
+ revision:
foreach $rev (@revorder) {
if ($rev =~ /^(\S*)\.\d+$/ && $headrev eq $1) {
$symrev{"HEAD"} = $rev;
- last;
+ last revision;
}
}
($symrev{"HEAD"} = $headrev) =~ s/\.\d+$//
@@ -2049,7 +1937,6 @@ sub readLog($;$) {
# with the branch number 0.A, with the exception that
# it has no head to translate to if there is nothing on
# the branch, but I guess this can never happen?
- #
# (the code below gracefully forgets about the branch
# if it should happen)
#
@@ -2057,13 +1944,14 @@ sub readLog($;$) {
$branch = $3;
$branchrev = $head . ($head ne "" ? "." : "") . $branch;
my $regex;
- $regex = quotemeta $branchrev;
+ ($regex = $branchrev) =~ s/\./\\./g;
$rev = $head;
+ revision:
foreach my $r (@revorder) {
if ($r =~ /^${regex}\b/) {
$rev = $branchrev;
- last;
+ last revision;
}
}
next if ($rev eq "");
@@ -2119,20 +2007,6 @@ sub readLog($;$) {
}
-sub printDiffLinks($$) {
- my($text, $url) = @_;
- my @extra;
-
- local $_;
- for ($DIFFTYPES{$defaultDiffType}{'colored'} ? qw(u) : qw(h)) {
- my $f = $_ eq $defaultDiffType ? '' : $_;
-
- push @extra, &link(lc $DIFFTYPES{$_}{'descr'}, "$url&f=$f");
- }
-
- print &link($text, $url), ' (', join(', ', @extra), ')';
-}
-
sub printLog($;$) {
my ($link, $br, $brp);
($_,$link) = @_;
@@ -2209,13 +2083,13 @@ sub printLog($;$) {
}
if (defined @mytz) {
my ($est) = $mytz[(localtime($date{$_}))[8]];
- print ", ", scalar localtime($date{$_}), " $est (";
+ print ", " . scalar localtime($date{$_}) . " $est (";
} else {
- print ", ", scalar gmtime($date{$_}), " UTC (";
+ print ", " . scalar gmtime($date{$_}) . " UTC (";
}
- print readableTime(time() - $date{$_},1), " ago)";
+ print readableTime(time() - $date{$_},1) . " ago)";
print " by ";
- print "", $author{$_}, " \n";
+ print "" . $author{$_} . " \n";
print " Branch: ",$link?link_tags($revsym{$br}):$revsym{$br}," \n"
if ($revsym{$br});
print " CVS Tags: ",$link?link_tags($revsym{$_}):$revsym{$_}," "
@@ -2257,7 +2131,10 @@ sub printLog($;$) {
$barequery);
print " to previous ";
- printDiffLinks($prev, $url);
+ print &link($prev, $url);
+ if (!$hr_default) { # offer a human readable version if not default
+ print &link('colored', "$url&f=h");
+ }
}
#
# Plus, if it's on a branch, and it's not a vendor branch,
@@ -2270,7 +2147,10 @@ sub printLog($;$) {
$barequery);
print " to branchpoint ";
- printDiffLinks($brp, $url);
+ print &link($brp, $url);
+ if (!$hr_default) { # offer a human readable version if not default
+ print &link('colored', "$url&f=h");
+ }
}
#
# Plus, if it's on a branch, and it's not a vendor branch,
@@ -2303,7 +2183,10 @@ sub printLog($;$) {
$barequery);
print " next main ";
- printDiffLinks($nextmain, $url);
+ print &link($nextmain, $url);
+ if (!$hr_default) { # offer a human readable version if not default
+ print &link('colored', "$url&f=h");
+ }
}
}
# Plus if user has selected only r1, then present a link
@@ -2318,7 +2201,10 @@ sub printLog($;$) {
$barequery);
print " to selected ";
- printDiffLinks($input{'r1'}, $url);
+ print &link($input{'r1'}, $url);
+ if (!$hr_default) { # offer a human readable version if not default
+ print &link('colored', "$url&f=h");
+ }
}
}
print "
\n";
@@ -2398,8 +2284,8 @@ sub doLog($) {
print " \n";
print " ";
@@ -2506,16 +2396,17 @@ sub human_readable_diff($){
$date2 = $r2d;
}
- print "Diff for /$where_nd between version $rev1 and $rev2 \n",
- "\n",
- "\n",
- "",
- "version $rev1";
+ print "Diff for /$where_nd between version $rev1 and $rev2 \n";
+
+ print "\n";
+ print "\n";
+ print "";
+ print "version $rev1";
print ", $date1" if (defined($date1));
print " Tag: $sym1\n" if ($sym1);
- print " \n",
- "",
- "version $rev2";
+ print " \n";
+ print "";
+ print "version $rev2";
print ", $date2" if (defined($date2));
print " Tag: $sym2\n" if ($sym1);
print " \n";
@@ -2638,10 +2529,9 @@ sub navigateHeader($$$$$) {
my ($swhere,$path,$filename,$rev,$title) = @_;
$swhere = "" if ($swhere eq $scriptwhere);
$swhere = urlencode($filename) if ($swhere eq "");
- print qq``;
+ print "<\!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">";
print "\n\n";
- print qq` \n`;
- print '';
+ print '';
print "\n$path$filename - $title - $rev \n";
print "$body_tag_for_src\n";
print "";
@@ -2657,10 +2547,10 @@ sub navigateHeader($$$$$) {
sub plural_write($$) {
my ($num,$text) = @_;
if ($num != 1) {
- $text .= "s";
+ $text = $text . "s";
}
if ($num > 0) {
- return join(' ', $num, $text);
+ return $num . " " . $text;
}
else {
return "";
@@ -2704,7 +2594,7 @@ sub readableTime($$) {
my $resttime = plural_write(int ($rest / $break),
$desc{$break});
if ($resttime) {
- $retval .= ", $resttime";
+ $retval = $retval . ", " . $resttime;
}
}
@@ -2734,8 +2624,8 @@ sub clickablePath($$) {
my $wherepath = '';
my ($lastslash) = $pathname =~ m|/$|;
foreach (split(/\//, $pathname)) {
- $retval .= " / ";
- $wherepath .= "/$_";
+ $retval = $retval . " / ";
+ $wherepath = $wherepath . '/' . $_;
my ($last) = "$wherepath/" eq "/$pathname"
|| $wherepath eq "/$pathname";
if ($clickLast || !$last) {
@@ -2779,7 +2669,8 @@ sub chooseCVSRoot() {
foreach $k (@foo) {
print "", ($CVSROOTdescr{$k} ? $CVSROOTdescr{$k} : $k), " \n";
+ print ">" . ($CVSROOTdescr{$k} ? $CVSROOTdescr{$k} :
+ $k). "\n";
}
print "\n";
print " ";
@@ -2954,18 +2845,6 @@ sub htmlquote($) {
$_;
}
-sub htmlunquote($) {
- local($_) = @_;
-
- # Special Characters; RFC 1866
- s/"/\"/g;
- s/<//g;
- s/&/&/g;
-
- $_;
-}
-
sub http_header(;$) {
my $content_type = shift || "text/html";
if (defined($moddate)) {
@@ -2973,7 +2852,7 @@ sub http_header(;$) {
Apache->request->header_out("Last-Modified" => scalar gmtime($moddate) . " GMT");
}
else {
- print "Last-Modified: ", scalar gmtime($moddate), " GMT\r\n";
+ print "Last-Modified: " . scalar gmtime($moddate) . " GMT\r\n";
}
}
if ($is_mod_perl) {
@@ -3000,7 +2879,7 @@ sub http_header(;$) {
}
select(GZIP);
$gzip_open = 1;
-# print "" if ($content_type =~ m|^text/html\b|);
+# print "" if ($content_type eq "text/html");
}
else {
if ($is_mod_perl) {
@@ -3024,14 +2903,12 @@ sub http_header(;$) {
sub html_header($) {
my ($title) = @_;
- my $version = '$zRevision: 1.104 $ $kRevision: 1.45 $'; #'
- http_header(defined($charset) ? "text/html; charset=$charset" : "text/html");
+ my $version = '$zRevision: 1.103 $ $Revision: 3.35 $'; #'
+ http_header();
print <
-
-
$title