[Mew-dist 07678] Re: multibyte character problem (Re: Re: user meeting?)
NAKAGAWA Takayuki
takayuki at example.com
1999年 2月 24日 (水) 16:02:02 JST
中川@ OS/2 残党です。
# 参加してないので
# Cc: meadow-users-jp at example.com
# は外しました。
X-Mail-Count: 07576 で出した問題(SJIS ニバイト目の backslash が
slash に変換された後、decode される)は OS/2 版固有の問題かもしれませ
ん(backslash->slash 変換を file_name_directory 等で呼ぶのは OS/2 の
み)。お騒がせしました。
しかし、最後に backslash が来るパス名の場合、encode されたままの
file_name_as_directory がおかしくなるのは多分 DOS_NT 系も共通だと思い
ます(後述)。
OS/2 版移植者と連絡が取れてないので、私からのパッチはしばらく待って
下さい。ごめんなさい。
From: kyota at example.com (Kyotaro HORIGUCHI)
Subject: [Mew-dist 07668] multibyte character problem (Re: Re: user meeting?)
Date: Wed, 24 Feb 1999 13:41:24 +0900
Message-ID: <19990224134122E.kyota at example.com>
kyota> 堀口です. Meadow が 0x5c で終わる文字コードが起こす問題の話です.
kyota> mew-win32 ネタですが, 話の流れ上 mew-dist で続けます.
kyota> 問題はとりあえず Meadow 1.00/1.01 では w32.c にありました.
kyota> むちゃくちゃやっつけですが添付のパッチのような修正をすることで
kyota> ・file-name-all-completions, file-name-completion は(多分^^;)
kyota> 期待通りの動作になっていると思います.
kyota> ・ あと, find-file などで c:/temp/表 といったファイル名もちゃ
kyota> んと読みこめるようになっています.
kyota> ただし, ほかにも怪しいところがあるのを放っておいてあるところがあ
kyota> るのでこのままおひぃしゃるなりリースに加えることはできないと思い
kyota> ます.
w32.c ってのは Unix 互換の readdir 等を提供するためのファイルですか?
いずれにせよ、IS_DIRECTORY_SEP に backslash も入る状態では(あるいは
マルチバイト文字のニバイト目(以降)に slash が入るコードでは)、
dired.c 等 OS 非依存なファイルへのパッチが必要だと思います。
# どこに言えば良いんでしょうか? 電送研の mule ML は今もありますか?
dired.c(fileio.c も)の場合は、encode されたパス名(この場合は SJIS
コード)の 2 バイト目を見るのがそもそも間違いではないでしょうか。元の
Unix 版には他にも見てる所がありますけど。正しく decode してからなら
IS_DIRECTORY_SEP でパス名の最後のバイトを見るのは安全だと思います(汚
いけど)。
あと、completion-ignored-extensions に SJIS 等が入るとおかしくなりま
す(ignore されない)。encode されたままの extention と internal code
の completion-ignored-extensions の要素を比較してしまっています。
まだまだあるかもしれません。
ではでは。
--
中川貴之 (株)日立製作所 サーバ開発本部 N1SG
Mew-dist メーリングリストの案内