wan-search は「けいじわん」の過去ログを検索させるために書いた cgi で、Perl ではなく C で書かれています。けいじわんは黒木さんの簡易掲示板システムの Version 1.9.5 をベースに、いくつかの改造を加えて使用しています。したがって wan-search をそのまま利用する場合には、掲示板の script (bbs.cgi) と過去ログにけいじわんと同様の改造を加えるか、wan-search の方を改造する必要があります。
wan-search が前提としている bbs.cgi(というか過去ログ)の仕様としては次のようなモノがあります。
どこを変更したというのは patch を出せば終りなんですが、なにせ思い付くままに改造を重ねているもので、どこまでがオリジナル通りなのか、もはや分からなくなっております。あと wan-search とは無関係の改造もいろいろ(例えば先頭に管理者からのメッセージを入れられるようにしたとか)あるし。
でもそれでは説明にならないので、wan-search 用の改造部分を説明します。すなわち正順の log.html のようなものを作るための改造です。正順 log file は log_sei.html という名前になります。
以下の説明は分かりにくいですが、ようするに log.html に書き込んだりする所を log_sei.html 用に手直しして追加すると言うことです。
Main Routine の20行目くらいにある
if ($post || $posttext) { if (! -f $log_file) { &CreateLogFile(); }
の下に
if (! -f $log_sei_file) { &CreateLog_seiFile(); }
を追加。
PostMessage の40行目くらいにある
if (!open(TMP, ">$tmp_file")) { : : &Unlock(); exit(0); }
の下に "if (!open(TMP_SEI, ">$tmp_sei_file"))" と条件を変更した、同様の内容のブロックを追加。
そのすぐ下の "if (!open(LOG, "$log_file"))" のブロックに付いても同様。
さらにその下。"print TMP "<html><head>\n"; から print TMP "\n"; にかけての20行ちょいを、TMP を TMP_SEI に入れ換えたものを、置き換え前の部分の下に追加。
そのまた下。"print TMP "<hr>\n";" から close(TMP); までの、TMP を TMP_SEI に、LOG を LOG_SEI に置き換えたものを、置き換え前の部分の下に追加。
その10行ほど下の chmod 0666, $log_file; までの部分も $tmp_file → $tmp_sei_file、$log_file → $log_sei_file と書き換えたものをその下に追加。
この関数の中身を $log_file → $log_sei_file、LOG → LOG_SEI と書き換えたものを、CreateLog_seiFile という名前にして追加。
危うく忘れるところでしたが、common.pl も改造(というほどでもない)する必要があります。こっちは簡単。
$log_sei_html = 'log_sei.html'; $tmp_sei_html = 'tmp_sei.html'; $log_sei_file = "$top_dir/$spool/$log_sei_html"; $tmp_sei_file = "$top_dir/$spool/$tmp_sei_html";
この4行を分かりやすい所に追加するだけです。
長々と説明しましたが、肝心の wan-search のソースです。Makefile はシカルベク書き換えて御使用下さい。
wan-search.c のコメントはちゃんと分かるように入れたつもりです。なお site dependent な部分については /* !!! コメント !!! */ というように "!!!" で囲んでコメントを書いてあります。適宜書き直して使って下さい。
これでどうぞ。grep の正規表現が(ほぼ)使えます。