#!/usr/bin/perl # # update_list を見て translation_list を更新する。 # # 第 1 引数に translation_list, 第 2 引数に update_list, # 第 3 引数にパッケージの新しいバージョンを指定する。 # # 出力ファイルのファイル名は "第1引数.第3引数" となる。 # # update_list の書式は以下の通り # # ・フィールドの区切り文字は ":" または " "。 # # ・第 1 フィールドは U(更新) A(追加) L(リンク) のいずれか。 # # で始まる行はコメント行とみなされる。 # # ・第 2, 3 フィールドは basename と セクション番号。 # # ・U, A の場合, 第 4 フィールドはオリジナルの日付。 # (U の場合は省略可能。その場合は現在の日付が使われる。) # # ・L の場合、第 4, 5 フィールドはリンク先ページの basename と # セクション番号。 # # update_list の例: # # #updated # U strtok:3 2000/02/13 # U toupper:3 # #NEWLY ADD # A pivot_root:2 2000/02/03 # A daemon:3 1993/06/09 # L dlclose:3 dlopen:3 # L dlerror:3 dlopen:3 # A dlopen:3 1995/05/16 # L dlsym:3 dlopen:3 # # バグ・制限 # セクションの変更したページには対応してません。 # ページの削除には対応してません。 # BEGIN{ $epath = `dirname $0`; chomp $epath; my $lpath = "$epath/../bin"; unshift (@INC, $lpath); } use JMtl('hash2line', 'line2hash'); my (%ti, %tl, $package, $newver); if (@ARGV < 2) { die "$0 translation_list update_list new_version\n";} $translation_list = $ARGV[0]; $update_list = $ARGV[1]; $newver = $ARGV[2]; # # import old tranalation_list # open TL, $translation_list || die "cannot open $translation_list\n"; while(){ chomp; %ti = line2hash($_); my $pname = "$ti{sec}:$ti{fname}"; %{$tl{$pname}} = %ti; } close TL; $package = $ti{pkg}; # # parse update_list # open UL, $update_list || die "cannot open $update_list\n"; while (