機種依存文字ってのはこのあたりですかね.
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