=================================================================== RCS file: /cvs/cvsweb/cvsweb.cgi,v retrieving revision 1.19 retrieving revision 1.35 diff -u -p -r1.19 -r1.35 --- cvsweb/cvsweb.cgi 1998/05/17 15:41:28 1.19 +++ cvsweb/cvsweb.cgi 1999/09/17 18:56:44 1.35 @@ -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: www/en/cgi/cvsweb.cgi,v 1.34 1999/09/08 13:04:09 peter Exp $ +# + + #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 @@ -34,18 +61,21 @@ require 'cgi-style.pl'; %CVSROOT = ( 'freebsd', '/home/ncvs', - 'openbsd', '/home/OpenBSD/cvs', 'learn', '/c/learncvs', - 'mozilla', '/a/mozilla-cvs', ); %CVSROOTdescr = ( 'freebsd', 'FreeBSD', - 'openbsd', 'OpenBSD', '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"; @@ -115,17 +145,21 @@ if (!-d $cvsroot) { &fatal("500 Internal Error",'$CVSROOT not found!

The server on which the CVS tree lives is probably down. Please try again in a few minutes.'); } +# Set up for FreeBSD repo options. +$ENV{'RCSLOCALID'} = 'FreeBSD=CVSHeader'; +$ENV{'RCSINCEXC'} = 'iFreeBSD'; +$ENV{'CVSROOT'} = $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]} ? @@ -136,6 +170,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); @@ -148,8 +196,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 @@ -284,7 +333,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; @@ -384,7 +433,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",