#! /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 = ) { 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 = ; 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 = ; 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"; } }