=================================================================== RCS file: /cvs/cvsweb/cvsweb.cgi,v retrieving revision 1.1.1.19 retrieving revision 1.1.1.20 diff -u -p -r1.1.1.19 -r1.1.1.20 --- cvsweb/cvsweb.cgi 2001/01/02 12:41:38 1.1.1.19 +++ cvsweb/cvsweb.cgi 2001/01/03 03:36:03 1.1.1.20 @@ -43,7 +43,7 @@ # SUCH DAMAGE. # # $zId: cvsweb.cgi,v 1.104 2000/11/01 22:05:12 hnordstrom Exp $ -# $kId: cvsweb.cgi,v 1.55 2001/01/02 12:23:20 knu Exp $ +# $kId: cvsweb.cgi,v 1.57 2001/01/03 02:55:30 knu Exp $ # ### @@ -53,7 +53,8 @@ use strict; use vars qw ( $config $allow_version_select $verbose - %CVSROOT %CVSROOTdescr %MIRRORS %DEFAULTVALUE %ICONS %MTYPES + @CVSrepositories @CVSROOT %CVSROOT %CVSROOTdescr + %MIRRORS %DEFAULTVALUE %ICONS %MTYPES @DIFFTYPES %DIFFTYPES @LOGSORTKEYS %LOGSORTKEYS %alltags @tabcolors %fileinfo %tags @branchnames %nameprinted %symrev %revsym @allrevisions %date %author @revdisplayorder @@ -138,7 +139,7 @@ use File::Basename; # Locations to search for user configuration, in order: for ( (dirname $0) . '/cvsweb.conf', - '/usr/local/etc/cvsweb.conf' + '/usr/local/etc/cvsweb/cvsweb.conf' ) { if (defined($_) && -r $_) { ($config) = /(.*)/; # untaint @@ -155,7 +156,8 @@ $allow_version_select = 1; ######## Configuration variables ######### # These are defined to allow checking with perl -cw -%CVSROOT = %MIRRORS = %DEFAULTVALUE = %ICONS = %MTYPES = +@CVSrepositories = @CVSROOT = %CVSROOT = +%MIRRORS = %DEFAULTVALUE = %ICONS = %MTYPES = %tags = %alltags = @tabcolors = (); $cvstreedefault = $body_tag = $body_tag_for_src = $logo = $defaulttitle = $address = @@ -359,6 +361,10 @@ else { } undef @barequery; +if (defined($input{path})) { + redirect("$scriptname/$input{path}$query"); +} + # get actual parameters $sortby = $input{"sortby"}; $bydate = 0; @@ -386,7 +392,22 @@ $defaultDiffType = $input{'f'}; $logsort = $input{'logsort'}; +my @tmp = @CVSrepositories; +my @pair; +while (@pair = splice(@tmp, 0, 2)) { + my($key, $val) = @pair; + my($descr, $cvsroot) = @$val; + + next if !-d $cvsroot; + + $CVSROOTdescr{$key} = $descr; + $CVSROOT{$key} = $cvsroot; + push @CVSROOT, $key; +} +undef @tmp; +undef @pair; + ## Default CVS-Tree if (!defined($CVSROOT{$cvstreedefault})) { &fatal("500 Internal Error", @@ -459,7 +480,7 @@ if (-d $fullname) { # to allow relative URL's. If they're not, make a redirect. ## if (!($pathinfo =~ m|/$|) || ($pathinfo =~ m |/{2,}$|)) { - redirect ($scriptwhere . '/' . $query); + redirect("$scriptwhere/$query"); } else { $where .= '/'; @@ -865,6 +886,8 @@ if (-d $fullname) { ">$tag\n"; } print "\n"; + print " Module path or alias:\n"; + printf "\n", htmlquote($where); print "\n"; print "\n"; } @@ -872,7 +895,7 @@ if (-d $fullname) { if ($allow_tar) { my($basefile) = ($where =~ m,(?:.*/)?([^/]+),); - if ($basefile ne '') { + if (defined($basefile) && $basefile ne '') { print "
\n", "
", &link("Download this directory in tarball", @@ -967,7 +990,7 @@ if (-d $fullname) { # The file has been removed and is in the Attic. # Send a redirect pointing to the file in the Attic. (my $newplace = $scriptwhere) =~ s|/([^/]+)$|/Attic/$1|; - &redirect($newplace); + redirect("$newplace$query"); exit; } elsif (0 && (my @files = &safeglob($fullname . ",v"))) { @@ -987,7 +1010,7 @@ if (-d $fullname) { while (<$fh>) { if (/^(\S+)\s+(\S+)/o && $module eq $1 && -d "$cvsroot/$2" && $module ne $2) { - &redirect("$scriptname/$2$xtra"); + redirect("$scriptname/$2$xtra$query"); } } } @@ -2715,7 +2738,7 @@ sub navigateHeader($$$$$) { print qq``; print "\n\n"; print qq`\n`; - print ''; + print ''; print "\n$path$filename - $title - $rev\n"; print "$body_tag_for_src\n"; print ""; @@ -2829,13 +2852,7 @@ sub clickablePath($$) { } sub chooseCVSRoot() { - my @foo; - foreach (sort keys %CVSROOT) { - if (-d $CVSROOT{$_}) { - push(@foo, $_); - } - } - if (@foo > 1) { + if (2 <= @CVSROOT) { my ($k); print "\n"; foreach $k (keys %input) { @@ -2850,19 +2867,26 @@ sub chooseCVSRoot() { print ""; - print ""; - print "
\n\n
"; + print ""; } else { # no choice .. print "CVS Root: [$cvstree]"; } + + print " Module path or alias:\n"; + print "\n"; + print ""; + + if (2 <= @CVSROOT) { + print ""; + } } sub chooseMirror() { @@ -3109,7 +3133,7 @@ sub http_header(;$) { sub html_header($) { my ($title) = @_; - my $version = '$zRevision: 1.104 $ $kRevision: 1.55 $'; #' + my $version = '$zRevision: 1.104 $ $kRevision: 1.57 $'; #' http_header("text/html"); print <