[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



ほりぐちです. なんか勘違いしていたようです.  で,

> > > 対処の方法ですが、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

-- 
ほりぐちきょうたろう