===================================================================
RCS file: /cvs/cvsweb/cvsweb.cgi,v
retrieving revision 1.1.1.2
retrieving revision 3.18
diff -u -p -r1.1.1.2 -r3.18
--- cvsweb/cvsweb.cgi 2000/08/15 08:40:58 1.1.1.2
+++ cvsweb/cvsweb.cgi 2000/09/04 14:50:22 3.18
@@ -41,8 +41,8 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $zId: cvsweb.cgi,v 1.93 2000/07/27 17:42:28 hzeller Exp $
-# $kId: cvsweb.cgi,v 1.13 2000/08/15 08:35:51 knu Exp $
+# $zId: cvsweb.cgi,v 1.94 2000/08/24 06:41:22 hnordstrom Exp $
+# $Id: cvsweb.cgi,v 3.18 2000/09/04 14:50:22 knu Exp $
#
###
@@ -53,8 +53,8 @@ use vars qw (
%CVSROOT %CVSROOTdescr %MIRRORS %DEFAULTVALUE %ICONS %MTYPES
%alltags @tabcolors %fileinfo %tags @branchnames %nameprinted
%symrev %revsym @allrevisions %date %author @revdisplayorder
- @revisions %state %difflines %log %branchpoint @revorder $prcgi
- @prcategories $prcategories
+ @revisions %state %difflines %log %branchpoint @revorder
+ $prcgi @prcategories $prcategories $mancgi
$checkoutMagic $doCheckout $scriptname $scriptwhere
$where $pathinfo $Browser $nofilelinks $maycompress @stickyvars
%funcline_regexp $is_mod_perl
@@ -347,6 +347,7 @@ foreach my $k (keys %ICONS) {
do "$config-$cvstree" if (-f "$config-$cvstree");
$prcategories = '(?:' . join('|', @prcategories) . ')';
+$prcgi .= '%s' if defined($prcgi) && $prcgi !~ /%s/;
$fullname = $cvsroot . '/' . $where;
$mimetype = &getMimeTypeFromSuffix ($fullname);
@@ -886,7 +887,7 @@ sub findLastModifiedSubdirs(@) {
}
sub htmlify($;$) {
- my($string, $pr) = @_;
+ my($string, $extra) = @_;
# Special Characters; RFC 1866
$string =~ s/&/&/g;
@@ -895,14 +896,21 @@ sub htmlify($;$) {
$string =~ s/>/>/g;
# get URL's as link ..
- $string =~ s`(http|ftp|https)(://[-a-zA-Z0-9%.~:_/]+)([?&]([-a-zA-Z0-9%.~:_]+)=([-a-zA-Z0-9%.~:_])+)*`$1$2$3`;
+ $string =~ s`(http|ftp|https)(://[-a-zA-Z0-9%.~:_/]+)([?&]([-a-zA-Z0-9%.~:_]+)=([-a-zA-Z0-9%.~:_])+)*`$1$2$3`g;
# get e-mails as link
- $string =~ s`([-a-zA-Z0-9_.]+@([-a-zA-Z0-9]+\.)+[A-Za-z]{2,4})`$1`;
+ $string =~ s`([-a-zA-Z0-9_.]+@([-a-zA-Z0-9]+\.)+[A-Za-z]{2,4})`$1`g;
- # get #PR as link ..
- if ($pr && defined($prcgi)) {
- 1 while $string =~ s`\b(pr[:#]?\s*(?:#?\d+[,\s]\s*)*#?)(\d+)\b`$1$2`i;
- $string =~ s`\b${prcategories}/(\d+)\b`$&`igo;
+ if ($extra) {
+ # get PR #'s as link ..
+ if (defined($prcgi)) {
+ 1 while $string =~ s`\b(pr[:#]?\s*(?:#?\d+[,\s]\s*)*#?)(\d+)\b`sprintf('%s%s', $1, sprintf($prcgi, $2), $2)`ie;
+ $string =~ s`\b${prcategories}/(\d+)\b`sprintf('%s', sprintf($prcgi, $1), $&)`igeo;
+ }
+
+ # get manpage specs as link ..
+ if (defined($mancgi)) {
+ $string =~ s`\b([a-zA-Z]\w+)\(([0-9n])\)\B`sprintf('%s', sprintf($mancgi, $2, $1), $&)`ge;
+ }
}
return $string;
@@ -912,7 +920,7 @@ sub spacedHtmlText($) {
local $_ = $_[0];
# Cut trailing spaces
- s/\s+\n$//;
+ s/\s+$/\n/;
# Expand tabs
s/\t+/' ' x (length($&) * $tabstop - length($`) % $tabstop)/e
@@ -949,6 +957,10 @@ sub link($$) {
sub revcmp($$) {
my($rev1, $rev2) = @_;
+
+ # make no comparison for a tag or a branch
+ return 0 if $rev1 =~ /[^\d.]/ || $rev2 =~ /[^\d.]/;
+
my(@r1) = split(/\./, $rev1);
my(@r2) = split(/\./, $rev2);
my($a,$b);
@@ -1063,7 +1075,7 @@ sub doAnnotate($$) {
# make sure the revisions a wellformed, for security
# reasons ..
- if (!($rev =~ /^[\d\.]+$/)) {
+ if ($rev =~ /[^\w.]/) {
&fatal("404 Not Found",
"Malformed query \"$ENV{QUERY_STRING}\"");
}
@@ -1214,9 +1226,13 @@ sub doCheckout($$) {
my ($mimetype,$revopt);
my $fh = do {local(*FH);};
+ if ($rev eq 'HEAD' || $rev eq '.') {
+ $rev = undef;
+ }
+
# make sure the revisions a wellformed, for security
# reasons ..
- if (defined($rev) && !($rev =~ /^[\d\.]+$/)) {
+ if (defined($rev) && $rev =~ /[^\w.]/) {
&fatal("404 Not Found",
"Malformed query \"$ENV{QUERY_STRING}\"");
}
@@ -1252,7 +1268,7 @@ sub doCheckout($$) {
# Safely for a child process to read from.
if (! open($fh, "-|")) { # child
open(STDERR, ">&STDOUT"); # Redirect stderr to stdout
- exec("cvs", "-d", $cvsroot, "co", "-p", $revopt, $where);
+ exec("cvs", "-Rld", $cvsroot, "co", "-p", $revopt, $where);
}
#===================================================================
#Checking out squid/src/ftp.c
@@ -1369,9 +1385,10 @@ sub doDiff($$$$$$) {
$rev2 = $tr2;
$sym2 = "";
}
+
# make sure the revisions a wellformed, for security
# reasons ..
- if (!($rev1 =~ /^[\d\.]+$/) || !($rev2 =~ /^[\d\.]+$/)) {
+ if ($rev1 =~ /[^\w.]/ || $rev2 =~ /[^\w.]/) {
&fatal("404 Not Found",
"Malformed query \"$ENV{QUERY_STRING}\"");
}
@@ -1413,7 +1430,7 @@ sub doDiff($$$$$$) {
# apply special options
if ($showfunc) {
- push @difftype, '-p';
+ push @difftype, '-p' if $f =~ /^[cHhu]$/;
my($re1, $re2);
@@ -2125,7 +2142,7 @@ EOF
print "\n";
$diffrev = $revdisplayorder[0];
$diffrev = $input{"r2"} if (defined($input{"r2"}));
- print "\n";
+ print "\n";
print "
Type of Diff should be a ";
printDiffSelect(0);
print "\n";
@@ -2373,7 +2390,7 @@ sub navigateHeader($$$$$) {
$swhere = urlencode($filename) if ($swhere eq "");
print "<\!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">";
print "\n