#!/usr/local/bin/perl5
# -*- perl -*-
use P4CGI ;
use strict ;
#
#####################################################################
##
## CONFIGURATION INFORMATION
## All config info should be in $configFile (see init() in P4CGI.pm)
##
#####################################################################
##
## Search For File
##
#####################################################################
# Set back references
my $homepage="index.cgi";
my $backtohome="Back to Home" ;
# Get file spec argument
my $filespec = P4CGI::cgi()->param("FSPC") ;
$filespec = "" unless defined $filespec ;
my $label = P4CGI::cgi()->param("LABEL") ;
if(!defined $label) {
$label = "" ;
}
my $filedesc ;
my $showDiffSelection="Y" ;
if($filespec eq "") {
$filedesc = " <small>label</small><br><code>$label</code>" ;
$showDiffSelection= undef ;
}
else {
$filedesc = "<br><code>$filespec</code>" ;
if($label ne "") {
$filedesc .= "<br><small>in label</small><br><code>$label</code>" ;
}
}
if($label ne "") {
$label = "\@$label" ;
}
# Add //... if not there
if($filespec !~ /^\/\//) {
$filespec = "//...$filespec" ;
}
while($filespec =~ s/\.\.\.\.\.\./\.\.\./) { ; } ;
while($filespec =~ s/\*\*/\*/) { ; } ;
#Check if file exists
my @matches ;
&P4CGI::p4call(\@matches, "files \"${filespec}${label}\"" );
# Set what we searched on
my $search ;
if ( $label )
{
$label =~ /\@(.*)/ ;
$search = "$1" ; }
else {
$search = $filespec ;
}
# Print title and legend
print
"",
&P4CGI::start_page("Search Results",
&P4CGI::ul_list(
"<b>Change:</b> to see the complete change description,
including other files",
"<b>Action:</b> to see the deltas (diffs)",
"<b>Rev:</b> to see the file text",
"<b>Filename:</b> to see the complete file history"),
$homepage,$backtohome);
# Print the files
if( $label eq "" ) {
print
"",
"<b>Search on:</b><font color=green> $search</font>" ;
}
else {
print
"",
"<b>Search on label:</b><font color=green> $search</font>" ;
}
if(scalar(@matches) == 0) {
print
"",
"<br>",
"<b>0</b> files found";
}
else {
print
"",
"<br>",
"<b>", scalar(@matches),
"</b> file",
scalar(@matches)==1 ? "" : "s",
" found",
"<hr>",
&P4CGI::start_table("cellpadding=4"),
&P4CGI::table_row("-type","th",
"-align","left",
"Change","Action","Rev","Filename");
my $f ;
foreach $f (@matches) {
$f =~ /([^\#]+)\#(\d+) - (\w+) change (\d+)/ ;
my ($name,$rev,$act,$change)=($1,$2,$3,$4) ;
print
"",
&P4CGI::table_row(&P4CGI::ahref("-url",P4CGI::CHV_URL(),
"CH=$change", $change),
&P4CGI::ahref("-url",P4CGI::FDV_URL(),
&P4CGI::fixspaces("FSPC=$name"),
"REV=$rev",
"ACT=$act",
$act),
&P4CGI::ahref("-url",P4CGI::FV_URL(),
&P4CGI::fixspaces("FSPC=$name"),
"REV=$rev",
$rev),
&P4CGI::ahref("-url",P4CGI::FLV_URL(),
&P4CGI::fixspaces("FSPC=$name"),
$name)) ;
} ;
print "",&P4CGI::end_table() ;
my @files ;
my %filesToFiles ;
foreach $f (@matches) {
$f =~ /([^\#]+)\#(\d+) - (\w+) change (\d+)/ ;
my ($name,$rev,$act,$change)=($1,$2,$3,$4) ;
if($act ne "delete") {
push @files,"$name\#$rev" ;
}
}
if(defined $showDiffSelection and @files > 1) {
print
&P4CGI::cgi()->startform("-action",&P4CGI::FDV_URL(),
"-method","GET"),
&P4CGI::cgi()->hidden("-name","ACT",
"-value","NO"),
"View diff between:<br>",
&P4CGI::cgi()->popup_menu(-name => "FSPC",
-values => \@files);
shift @files ;
print
"and<br>",
&P4CGI::cgi()->popup_menu(-name => "FSPC2",
-values => \@files),
&P4CGI::cgi()->submit("-name", "ignore",
"-value"=>"Go"),
&P4CGI::cgi()->endform() ;
}
}
# End the page
print
"",
&P4CGI::end_page() ;
| # | Change | User | Description | Committed | |
|---|---|---|---|---|---|
| #1 | 271 | Diane Holt |
The Perl files for P4DB. These (almost) match the files in rev 1 of the p4db.tar file -- a few files have some minor cosmetic changes in the code, and chv.cgi has a Legend item added that was missing in the one in the tar-file. These files, at rev 1 (and the files in p4db.tar at rev 1), are suitable for for running the app with release 98.2 of P4. |