Namazu-win32-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: 半角カナ対応パッチの質問



竹迫です。

足立さん、原田さん、ご報告ありがとうございます。

In Subject [namazu-win32-users-ja] 半角カナ対応パッチの質問,
"Hiroshi ADACHI <adachi@xxxxxxxxxxxxxxxxxxxxxx>" said:
>「全文検索システム Namazu 2.0.5 for Win32 半角カナ対応パッチ」ですが、
>今まで不都合なく使ってきたのですが、mknmzrc の読み込みでおかしな点を
>見つけました。
>
>mknmzrcで
>$ADDRESS = 'hoge@xxxxxxxxxxxx';
>と記述しても、
>
>インデックスによって吐き出される NMZ.foot.ja では、
><a href="mailto:webmaster@xxxxxxxxxx">webmaster@xxxxxxxxxx</a>
>となってしまいます。
>もしかして、うまく読み込めてい何のではないかとおもいます。

こちらでも試してみたところ、同じ現象が確認できました。

実は、「Namazu 2.0.5 for Win32 半角カナ対応パッチ」は、namazu 2.0.5 
リリース以降に修正された最新の mknmz.in をベースにパッチが当てられて
いるため、リソースファイルの読み込みに際して挙動が異なっています。

最新の mknmz.in には、以下の問題に対する修正が含まれていて、これが
原因で不具合が生じてしまっているのではないかと思います。

・[namazu-win32-users-ja 00396] Re: Namazu 2.0.5 was released.
  ルートディレクトリ以外にインストールしたとき?に、動作しない
  http://www.namazu.org/ml/namazu-win32-users-ja/msg00395.html

ソースを追いかけてみると、mknmzrc を読み込んだ後に conf.pl を
読み込んでいて、設定が上書きされてしまっているようです。

>試しに、nmz205.exe を上書きインストールし、mknmzrcを同じにすると、
><a href="mailto:hoge@xxxxxxxxxxxx">hoge@xxxxxxxxxxxx</a>
>となります。これが本来の仕様ですよね。

その通りです、申し訳ありません。(^^;

この不具合に対する対処方法ですが、今のところ以下の3つが考えられます。
お手数をお掛けしますが、どれか一つの方法で対処をお願いいたします。

(1) mknmz を修正する

mknmz の不具合部分を修正して問題を回避する方法です。

--------▼ Namazu 2.0.5 for Win32 半角カナ対応の mknmz ▼--------
77: sub main {
78:    my $start_time = time;
79: 
80:     init();
81: 
82:     # To support Windows. Since they have nasty drive letter convention,
83:     # it is necessary to change mknmzrc dynamically with env. variable.
84:     load_rcfile($ENV{'MKNMZRC'}) if defined $ENV{'MKNMZRC'};
85: 
86:     load_modules();
87:     load_rcfiles();
--------▲ Namazu 2.0.5 for Win32 半角カナ対応の mknmz ▲--------

mknmz の 86行目にある load_modules() の位置を以下のように変更します。

--------▼ 修正後の mknmz ▼--------
77: sub main {
78:    my $start_time = time;
79: 
80:     init();
81:     load_modules(); ### ← 元の位置に戻す
82: 
83:     # To support Windows. Since they have nasty drive letter convention,
84:     # it is necessary to change mknmzrc dynamically with env. variable.
85:     load_rcfile($ENV{'MKNMZRC'}) if defined $ENV{'MKNMZRC'};
86: 
87:     load_rcfiles();
--------▲ 修正後の mknmz ▲--------

修正後、以下のコマンドを実行して、mknmz.bat を生成します。

$ cd c:\namazu\bin
$ pl2bat mknmz

ただし、この方法だとルートディレクトリ以外に namazu をインストールした
ときに動作しないようになってしまいます。

※ [namazu-win32-users-ja 00396] 参照


(2) mknmzrc を明示的に読み込むようにする

mknmz の修正が難しい場合は、実行時に以下のオプションを指定して
明示的に mknmzrc を読み込むようにします。

mknmz --include=c:\namazu\etc\namazu\mknmzrc
もしくは
mknmz -I c:\namazu\etc\namazu\mknmzrc


(3) conf.pl に設定を書き込む

これは、あまりお勧めできる方法ではありませんが、
C:\namazu\share\namazu\pl\conf.pl の設定を直接変更してしまうものです。


Namazu 2.0.6 リリースまでに、この問題が解決できると良いのですが... (^^;
mknmz のリソースファイルの読み込みに関しては、他に以下のような
問題もあり、根本的な解決には少し時間がかかりそうです。

・mknmzrc で指定した $FILTERDIR 以下の *.pl フィルタが読み込まれない
  http://www.namazu.org/ml/namazu-devel-ja/msg01280.html

--
   広島市立大学 情報科学部 情報機械システム工学科
     竹迫 良範 <takesako@xxxxxxxxx>