#!/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.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; print "Content-type: text/html\n\n"; LoadTreeConfig(); $CVS_ROOT = $::FORM{'cvsroot'}; $CVS_ROOT = pickDefaultRepository() unless $CVS_ROOT; $::TreeID = $::FORM{'module'} if (exists($::TreeInfo{$::FORM{'module'}}{'repository'})); $modules = {}; require 'modules.pl'; PutsHeader("Bonsai - CVS Query Form", "CVS Query Form", "$CVS_ROOT - $::TreeInfo{$::TreeID}{shortdesc}"); print "
"; PutsTrailer(); sub sortTest { return "" unless (exists($::FORM{sortby}) && defined($_[0]) && ($_[0] ne $::FORM{sortby})); return " SELECTED"; } refigureStartDateIfNecessary($CVS_ROOT); sub dateTest { if( $_[0] eq $::FORM{date} ){ return " CHECKED value=$_[0]"; } else { return "value=$_[0]"; } } sub regexpradio { my ($name) = @_; my ($c1, $c2, $c3); $c1 = $c2 = $c3 = ""; if( $::FORM{$name} eq 'regexp'){ $c2 = "checked"; } elsif( $::FORM{$name} eq 'notregexp'){ $c3 = "checked"; } else { $c1 = "checked"; } return " Exact match Regular expression Doesn't match Reg Exp"; } sub fetchCachedStartDate { my ($repository) = @_; open(CACHE, ") { chop(); my($rep,$date,$cachedate) = split(/\|/); if ($rep eq $repository) { $rememberedcachedate = $cachedate; return $date; } } return "unknown"; } sub refigureStartDateIfNecessary { my ($repository) = @_; my $now = time(); if ((defined $rememberedcachedate) && $now - $rememberedcachedate < 24*60*60 && $rememberedcachedate < $now) { return; } ConnectToDatabase(); SendSQL("select min(when) from checkins,repositories where repositories.id = repositoryid and repository = '$CVS_ROOT'"); my $startdate = FetchOneColumn(); if ($startdate eq "") { $startdate = "nonexistant"; } open(OUTCACHE, ">data/cachedstartdates.$$") || die "Can't open output date cache file"; if (open(INCACHE, ") { chop(); my($rep,$date,$cachedate) = split(/\|/); if ($rep ne $repository) { print OUTCACHE "$_\n"; } } close INCACHE; } print OUTCACHE "$repository|$startdate|$now\n"; close OUTCACHE; rename "data/cachedstartdates.$$", "data/cachedstartdates"; }