#!/usr/bin/perl

use strict;
use warnings;

use DNS::BL;
use Fcntl qw(:DEFAULT);
use MLDBM qw(DB_File Storable);

tie my %edb, 'MLDBM', $ARGV[0], O_RDONLY, 0640
    or die "Failed to tie $ARGV[0]: $!\n";

# Verify index integrity
for my $k (keys %edb)
{
    next unless $k =~ /^index:/;
    my $r_idx = $edb{$k};

    warn "Empty index $k\n" unless @$r_idx;
    
    for my $n (grep { m/^index:/ } @$r_idx)
    {
	warn "Index $k contains dangling index pointer $n\n"
	    unless exists $edb{$n};
    }

    for my $n (grep { m/^node:/ } @$r_idx)
    {
	my $a = substr($n, 5);
	warn "Index $k contains dangling node pointer $n\n"
	    unless exists $edb{$a};
    }
}
