#!/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 diagnostics; 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; } 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 =~ s/^\/([^:]*)/$1/; $dir =~ s/([^:]*)\/$/$1/; my $rev = $::FORM{"rev"}; if(!defined($rev)) { $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'); 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 .= "
"; PutsHeader("Repository Directory $toplevel/$dir $s", $output); cvsmenu("align=right width=30%"); 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 "
Goto Directory:
Branch:
"; 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"; PutsTrailer(); sub setup_script { $script_str = qq% %; }