#! /usr/bin/perl
#------------------------------------------------------------------------
# This script is used to verify the ASCII version of the file cache
#------------------------------------------------------------------------
$DEFAULT_FILENAME = "/ldas_outgoing/diskcacheAPI/frame_cache_dump";

@EXIT_STATUS = (
  "OK" => 0,
  "MULTIPLE_ENTRIES" => 1,
);

my $EXIT_CODE = $EXIT_STATUS{"OK"};

#------------------------------------------------------------------------
# 
#------------------------------------------------------------------------
sub check_for_duplicates
{
    my $modtimes_ = shift;
    my $dir_info = shift;

    my %modtimes = %$modtimes_;
    my @l = ( keys( %modtimes ) );
    my $key;
    my $error = 1;

    if ( ( $#l == 0 )
	 && ( scalar( @{$modtimes{$l[0]}} ) == 1 ) )
    {
	$error = 0;
    }
    if ( $error )
    {
	print "ERROR: MULTIPLE_ENTRIES: $dir_info\n";
	my $x, $y;
	foreach $x ( @l )
	{
	    foreach $y ( @{$modtimes{$x}} )
	    {
		print "\t${x} $y\n";
	    }
	}
	$EXIT_CODE = $EXIT_STATUS{"MULTIPLE_ENTRIES"};
    }
}
#------------------------------------------------------------------------
# Main
#------------------------------------------------------------------------
if ( $#ARGV < 0 )
{
    unshift @ARGV, $DEFAULT_FILENAME;
}
foreach $filename ( @ARGV )
{
    my( %entry );

    open FILE, "<", "$filename";
    while ( <FILE> )
    {
	chop;
	@info = split( / /, $_, 4);
	my( $size ) = $#{$entries{$info[0]}{$info[1]}};
	$size++;
	$entries{$info[0]}{$info[1]}[ $size ] = $info[3];
    }
    close FILE;
    #--------------------------------------------------------------------
    # Look for duplicate entries
    #--------------------------------------------------------------------
    foreach $key ( keys( %entries ) )
    {
	# my( @mods ) = keys $$entries{$key};
	# print "DEBUG: $$entries{$key}: $#mods\n";
	check_for_duplicates( $entries{$key}, $key );
    }
}

exit $EXIT_CODE;
