bbs.cgi再開発プロジェクト6

このエントリーをはてなブックマークに追加
849▲ ◆cZfSunOs.U
機種依存文字ってのはこのあたりですかね.
http://www.freebsd.org/cgi/man.cgi?query=mskanji
The first ranges ......
    0xED - 0xEE (not JIS: NEC-selected IBM extended characters),
    0xF0 - 0xF9 (not JIS: user defined), or
    0xFA - 0xFC (not JIS: IBM extended characters).

sunos.saita.ma で拝借している tiger 上で確認したところ,
そのあたりのレンジのキャラクタもちゃんとパスするようです.

ただ,FreeBSD の mbstowcs() では,"\x81<" のように < が Shift JIS の
2バイト目として食われてしまうケースを弾けないということもわかったので
(< は Shift JIS の2バイト目としては不正なので弾くべきではあるんですが),
mbrlen() でもうちょっと細かくチェックするように変更しました.
----------------------------------------------------------------------
で,bbsd の方もマターリと改良を加えていました.live22 姉妹再稼働の際には更新をお願いします.
    http://sunos.saita.ma/bbsd.c

・ -b オプションで IP アドレスだけでなくホスト名も使用可能に.
  (今後雪だるま系鯖が増えた場合,プライベートアドレスも
   ホスト名で管理できた方が便利と思われるため)

・ worker スレッド数を可変式に.-n オプションでの指定は
    -n [nthr_min-]nthr_max  (デフォルト: max = 32, min = ceil(max / 8))

・ ステータス情報を取得可能に.

        my $statmsg = bbsd($bbs, 'stat', "$logfilename:$logline");    # Perl スクリプト中

        bbs.pl 板名 stat logfilename:logline    # コマンドライン

        ("$logfilename:$logline" として : を含まない文字列を適当に指定すればログ出力せず)

  ただ,sub bbsd {} 中で
        recv(SOCK, $str, 256, 0) || (close(SOCK), return "$!");
  となっている部分を
        recv(SOCK, $str, 2048, 0) || (close(SOCK), return "$!");
  ぐらいにしておかないと,返ってきた文字列が尻切れになってしまいます.
  その部分を修正した bbs.pl, bbs_load.pl:
    http://sunos.saita.ma/bbsd/bbs.pl
    http://sunos.saita.ma/bbsd/bbs_load.pl