#! /usr/bin/perl
# info ファイル群から、database を作成するスクリプト
# $Id: genindex.pl,v 1.5 2002/11/12 10:58:36 mdk Exp $
#
# Fujiwara さんの書いたスクリプトをベースにしている。
#
# 結合する Berkeley DB file の名前を第1引数にすること。
# info ファイルのリストがそれに続く引数になる。

use strict;
use vars;
use DB_File;
use lib qw(bin);
use jfadmlib qw(:DEFAULT :LOCKS);
use Jcode;

my $database = shift (@ARGV);

unlink $database;
my ($H, %index); $H = tie(%index, 'DB_File', "$database",
			  O_RDWR|O_CREAT, 0644, $DB_BTREE) or die;
lockdb($H, LOCK_EX);

foreach my $file (@ARGV)
{
    my %DBITEM;

    if (!open(CL, $file)) {
	print "Can't open.\n";
	next;
    }

    while (<CL>) {
	last if /DRAFT.NOINDEX/i;  
	s/\s*#.*$//;
	next if /^\s*$/;
	Jcode::convert(\$_, 'euc');
	if (/^(\w+):\s*(.*)$/) {
	    my ($key, $value) = ($1, $2);
	    $value =~ s/\s*$//;
	    $DBITEM{$key} = $value;
	}
    }
    close CL;

    if ($DBITEM{'NAME'}) {
	my $name = $DBITEM{'NAME'};
	foreach my $k (keys %DBITEM) {
	  jfadmlib::add_ent($H, $name, $k, $DBITEM{$k});
	}

    } else {
	print STDERR "$file has no NAME field. (ignored)\n";
	next;
    }
    undef %DBITEM;
}

unlockdb;
undef $H;
untie %index;

# Local variables:
# cperl-indent-level: 4
# End:
