nkf 2.0.7-beta (2006-05-06) for DOS, OS/2 1.x desription ---------- nkf version 2.0 の 16bit 版バイナリとソースです。 MS-DOS 用と OS/2 1.x 用のバイナリが同梱されています。 system requirememt ------------------ nkf DOS 版: - 8086 および上位互換 CPU。 - DOS 3.0 以上。 - コンベンショナルメモリがどの程度必要なのかは不明ですが、すくなくとも 256k バイト程度の空きがあれば一応動作するもよう。 nkf OS/2 1.x 版: - OS/2 バージョン 1.x(バージョン 2.0 以上の 32bit OS/2、および OS/2 1.x 互換機能内蔵の Windows NT/2000 でも実行可能)。 contents -------- dos/ nkf.exe DOS 用バイナリ os2v1x/ nkf.exe OS/2 1.x 用バイナリ patched.src/ パッチ適用済みの nkf ソース全体 nkf-sj.doc 各種マニュアル nkf.1sj nkfdos16.txt (これ) nkf2-20060506-dos16.diff http://sourceforge.jp/projects/nkf/ の cvs から入手可能な nkf のソースに対するパッチ dos 用のバイナリは upx 2.00 (http://upx.sourceforge.net/) で圧縮してあります。 how to build ------------ DOS, OS/2 1.x 版のバイナリは OpenWatcom 1.4 の 16bit ターゲットコンパイラ (wcl) を使って作成しています。 DOS: wcl -bt=dos -0 -os -ml -zt=184 -DINT_IS_SHORT nkf.c utf8tbl.c -l=dos OS/2 1.x wcl -bt=os2 -2 -os -ml -zt=184 -DINT_IS_SHORT nkf.c utf8tbl.c -l=os2 Microsoft C++ 7.0 , Visual C++ 1.x でも、おそらく以下のようにすれば 16bit DOS 用のバイナリを作成できます。 cl -G0 -O1 -AL -Gt184 -DINT_IS_SHORT nkf.c utf8tbl.c (-Gt の数字はもっと小さくする必要があるかも) Borland C++ で作った 16bit DOS 用バイナリは、現在のところ正しく動作しません。 changes ------- 元の nkf-2.0.7 (2006-05-06) に対する主な変更点: - int -> nkf_char INT_IS_SHORT のときは nkf_char を long にしておく。 - struct normalization_pair 内の int 配列を nkf_nfchar 配列に。 INT_IS_SHORT のときは nkf_nfchar を unsigned char にしておく。 (サイズ圧縮のため) - 0x8000 以上の定数を long 化。 - IOBUF_SIZE を削減(サイズ圧縮のため)。 - utf8tbl.h 新設。nkf.c 関数内の extern を撤廃。 int -> nkf_char の置換はかなり大ざっぱにやってしまった(ソース全体を機械的に 全置換し、そのあと int でもかまわなそうな個所は手動で戻した)ので、もしかすると 問題が出る場合があるかもしれません。 とりあえず DOS, OS/2 版ともに test.pl のテストはパスしています。 どうしても 16bit じゃないと困る、という場合を除いて、32bit 版のバイナリ (Win32, djgpp, OS/2)のご利用をおすすめします。 バイナリサイズや実行速度の面から見ても、16bit 版のアドバンテージは 実のところほとんどありません(むしろ 32bit 版より劣るかも)。