[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
direlist-cgi-program on more broken OS
- From: NAKAGAWA Takayuki <tknakaga@xxxxxxxxxxxxxxxxxxxxxx>
- Date: Wed, 30 May 2001 10:36:00 +0900 (JST)
- X-ml-name: emacs-w3m
- X-mail-count: 00995
中川@ going my way です。
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 だったりするのかな?
;; ms-dos は lisp/language/japan-util.el の
;; setup-japanese-environment で japanese-shift-jis に設定してあるので
;; すが、windows-nt は設定が見当たりません。
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
の設定で半角→全角変換を止められないのかな。
default-file-name-coding-system と file-name-coding-system の使い分
けがわかってないので、このパッチでは不十分かも。
file-name-coding-system を全て
(or file-name-coding-system
default-file-name-coding-system)
に差し替えてやれば良いのかな。emacs for OS/2 はここの使い分けが出来
てないようです。default-file-name-coding-system 自体が 20.3 で追加になっ
たのを見落としていました。
元の 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 でも直ってません)。OS/2 は手を入れたけど、上記の通り
default-file-name-coding-system を見てません。素直に ENCODE_FILE /
DECODE_FILE マクロ使うように直さないと。
ついでに、completion-ignored-extensions は ascii 以外取れません。誰
も文句言ってないみたいですが(私も困らない)。
Meadow がどうなっているかは全くチェックしていません。ごめんなさい。
;; OS/2 でこの手の話(ファイル名の 2 バイト文字対応、本当は i18n の
;; はずだけど実体は l17n)をやってるのは私ともうニ人だけのような。GNU
;; *util の移植版はドイツだったかの人が作ってくれているのですが、SJIS
;; のファイル名なんて何も考えてない訳で(emx (OS/2 unix emulation
;; library) 本体はちゃんと考えてあります)。「ソ」「十」「表」とか 2
;; byte 目に '\' (backslash) が来る SJIS 文字がいくつかあるので、2
;; byte 目を directory separater だと思われると一巻の終わり。mkdir -p
;; とか cp -r, diff -r とか大概こけます。
dtree は OS/2 でもちゃんと動くようです(上記半角カナファイル名問題を
除く)。emacs lisp 万歳、というより私は Perl がわからないだけ。
ついでに、dtree を使っていて気が付いたのですが、property で下線を引
くと、右端一ドットが消されずに残るようで、スクロールすると微小な点々が
散乱します。これは X 版、Windows 版では起こらない PM (OS/2 の Window
System) 固有のバグですよね。
ではでは。
--
中川貴之 (株)日立製作所 エンタープライズサーバ事業部 Nセ2G
cd j:/usr/local/emacs-20.x/site-lisp/emacs-w3m.010529/
diff -u -a "j:/usr/local/emacs-20.x/site-lisp/emacs-w3m.010529/w3m.el.ORG" "j:/usr/local/emacs-20.x/site-lisp/emacs-w3m.010529/w3m.el"
--- j:/usr/local/emacs-20.x/site-lisp/emacs-w3m.010529/w3m.el.ORG Sat May 26 22:14:38 2001
+++ j:/usr/local/emacs-20.x/site-lisp/emacs-w3m.010529/w3m.el Tue May 29 21:29:36 2001
@@ -1880,13 +1880,13 @@
(w3m-message "Reading...")
(if w3m-direlist-cgi-program
(if (file-executable-p w3m-direlist-cgi-program)
- (let ((coding-system-for-read 'binary)
- (coding-system-for-write w3m-terminal-coding-system)
- (default-process-coding-system
- (cons 'binary w3m-terminal-coding-system))
+ (let ((default-process-coding-system
+ (or file-name-coding-system 'binary))
(process-environment process-environment)
file beg end)
- (setenv "QUERY_STRING" (w3m-url-to-file-name url))
+ (setenv "QUERY_STRING"
+ (encode-coding-string (w3m-url-to-file-name url)
+ file-name-coding-system t))
(call-process w3m-direlist-cgi-program nil t nil)
(goto-char (point-min))
(when (re-search-forward "^<html>" nil t)
Diff finished at Tue May 29 21:29:47