[Namazu-devel-ja 1737] nmzcat と %FIELD_ALIASES と変数の初期化
Tadamasa Teranishi
yw3t-trns @ asahi-net.or.jp
2008年 5月 2日 (金) 05:09:58 JST
寺西です。
nmzcat は %FIELD_ALIASES (つまり、フィールドの別名)を考慮していない
ようです。このため、
$ nmzcat msg00000.html
では、author が取り出せていません。
$Document->get_field_info('author');
で、直接 $self->{'_field_info'}{author}; を参照しています。
多くのメディアタイプでは author に著者が入りますが、mhonarc.pl では
from に著者が入るためです。
これはこういう仕様だと考えて、nmzcat に "from:" の表示も追加すると
いう方法もありますが、$self->{'_field_info'} が %FIELD_ALIASES を
考慮した方が良いのではないかと思います。
%FIELD_ALIASES を考慮しようとすると、mknmz の
complete_field_info と clean_field_index に相当する処理を行った上で
get_field_info でエイアスの参照を行う必要があるでしょう。
# complete_field_info は必要ないかもしれませんが。
=====================================================================
ところで、development-2-1 の html.pl の htmlparser_filter では、
$fields->{'title'}, $fields->{'author'} を undef で初期化しています。
このため、init_doc で行った '_field_info' の初期化を壊すので、
$ nmzcat msg00000.html
では、$self->{'_field_info'}{author} が未定義となるため、
Use of uninitialized value in concatenation (.) or string at
/usr/local/bin/nmzcat line 82.
が発生します。
undef で初期化している部分をコメントアウトすれば、このエラーは
消えますが、htmlparser_filter 内の処理で $fields->{'title'},
$fields->{'author'} は undef で初期化していることが前提のようなので、
別の問題がでそうです。
というところまで調べて力尽きました。
--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI) yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E
Namazu-devel-ja メーリングリストの案内