文書数を誤るバグを修正2005年11月10日 00時59分47秒

インデックスを更新する際に、以前処理した文書が更新されており、その文書の処理に失敗した場合に、文書数を誤るバグが発見されましたので、これを修正しました。

簡単な再現方法)
・HTML ファイルと TXT ファイルをいくつか用意します。
・インデックスを作成します。
$ mknmz *.html *.txt
・HTML ファイルのタイムスタンプを更新します。
$ touch *.html
・FILTERDIR を適当なディレクトリに変更し、filter/html.pl が読み込まれ
ないようにした rc ファイルを指定して mknmz を実行します。
$ mknmz -f mknmzrc *.html *.txt
・filter/html.pl が見つからないので、更新された *.html ファイルは
インデックスから削除されますが、追加されません。
この際、NMZ.status の文書数を間違います。

上記以外でも、同一のファイル名でメディアタイプを別のものに変えた場合で、そのメディアタイプに対するフィルタがない場合でも文書数をおそらく誤るでしょう。

今回の修正の弊害として...。
mknmz 実行後に表示される情報の意味が変わります。

追加された文書の数:
削除された文書の数:
更新された文書の数:

従来は、それぞれ
・インデックスに新規に追加された文書の数
・インデックスから削除された文書の数
・インデックスの中で更新された文書の数
という意味だったかと思いますが、(実際にはその数も正しく表示できない場合があったので)修正後は、

・インデックスに追加およびインデックスの中で更新された文書の数
・インデックスから削除およびインデックスの中で更新された文書の数
・mknmz で指定した文書のうち、タイムスタンプが更新された文書の数

になります。
さすがにこれは困るだろうとは思うのですが、純粋に
・インデックスの中で更新された文書の数
の数をmknmz内部ではカウントしていないので、こうなってしまいました。

将来的には、正確にカウントするように修正しないといけないのでしょう。
# だが、難しそう。更新された文書の数はカウントしずらいため。

nmz_getopt_long() の戻り値のチェックを変更2005年11月10日 18時18分26秒

・nmz_getopt_long() の戻り値のチェックで EOF を使っている部分を -1 に変更しました。
・namazu のショートオプションの -4 には引数が必要なので、short_options の 4 の後に ':' を追加しました。