#!/usr/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; &validateRepository($CVS_ROOT); &LoadTreeConfig(); my $intreeid = &SanitizeModule($::FORM{'treeid'}); my $inmod = &SanitizeModule($::FORM{'module'}); if ($intreeid && exists($::TreeInfo{$intreeid}{'repository'}) && !exists($::TreeInfo{$intreeid}{'nobonsai'})) { $::TreeID = $intreeid; } elsif ($inmod && exists($::TreeInfo{$inmod}{'repository'}) && !exists($::TreeInfo{$inmod}{'nobonsai'})) { $::TreeID = $inmod; } else { $::TreeID = 'default'; } # get dir, remove leading and trailing slashes my $dir = $::FORM{"dir"} || ""; $dir =~ s/^[\/]+([^:]*)/$1/; $dir =~ s/([^:]*)[\/]+$/$1/; my $path = "$CVS_ROOT/$dir"; $path = &ChrootFilename($CVS_ROOT, $path); die "Invalid directory: " . &shell_escape($dir) . ".\n" if (! -d $path); my $rev = &SanitizeRevision($::FORM{"rev"}); print "Content-type: text/html\n\n"; my $registryurl = Param('registryurl'); $registryurl =~ s@/$@@; my $script_str; &setup_script; $::Setup_String = $script_str; my $s = ""; if ($rev) { $s = "for branch $rev"; } my $revstr = ''; $revstr = "&rev=$rev" unless $rev eq ''; my $rootstr = ''; $rootstr .= "&cvsroot=$CVS_ROOT"; $rootstr .= "&module=$::TreeID"; my $module = $::TreeInfo{$::TreeID}{'module'}; my $toplevel = Param('toplevel'); &PutsHeader("Repository Directory $toplevel/" . &html_quote($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 .= " " . &html_quote($dir_tail) . "/ $s "; $output .= "
"; print "$output\n"; print '\n\n

'; 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 $_ ){ next if $_ =~ /^\.{1,2}$/; push @dirs, $_; } } my $j; my $split; if( @dirs != 0 ){ $j = 1; $split = int(@dirs/4)+1; print "

Directories:\n"; print "\n\n\n
\n"; for my $i (@dirs){ my $ldir = ($dir ne "" ? "$dir/$i" : $i); my $anchor = "?dir=$ldir$rootstr"; print "
$i\n"; if( $j % $split == 0 ){ print "\n
\n"; } $j++; } print "\n
\n"; } print "

Files:\n"; print "\n\n\n\n
\n"; my @files = <.*,v *,v>; $j = 1; $split = int(@files/4)+1; for $_ (@files){ $_ =~ s/\,v//; print qq{
"; print "$_\n"; if( $j % $split == 0 ){ print "
\n"; } $j++; } print "
\n

\n"; cvsmenu(""); print "
\n"; PutsTrailer(); sub setup_script { $script_str = qq% %; }