#!/usr/bin/perl -w
# -*- perl -*-
use P4CGI ;
use strict ;
#
#################################################################
#  CONFIGURATION INFORMATION 
#  All config info should be in P4CGI.pm
#
#################################################################
#
#  P4 search for file
#  Search depot for files matching spec
#
#################################################################

# Get file spec argument
my $filespec = P4CGI::cgi()->param("FSPC") ;
&P4CGI::bail("No file spec.") unless defined $filespec ;

				# 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" );

print "",
    &P4CGI::start_page("Search result for <br><code>$filespec</code>",
		       &P4CGI::ul_list("<b>Filename</b> -- see the complete file history",
				       "<b>Revision Number</b> -- see the file text",
				       "<b>Action</b> -- see the deltas (diffs)",
				       "<b>Change</b> -- see the complete change description, including other files")),
    &P4CGI::start_table("cellpadding=1"),
    &P4CGI::table_row("-type","th",
		      "-align","left",
		      "File","Rev","Action","Change");

    if(scalar(@matches) == 0) {
	print  "<font color=red>No files found matching $filespec</font>\n" ;
    }
    else {
	print "<font color=green>",scalar(@matches),"  matching files found:</font>" ;
	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::FLV_URL(),
						"FSPC=$name",
						$name),
				  &P4CGI::ahref("-url",P4CGI::FV_URL(),
						"FSPC=$name",
						"REV=$rev",
						$rev),
				  &P4CGI::ahref("-url",P4CGI::FDV_URL(),
						"FSPC=$name",
						"REV=$rev",
						"ACT=$act",
						$act),
				  &P4CGI::ahref("-url",P4CGI::CHV_URL(),
						"CH=$change",
						$change)) ;
	}  ;
	print "",&P4CGI::end_table() ;
	my @files ;
	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(@files > 1) {
	    print 
		&P4CGI::cgi()->startform("-action",&P4CGI::FDV_URL(),
					 "-method","GET"),
		&P4CGI::cgi()->hidden("-name","ACT",
				      "-value","edit"),
		"View diff between:<br>",
		&P4CGI::cgi()->popup_menu("-name","FSPC",
					  "-values",\@files),
		"and<br>",
		&P4CGI::cgi()->popup_menu("-name","FSPC2",
					  "-values",\@files),
		&P4CGI::cgi()->submit("-name","ignore",
				      "-value"=>"Go"),
		&P4CGI::cgi()->endform() ;
	} ;	
    } ;
print
    "",    
    &P4CGI::end_page() ;

#
# That's it folks
#