=================================================================== RCS file: /cvs/cvsweb/cvsweb.cgi,v retrieving revision 1.20 retrieving revision 1.33 diff -u -p -r1.20 -r1.33 --- cvsweb/cvsweb.cgi 1998/07/23 08:50:52 1.20 +++ cvsweb/cvsweb.cgi 1999/09/06 07:02:40 1.33 @@ -3,8 +3,35 @@ # cvsweb - a CGI interface to the CVS tree. # # Written by Bill Fenner on his own time. -# Insert BSD copyright here. # +# Copyright (c) 1996-1998 Bill Fenner +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + + #HTTP_USER_AGENT: Mozilla/1.1N (X11; I; SunOS 4.1.3_U1 sun4m) via proxy gateway CERN-HTTPD/3.0 libwww/2.17 #SERVER_NAME: www.freebsd.org #QUERY_STRING: baz @@ -35,15 +62,20 @@ require 'cgi-style.pl'; %CVSROOT = ( 'freebsd', '/home/ncvs', 'learn', '/c/learncvs', - 'mozilla', '/a/mozilla-cvs', ); %CVSROOTdescr = ( 'freebsd', 'FreeBSD', 'learn', 'Learn', - 'mozilla', 'Mozilla FreeBSD', ); +%mirrors = ( + 'Germany', 'http://www.de.freebsd.org/cgi/cvsweb.cgi', + 'Spain', 'http://www.es.freebsd.org/cgi/cvsweb.cgi', + 'California', 'http://www.freebsd.org/cgi/cvsweb.cgi', + 'Japan', 'http://www.jp.freebsd.org/cgi/cvsweb.cgi', + ); + $cvstreedefault = 'freebsd'; $cvstree = $cvstreedefault; $cvsroot = $CVSROOT{"$cvstree"} || "/home/ncvs"; @@ -117,13 +149,13 @@ if (!-d $cvsroot) { { local(@foo, $i); local($scriptname) = $ENV{'SCRIPT_NAME'}; - foreach (keys %CVSROOT) { + foreach (sort keys %CVSROOT) { if (-d $CVSROOT{$_}) { push(@foo, $_); } } if ($#foo > 1) { - $intro .= "

\nThis script support the following CVS trees:\n"; + $intro .= "

\nThis script supports the following CVS trees:\n"; for($i = 0; $i <= $#foo; $i++) { $intro .= qq{} . ($CVSROOTdescr{$foo[$i]} ? @@ -134,6 +166,20 @@ if (!-d $cvsroot) { } +{ + local(@mirrors) = sort keys %mirrors;; + if ($#mirrors >= 0) { + $intro .= "

\nThis script is mirrored in:\n"; + local($m); + for($m = 0; $m <= $#mirrors; $m++) { + $intro .= qq($mirrors[$m]); + $intro .= ',' if $m != $#mirrors; + $intro .= "\n"; + } + } +} + + if (-d $fullname) { opendir(DIR, $fullname) || &fatal("404 Not Found","$where: $!"); @dir = readdir(DIR); @@ -146,8 +192,9 @@ if (-d $fullname) { print $shortinstr; } print "

"; - print "Current CVS tree: $cvstree
\n" - if $cvstree ne $cvstreedefault; + print "Current CVS tree: ", + ($CVSROOTdescr{"$cvstree"} ? $CVSROOTdescr{"$cvstree"} : + $cvstree), "
\n"; print "Current directory: /$where\n"; print "


\n"; # Using in this manner violates the HTML2.0 spec but @@ -282,7 +329,7 @@ sub htmlify { $string =~ s/>/>/g; if ($pr) { - $string =~ s|\bpr(\W+[a-z]+/\W*)(\d+)|$&|ig; + $string =~ s!\b((pr[:#]?\s*#?)|((bin|conf|docs|gnu|i386|kern|misc|ports)\/))(\d+)\b!$&!ig; } $string; @@ -382,7 +429,9 @@ sub checkout { "Unexpected output from co: $_"); } $_ = ; - if (/^revision\s+$rev\s*$/) { + if ($rev eq ".") { + # latest rev requested, don't check + } elsif (/^revision\s+$rev\s*$/) { # As expected } else { &fatal("500 Internal Error", @@ -676,7 +725,7 @@ sub dolog { print " (vendor branch)"; } print " " . &ctime($date{$_}) . " UTC by "; - print "" . $author{$_} . "\n"; + print "" . $author{$_} . "\n"; if ($revsym{$_}) { print "
CVS Tags: $revsym{$_}"; }