[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: direlist-cgi-program on more broken OS



中川@ OS/2 残党です。

From: Hideyuki SHIRAI (白井秀行) <shirai@rdmg.mgcs.mei.co.jp>
Subject: [emacs-w3m:00998] Re: direlist-cgi-program on more broken OS
Date: Wed, 30 May 2001 13:39:38 +0900 (JST)
Message-ID: <20010530.133938.84196075.shirai@rdmg.mgcs.mei.co.jp>

白井> 白井@自分では、directory/file 名に 2byte 文字を使わない人間です。
白井>       そのため、その方面の思慮がまったく抜け落ちていて申し訳ない
白井>       です。ましてや半角カナは。。。

  自分では作りませんが、IBM や M$(OS/2 には Windows3.1 が丸ごと入って
るもんで)が一杯作ってくれてますからね。他にもメールの添付ファイルと言
うものもありますし。

中川> Subject: [emacs-w3m:00995] direlist-cgi-program on more broken OS
中川>   w3m-direlist-cgi-program 関連ですが、cgi の 出力は binary ではなく
中川> file-name-coding-system で 受けた方が良いと(安全であると)思います。
中川> (coding-system-for-{read,write} は無関係では)。さらに、環境変数
中川> QUERY_STRING も file-name-coding-system で encode しておく必要があるよ
中川> うです。
白井> わかりました。中川さんのパッチを元にさせていただいて、考えます。

  よろしくお願いします。

中川> ここまでやっても半角カナがファイル名/ディレクトリ名に使われて
中川> いると w3m(.exe) が全角に直してしまってアクセス不可になりますけど。w3m 
中川> の設定で半角→全角変換を止められないのかな。
白井> 半角カナは考えたくないのだけど。。。
坂本> Subject: [emacs-w3m:00996] Re: direlist-cgi-program on more broken OS
坂本> w3m-m17n では、
坂本>  * ファイル名はエンコーディングを変えずに 8bit 部分は必ず %XX に
坂本>    エンコード
白井> の方向で考えてみます。
白井> # う〜〜〜ん、だけど、ちょっとだけ考えると、無理ぽいような。

  半角カナについては、普通に dired 使えば済む話なので、別に現状のまま
で構いません。もっと大事なことに時間をお使い下さい。

  あ、dtree / cgi のバッファで url の file://〜 ではなく、file name を
取り出すキーバインドがあるとうれしいかもしれません。これより優先度は低
いですが、(w3m-)find-file の default-directory が ~/.w3m/ というのも
ちょっと悲しいです。dtree / cgi の時だけでも location を反映させてほし
い。find-file に反映させるのは無理かな? dired の subdirectory 配下で
も出来ていませんし。

中川>   ついでに、dtree を使っていて気が付いたのですが、property で下線を引
中川> くと、右端一ドットが消されずに残るようで、スクロールすると微小な点々が
中川> 散乱します。これは X 版、Windows 版では起こらない PM (OS/2 の Window
中川> System) 固有のバグですよね。
白井> これまた、X でも Win32 でも発生しません。

  情報ありがとうございます。どうするか考えます。C-l で直る話なので放っ
ておくかも。

 
白井> 以下、またまた、emacs-w3m の話じゃないですが。。。

  お付き合い下さってまことにありがとうございます。

  私が新しい emacs lisp library に手を出す時は emacs 本体のバグ出しを
兼ねてる面が若干あるので。ここじゃなくて Wanderlust(私は使ってない)
ML ですけど
????>  ううむ、Emacs/20.6 (cyrix-ibmpc-emx_os2warp4.0) な環境を的確に把握して
????> いらっしゃる方の応援が必要みたいです。どなたか...元 PRINCE さま... :-p
中川>   "i386-unknown-OS2" なんでお役に立てるかどうか判りません。余計混乱さ
中川> せてしまったらごめんなさい。
  なんてしゃしゃり出てていくこともありますし。

中川>   MS-DOS の後継(file-coding-system が sjis で '/' と '\' の両方を 
中川> directory-separator として取る)のみに関係する話だと思います。WinNT 系
中川> がファイル名の内部表現(ライブラリも含めて)をすべて Unicode 化してあ
中川> れば、無関係でいられるはず。
中川>   Windows (9x, NT) 系でお使いの方、file-name-coding-system と
中川> default-file-name-coding-system の値がどうなっているかお教えいただけな
中川> いでしょうか。ひょっとして Meadow だと utf-8 だったりするのかな?
白井> Meadow では、japan-util.el が↓こうなっています。
	略
白井> そのため、日本語環境では通常、
白井> file-name-coding-system => nil
白井> default-file-name-coding-system => japanese-shift-jis
白井> です。

  ありがとうございます。OS/2 でも同じように直します。一応 emacs -nw で 
tty 版が動くので selection-coding-system は他所で設定するつもりですが。
やはり Meadow でも Unicode にはなっていませんでしたか。

中川>   元の emacs 20.7 の dired.c の src/dired.c の file_name_completion 関
中川> 数に、decode してない生のファイル名に Ffile_name_as_directory 呼んでる
中川> 所があって、file-name-coding-system が sjis で IS_DIRECTORY_SEP が
中川> slash と backslash 両方取る OS (msdos, os2, ms-w32??) はアウトです
中川> (emacs 21 でも直ってません)。
白井> # Meadow-1.14 で直った問題かな?理解できていません。
白井> # (let ((default-directory "c:/tmp/白井"))
白井> #   (start-process "ls" (current-buffer) "ls"))
白井> # とかすると破綻する問題でしょうか? 
白井> # UNIX でもダメだったような。

  あれ、これって破綻します? 20.7 の callproc.c に current_directory 
を ENCODE_FILE する処理が入っているので大丈夫だと思っていました。

  私が知っている Unix でも共通の問題としては、emacs を起動する時の pwd 
が日本語だと default-directory が encode されないため破綻します。OS/2 
では init_buffer の getcwd 呼んでる辺りに手が入っています。他にもいろ
いろあったと思いましたが、記憶のかなたです。

白井> Meadow 1.14 ではこうなりました。カナは半角です。
	略

  上の例から(c:/tmp/白表* ディレクトリが全て実在するとして)推測でき
る問題としては、おそらく
	(file-name-all-completions "白" "c:/tmp/")
	-> ("白表" "白表井/" "白表a/" "白表い/")
  となって、"白表" にだけ本来付くべき '/' がつかないというものがあると
思います。「表」の 2 byte 目に'\' があるので、さらに付ける必要はないと 
Ffile_name_as_directory が判断するためです。半角カナは問題とはならない
ようで、危険なのは 2 byte 目に '\' が来る文字、特にこれらがディレクト
リ名の最後に来た時が最も危ないです。

中川> ;;   OS/2 でこの手の話(ファイル名の 2 バイト文字対応、本当は i18n の
中川> ;; はずだけど実体は l17n)をやってるのは私ともうニ人だけのような。

  もう一人の方は gettext 系に熱心な方で、gettext-0.1.37 には official 
に OS/2 パッチが入りました(世界的快挙)。私は error message は英語で
構わないたちなので、ファイル名の処理ばかりつついてます。
	http://www2s.biglobe.ne.jp/~vtgf3mpr/

中川> ;; 「ソ」「十」「表」とか 2
中川> ;; byte 目に '\' (backslash) が来る SJIS 文字がいくつかあるので、2
中川> ;; byte 目を directory separater だと思われると一巻の終わり。mkdir -p 
中川> ;; とか cp -r, diff -r とか大概こけます。
白井> ## ご苦労がしのばれます。

  Windows 系では文句は出ませんか? あるいはそもそも問題が出ない? だと
したらうらやましいなあ。'\' を directory separater として扱わないよう
にできれば済むことも多いと思うのですが、OS/2 native のプログラムから呼
ぶことを考えるとそうもいかない訳で。

  OS/2 ユーザがパッチを投稿したら、OS/2 の gnu diff が
	--- bitmap-mule-8.2/font/Makefile	Thu Dec 16 15:59:34 1999
	+++ bitmap-mule-8.2-os2\font/Makefile	Sat Apr 22 14:20:56 2000
  の様に '\' を directory separater として出力したため、Unix の GNU
patch にまともに通らなかった、という事例もありました (Elips ML) 。これ
は未だ直ってません(正しくニバイト文字のファイル名を扱える GNU diff も
ありません)。

ではでは。

--
  中川貴之  (株)日立製作所 エンタープライズサーバ事業部 Nセ2G