namazu-ml(ring)


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

複数インデックス検索時の CHECKBOX



重野@IIJ-MC です。

namazu 1.3.0.7 に bug らしきものを見付けましたので報告します。

複数インデックス検索時の結果で、以前チェックした CHECKBOX を

<LI><INPUT TYPE="CHECKBOX" NAME="dbname" VALUE="foo">foo
<LI><INPUT TYPE="CHECKBOX" NAME="dbname" VALUE="bar">bar
<LI><INPUT TYPE="CHECKBOX" NAME="dbname" VALUE="baz">baz

から、下記のように書き換える機能があります。

<LI><INPUT TYPE="CHECKBOX" NAME="dbname" VALUE="foo" CHECKBOX>foo
<LI><INPUT TYPE="CHECKBOX" NAME="dbname" VALUE="bar" CHECKBOX>bar
<LI><INPUT TYPE="CHECKBOX" NAME="dbname" VALUE="baz">baz

ところが、例えば下記のような CHECKBOX を作成して、
www-foo と bar を選択してて検索すると、

<LI><INPUT TYPE="CHECKBOX" NAME="dbname" VALUE="www-foo">www-foo
<LI><INPUT TYPE="CHECKBOX" NAME="dbname" VALUE="foo">bar
<LI><INPUT TYPE="CHECKBOX" NAME="dbname" VALUE="bar">bar
<LI><INPUT TYPE="CHECKBOX" NAME="dbname" VALUE="baz">baz

その検索結果の HTML は下記のようになります。(foo にも CHECKBOX が付く)

<LI><INPUT TYPE="CHECKBOX" NAME="dbname" VALUE="www-foo" CHECKBOX>www-foo
<LI><INPUT TYPE="CHECKBOX" NAME="dbname" VALUE="foo" CHECKBOX>bar
<LI><INPUT TYPE="CHECKBOX" NAME="dbname" VALUE="bar" CHECKBOX>bar
<LI><INPUT TYPE="CHECKBOX" NAME="dbname" VALUE="baz">baz

調べた所、form.c の check_checkbox() から呼び出される
str_backward_cmp() で foo と /usr/local/namazu/index/www-foo の
比較が発生し、二つが一致すると見なされるためのようです。

実際にこの問題に直面しましたので、以下の patch を作成して対処しています。
(win32 の部分はテストしていないです。)

--- form.c.orig	Thu Jun  3 22:25:43 1999
+++ form.c	Fri Jun  4 00:00:05 1999
@@ -176,6 +176,13 @@
             return 1;
         }
     }
+#if  defined(WIN32) || defined(OS2)
+    if (*q != '\\') {
+#else
+    if (*q != '/') {
+#endif
+	return 1;
+    }
     return 0;
 }

-- shigeno