#!/usr/bonsaitools/bin/perl -- # -*- Mode: perl; indent-tabs-mode: nil -*- # # The contents of this file are subject to the Netscape Public License # Version 1.0 (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. # # Query the CVS database. # require 'CGI.pl'; $|=1; $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 $dir = $::FORM{"dir"}; $dir =~ s/^\/([^:]*)/$1/; $dir =~ s/([^:]*)\/$/$1/; $rev = $::FORM{"rev"}; print "Content-type: text/html\n\n"; &setup_script; $Setup_String = $script_str; if( $CVS_ROOT eq "" ){ $CVS_ROOT = pickDefaultRepository(); } validateRepository($CVS_ROOT); if( $rev ne "" ){ $s = "for branch $rev"; } CheckHidden("$CVS_ROOT/$dir"); $revstr = ''; $revstr = "&rev=$rev" unless $rev eq ''; $rootstr = ''; $rootstr .= "&cvsroot=$::FORM{'cvsroot'}" if defined $::FORM{'cvsroot'}; $rootstr .= "&module=$::TreeID"; $module = $::TreeInfo{$::TreeID}{'module'}; $toplevel = Param('toplevel'); $output = "
"; $output .= "$toplevel/ "; ($dir_head, $dir_tail) = $dir =~ m@(.*/)?(.+)@; foreach $path (split('/',$dir_head)) { $link_path .= $path; $output .= "$path/ "; $link_path .= '/'; } chop ($output); $output .= " $s"; $output .= "
"; PutsHeader("Repository Directory $toplevel/$dir $s", $output); cvsmenu("align=right width=30%"); ($other_dir = $dir) =~ s!^$module/?!!; $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:
"; @dirs = (); DIR: while( <*> ){ if( -d $_ ){ push @dirs, $_; } } if( @dirs != 0 ){ $j = 1; $split = int(@dirs/4)+1; print "

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

Files:"; print "
"; @files = <*,v>; $j = 1; $split = int(@files/4)+1; for $_ (@files){ $_ =~ s/\,v//; print "\n"; print "
$_\n"; if( $j % $split == 0 ){ print "\n
\n"; } $j++; } print "\n
\n"; PutsTrailer(); sub setup_script { $script_str =<<'ENDJS'; ENDJS }