cygwin1.dll with DBCS support
Updated: 2008-06-15
Created: 2007-03-03
更新履歴
- 2008-06-15: cygwin-1.5.25.15 に対応しました。
- 2008-05-31: cygwin-1.5.25.14 に対応しました。
- 2008-04-28: cygwin-1.5.25.12 に対応しました。
- 2008-03-15: cygwin-1.5.25.11 に対応しました。
- 2008-01-13: cygwin-1.5.25.7 に対応しました。また、DBCSサポートをOFFにするとビルドできなかったのを修正しました。
- 2007-03-06: 0x3F 以下の文字は必ず Single Byte Character と仮定。ファイル名は変わってないけど、中身は変わってます。
- 2007-03-03: 新規作成
これは何か?
「cygwin1.dll localization for Shift_JIS」にあるパッチの、ファイル名の3つ目の数字だけを見て 1.3.22-1 向けを最新版と勘違いした筆者が、「うーん、パッチが全然合わんみたいだなぁ」と寝惚けたことを思った挙句、「でもこれだったらちょっといじくりまわせば自力でパッチ作れるかも。ついでにShift_JIS用じゃなくてDBCS(※)用にしてしまおう」と考えてでっち上げたシロモノです。
※DBCS: 2バイト文字セット(Double Byte Character Set)のこと。Windowsで日本語をDBCSで扱う場合は、いわゆるShift_JISになる。http://www.microsoft.com/globaldev/reference/WinCP.mspxも参照のこと。
当然のことながら無保証なので、使うならば自己責任でどーぞ。
基本方針
- 元のソースの改変は最小限に。/str(r?chr|pbrk)/ なんてマクロ置換でGO!
- 修正のための部品は winsup/cygwin/winsup.h に集約。
- ポインタが指す先についての文字比較の際、DBCSの2バイト目か否かのチェックを後ろから行う。winsup.h へのパッチ中にあるコメントを参照。
- DBCSサポートを切ってビルドしたときは元のコードと一致するようマクロを定義すること。
- 「/」「\」を扱っている部分を重点的に調査。
- 「/」「\」を扱っているファイルを全体的に調査。
- 0x3F以下の文字は必ず Single Byte Character と仮定。
Download
cygwin-1.5.25-15
cygwin-1.5.25-14
cygwin-1.5.25-12
cygwin-1.5.25-11
cygwin-1.5.25-7
cygwin-1.5.24-2
ソースからビルドする方法
- パッチを取得して、適当なディレクトリに配置する。ここでは /tmp に置くと仮定する。
- Cygwin Setup (setup.exe) でパッケージ「cygwin」を探し、「Src?」のチェックボックスをオンにしてインストール。/usr/src に展開される。
- 以下のコマンドでビルドする。(所々ドキュメント関連で fail するが気にしなくてよい)
cd /usr/src/cygwin-VERSION
patch -p1 < /tmp/cygwin-VERSION-dbcs-support.diff
./configure --enable-dbcs-support
make all-target-winsup
目的のファイルは、/usr/src/cygwin-VERSION/i686-pc-cygwin/winsup/cygwin/new-cygwin1.dll に生成される。
- Cgywin アプリの全プロセスを停止し、元の cygwin1.dll を適当にリネーム、生成された new-cygwin1.dll をコピーし、cygwin1.dll にリネームする。
終わりに
今の環境をいじるのがイヤで UTF-8 Cygwin を入れずにこんなことしてるんですが、所詮は対症療法ですねぇ……。
UTF-8 版が本家に取り込まれれば本格的に乗り換えるんだがな。クリスのばかやろー(T_T)
[BACK] | [TOP]