[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
Re: [MD:7103] Bug? of unix-to-dos-filename and dos-to-unix-filename
- X-ml-count: 7120
- Subject: Re: [MD:7103] Bug? of unix-to-dos-filename and dos-to-unix-filename
- From: Kyotaro HORIGUCHI <horiguti@xxxxxxxxxxx>
- Date: Wed, 28 Dec 2005 01:42:01 +0900 (JST)
- User-agent: Mew version 4.2.54 on Emacs 22.0 / Mule 5.0 (榊) / Meadow-3.00-dev (菊)
ほりぐちです. なんか勘違いしていたようです. で,
> > > 対処の方法ですが、normalize_filename は NTEmacs のものをそのまま使うと
> > > いうのが、簡単かつ保守が容易であると思われます。
> > >
> > > Emacs の内部コードは ASCII と重ならないようになっているので、NTEmacs の
> > > ような一見マルチバイトを考慮していないようなコードで十分だと思います。
これは normalize_filename が受け取る文字列が常に Emacs 内部コード
で表現されているという前提ですね. 微妙...と思ってたら実例が..
つい先ほど気づいたのですが,
(call-process "c:/あ/hoge.exe")
が失敗するという問題があります.
call-process -> child_setup -> spawnve の過程でだれも実行ファイル
名をエンコードしないからです. ためしに call-process でnew_argv を
作るときに実行ファイルパスをENCODE_FILE すると'あ'はいいのですが
(call-process "c:/表/hoge.exe")
が失敗します. sys_spawnve() に渡されたエンコードされた文字列をそ
のまま dostounix_filename() に渡しているためです(やったのは私かも
ですが^^;).
基本的に問題になることはない部分ですが, 気づいてしまったのでそれ
なりに対処しました.
# 最終的には cygwin の exec が "c:/表/hoge.exe" を実行することがで
# きないらしいと言うところまできてしまいましたが, さすがにそれは知
# らん.
> そうだとすると、char で処理するようにした今回の変更は設計意図に
反するも
> のであって、上位の関数で内部コードからシステムの文字コードに変換すると
> いう修正の方が良かったのかもしれません。
そうするとシステム文字コード系で表現できない文字が壊れるかもとい
う意味では微妙ですね. どうせシステム的に表現できないのだから問題な
しともいえますが:-p
--
ほりぐちきょうたろう