#! /bin/sh

mktitmap () {
	kmap=$1
	map=$2
	if egrep "ENCODE:[ 	]*BIG5" $kmap
	then
		if iconv -f BIG5 -t UTF8 $kmap > /tmp/$map.utf
		then
			`dirname $0`/mkkmcxt /tmp/$map.utf
		else	echo cannot convert $kmap to UTF-8
		fi
		rm -f /tmp/$map.utf
	elif egrep "ENCODE:[ 	]*GB" $kmap
	then
		if iconv -f GB18030 -t UTF8 $kmap > /tmp/$map.utf ||
		   iconv -f GBK -t UTF8 $kmap > /tmp/$map.utf ||
		   iconv -f GB2312 -t UTF8 $kmap > /tmp/$map.utf
		then
			`dirname $0`/mkkmcxt /tmp/$map.utf
		else	echo cannot convert $kmap to UTF-8
		fi
		rm -f /tmp/$map.utf
	elif egrep "ENCODE:[ 	]*JIS" $kmap
	then
		if iconv -f UJIS -t UTF8 $kmap > /tmp/$map.utf
		then
			`dirname $0`/mkkmcxt /tmp/$map.utf
		else	echo cannot convert $kmap to UTF-8
		fi
		rm -f /tmp/$map.utf
	elif egrep "ENCODE:[ 	]*KS" $kmap
	then
		if iconv -f UHC -t UTF8 $kmap > /tmp/$map.utf
		then
			`dirname $0`/mkkmcxt /tmp/$map.utf
		else	echo cannot convert $kmap to UTF-8
		fi
		rm -f /tmp/$map.utf
	else	echo cannot handle encoding of $kmap
	fi
}

for kmap in $*
do
	if [ ! -d keymaps ]
	then	mkdir keymaps
	fi

	case $kmap in
	*.kmap)	`dirname $0`/mkkmyudt $kmap;;
	*.utf)	`dirname $0`/mkkmcxt $kmap;;
	*.vim)	`dirname $0`/mkkmvim $kmap;;
	*.tit)	map=`basename $kmap .tit`
		mktitmap $kmap $map
		;;
	*.cit)	map=`basename $kmap .cit`
		if cit2tit $kmap > /tmp/$map.tit
		then	mktitmap /tmp/$map.tit $map
		else	echo cannot decompile $kmap
		fi
		rm -f /tmp/$map.tit
		;;
	*.*)	echo unknown keyboard mapping file type $kmap;;
	cj|CJ|cangjie|Cangjie|CangJie|CANGJIE)
		`dirname $0`/mkcangjie;;
	*)	echo generating keyboard mapping for $kmap script from UnicodeData >&2
		`dirname $0`/mkkmudat $kmap
		;;
	esac
done
