#!/usr/bin/jperl5
#########################################################
# makedbmdic(perl5) version 5.0                1995.10.17
#
# This software is placed in the public domain.
#
#         Written by Masaaki Sato <msatoh@mrit.mei.co.jp>
#	        Matsushita Research Institute Tokyo, Inc. 
#		       Human Interface Research Laboratry
#			              Tel    044-911-6351
#			              Fax    044-911-8760
#########################################################

# Author: Masaaki Sato <msatoh@mrit.mei.co.jp>
# Maintainer: Mikio Nakajima <minakaji@osaka.email.ne.jp>
# Version: $Id: makedbmdic5,v 1.2 2013/05/30 14:44:24 skk-cvs Exp $
# Keywords: jisyo, dbm, gdbm, perl
# Last Modified: $Date: 2013/05/30 14:44:24 $

use Getopt::Std;
getopts('BG'); 
our($opt_B, $opt_G);

if (defined $opt_B){
	use DB_File;
	use Fcntl;
}elsif (defined $opt_G){
	use GDBM_File;
}

$dot=20;
$line=$dot * 50;

($dicname) = @ARGV;
die "Usage: makedbmdic [-B|G] dict-file-name\n" unless $dicname;

open(DIC,$dicname);

if (defined $opt_B){
	tie %dbm_dic,  DB_File, "$dicname.db", O_RDWR|O_CREAT, 0644, $DB_HASH ;
}elsif (defined $opt_G){
	tie %dbm_dic,  GDBM_File, "$dicname.gdbm", GDBM_NEWDB|GDBM_FAST, 0644, 0 ;
}else{
	dbmopen(%dbm_dic,$dicname,0644);
}


print "\nmakedbmdic by msatoh\@mrit.mei.co.jp\n";
print "Make dbm format dic from SKK dic.\n";
print "The numbers mean how many lines have processed.\n";
print "A dot mean $dot lines, as you see.\n\n";

$|=1;

$max=0;
while(<DIC>){
	$max++;
}

seek(DIC,0,0);

$count=0;
while(<DIC>){
	($key,$cont)=m#^(.+)\s(/.+/)$#;
	$dbm_dic{$key} = $cont;
	$count++;
	print "." if ($count % $dot) == 0;
	if (($count % $line) == 0){
		$per = $count*100/$max;
		printf("%d[%5.2f%%]\n",$count,$per);
	}
}

if (defined $opt_B || defined $opt_G){
	untie(%dbm_dic);
}else{
	dbmclose(%dbm_dic);
}
print " done.\n";
# end of makedbmdic5
