#! /usr/bin/perl

use warnings;
use strict;
use MLDBM qw(DB_File Storable);
use Fcntl;

$MLDBM::DumpMeth=q(portable);

my (%srcbin, %binsrc);
tie %srcbin, 'MLDBM', '/org/bugs.debian.org/versions/indices/srcbin.idx',
	     O_CREAT|O_RDWR, 0644
    or die "tie srcbin.idx: $!";
tie %binsrc, 'MLDBM', '/org/bugs.debian.org/versions/indices/binsrc.idx',
	     O_CREAT|O_RDWR, 0644
    or die "tie binsrc.idx: $!";

my @files  = @ARGV;


for my $file (@files) {
    my $fh = IO::File->new($file,'r') or
	die "Unable to open $file for reading: $!";
    while (<$fh>) {
	chomp;
	next unless length $_;
	my ($binname, $binver, $binarch, $srcname, $srcver) = split;
	# if $srcver is not defined, this is probably a broken
	# .debinfo file [they were causing #686106, see commit
	# 49c85ab8 in dak.] Basically, $binarch didn't get put into
	# the file, so we'll fudge it from the filename.
	if (not defined $srcver) {
	    ($srcname,$srcver) = ($binarch,$srcname);
	    ($binarch) = $file =~ /_([^\.]+)\.debinfo/;
	}
	print STDERR "$binname/$binver/$binarch => $srcname/$srcver\n";
	# see MLDBM(3pm)/BUGS
	my $tmp = $srcbin{$srcname};
	push @{$tmp->{$srcver}}, [$binname, $binver, $binarch];
	$srcbin{$srcname} = $tmp;

	$tmp = $binsrc{$binname};
	$tmp->{$binver}{$binarch} = [$srcname, $srcver];
	$binsrc{$binname} = $tmp;
    }
}
