#!/usr/bonsaitools/bin/perl -w
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Netscape Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bonsai CVS tool.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
#
# Query the CVS database.
#
use strict;
# Shut up misguided -w warnings about "used only once". "use vars" just
# doesn't work for me.
sub sillyness {
my $zz;
$zz = $::Setup_String;
$zz = $::script_type;
}
require 'CGI.pl';
$|=1;
my $CVS_ROOT = $::FORM{"cvsroot"};
$CVS_ROOT = pickDefaultRepository() unless $CVS_ROOT;
LoadTreeConfig();
$::TreeID = $::FORM{'module'}
if (!exists($::FORM{'treeid'}) &&
exists($::FORM{'module'}) &&
exists($::TreeInfo{$::FORM{'module'}}{'repository'}));
$::TreeID = 'default'
if (!exists($::TreeInfo{$::TreeID}{'repository'}) ||
exists($::TreeInfo{$::TreeID}{'nobonsai'}));
# get dir, remove leading and trailing slashes
my $dir = $::FORM{"dir"};
$dir = "" unless defined $dir;
$dir = "" if ($dir =~ /^\.\.\/$/);
$dir =~ s/^\/([^:]*)/$1/;
$dir =~ s/([^:]*)\/$/$1/;
my $rev = '';
$rev = sanitize_revision($::FORM{"rev"}) if defined($::FORM{"rev"});
print "Content-type: text/html\n\n";
my $registryurl = Param('registryurl');
$registryurl =~ s@/$@@;
my $script_str;
&setup_script;
$::Setup_String = $script_str;
if( $CVS_ROOT eq "" ){
$CVS_ROOT = pickDefaultRepository();
}
validateRepository($CVS_ROOT);
my $s = "";
if ($rev) {
$s = "for branch $rev";
}
CheckHidden("$CVS_ROOT/$dir");
my $revstr = '';
$revstr = "&rev=$rev" unless $rev eq '';
my $rootstr = '';
$rootstr .= "&cvsroot=$::FORM{'cvsroot'}" if defined $::FORM{'cvsroot'};
$rootstr .= "&module=$::TreeID";
my $module = $::TreeInfo{$::TreeID}{'module'};
my $toplevel = Param('toplevel');
PutsHeader("Repository Directory $toplevel/$dir $s", "");
my $output = "
";
$output .= "
$toplevel/ ";
my ($dir_head, $dir_tail) = $dir =~ m@(.*/)?(.+)@;
$dir_head = "" unless defined $dir_head;
$dir_tail = "" unless defined $dir_tail;
my $link_path = "";
foreach my $path (split('/',$dir_head)) {
$link_path .= $path;
$output .= "
$path/ ";
$link_path .= '/';
}
chop ($output);
$output .= " $dir_tail/ $s ";
$output .= "
";
print $output;
print '| ';
my $other_dir;
($other_dir = $dir) =~ s!^$module/?!!;
my $other_dir_used = 1;
LoadDirList();
if (-d "$CVS_ROOT/$dir") {
chdir "$CVS_ROOT/$dir";
$other_dir_used = 0;
} elsif (-d "$CVS_ROOT/$other_dir") {
chdir "$CVS_ROOT/$other_dir";
} else {
chdir "$CVS_ROOT";
}
print "
";
my @dirs = ();
DIR:
while( <*> ){
if( -d $_ ){
push @dirs, $_;
}
}
my $j;
my $split;
if( @dirs != 0 ){
$j = 1;
$split = int(@dirs/4)+1;
print " Directories: ";
for my $i (@dirs){
$::FORM{"dir"} = ($dir ne "" ? "$dir/$i" : $i);
my $anchor = &make_cgi_args;
print "$i\n";
if( $j % $split == 0 ){
print "\n| \n";
}
$j++;
}
$::FORM{"dir"} = $dir;
print "\n | | \n";
}
print "Files:";
print " | ";
my @files = <*,v>;
$j = 1;
$split = int(@files/4)+1;
for $_ (@files){
$_ =~ s/\,v//;
print qq{\n";
print "$_\n";
if( $j % $split == 0 ){
print "\n | \n";
}
$j++;
}
print "\n | \n | ";
cvsmenu("");
print "\n |
\n";
PutsTrailer();
sub setup_script {
$script_str = qq%
%;
}