ようやくスレッドごとのHTMLが生成されるようになったのだが、スレッドが3つしかできなかったり、スレッド内に他のスレッドの内容が入ったりとバグだらけの状態。
ファイルディスクリプタがダブっていたり、グローバル変数がダブったりとか。他にも元のロジックでは使い切りの変数だが、サブルーチン化で初期化しなければならなくなったものとかもあった。
で、以下が完成品。
forumdo3.cgiの改造部分
--- ファイルの先頭に挿入
&forumdo3 if (!$do_not_call_3); sub forumdo3 { $tables = "";
--- 360行目あたり、sub tableviewの前に挿入
}
forumrenew.cgi (新規プログラムファイル)
#!/usr/bin/perl require './forumprf.cgi'; require './jcode.pl'; $do_not_call_3 = 1; require "./forumdo3.cgi"; $today = time(); $idno = 1; $id = $id[$idno]; $viewfile = $logfile[$idno]; $skindatafile = $skindatafile[$idno]; &renewall; sub renewall { open (INPUT, $viewfile) || die &error ("open log file error: $logfile\n"); $firstline = split(/<>/,<>); while ($ldata = <>) { my ($ino,$imomy,$ivine,$itime,$iname,$iemail,$iurl,$crypted,$ititle,$imsg,$iaddr,$ihost,$iresize,$ilastres,$ilastday,$iadmark,$isex,$ifrom,$ijoiname,$ijoinwidth,$ijoinheight,$ijoinfilesize,$jayear,$jamon,$irl) = split(/<>/,$ldata); next if (!$ino); undef @xnew; push (@xnew, $ldata); for ($icomments = 0; $iresize && $icomments < $iresize; $icomments++) { $ldata = <>; push (@xnew, $ldata); } &do3 ($ivine, $jayear, $jamon); } &error ("complete to renew the logfile\n"); } sub do3 { ($jvine, $myear, $mmon) = @_; &forumdo3; }
作者のサポート掲示板にこの内容を書いて内容のチェックと本体への組み込みをお願いしたのだが、「改造は自己責任で。改造版の公開はご自由に」とつれない返事でした。まぁ今考えれば当然の返事なんだけど。
0 件のコメント:
コメントを投稿