#! /usr/bin/perl
#
# パッケージ原文が更新されたときに、
# translation_list を更新するために upd_tl.perl に与える
# 設定ファイルを作成するスクリプト
#
# original/ ディレクトリ以下にファイルを揃え、cvs add や
# cvs remove を実行して、cvs commit を実行する前に、
# original/ ディレクトリ上で cvs -q upd した結果を標準入力から
# 与えてください。
# 結果は標準出力に出力するので、適当にリダイレクトして下さい。
#
# 結果にはささいな変更も含まれますので、実際にはそれらに
# 手動で対応した後、結果の該当部分を手動で削除してから
# upd_tl.perl を使うことになると思います。
#
# BUG:
# ゴミを出力することがあります。手動で削除してください。
#

sub cvfn()
{
	my($fn) = @_;
	if($fn =~ m@man./([-.\w]+)\.(\d)$@){
		return "$1:$2";
	} else {
		return '';
	}
}

sub getdate()
{
	my($fn) = @_;
	my($input,$date);
	open F, "<$fn";
	while ($input = <F>) {
		if ($input =~ /^\.TH [^ ]+ +[1-8] +\"?([0-9]+)\-([0-9]+)\-([0-9]+)\"? /) {
			$date = $1 . "/" . $2 . "/" . $3;
		}
	}
	close F;
	if ($date) {
		return $date;
	} else {
		return "0000/00/00";
	}
}

while(<>){
	s/[\r\n]*$//;
	my($mode, $fn) = split;
	if($mode eq 'A'){
		open F, "<$fn";
		$top = <F>;
		close F;
		if($top =~ /^.so ([-\w]+)/i){
			print 'L ' . &cvfn($fn) . ' ' . &cvfn($top) . "\n";
		} else {
			print 'A ' . &cvfn($fn) . " " . &getdate($fn) . "\n";
		}
	}
	if($mode eq 'M'){
		open F, "<$fn";
		$top = <F>;
		close F;
		if($top =~ /^.so ([-\w]+)/i){
			print 'L ' . &cvfn($fn) . ' ' . &cvfn($top) . "\n";
		} else {
			print 'U ' . &cvfn($fn) . " " . &getdate($fn) . "\n";
		}
	}
	if($mode eq 'R'){
		print 'R ' . &cvfn($fn) . "\n";
	}
}
