make-ccl-coding-system の、バージョン依存の動作について (Re: Quoted-Printable なエンティティの保存に失敗する)
Kazuhiro Ito
kzhr @ d1.dion.ne.jp
2008年 2月 8日 (金) 23:49:26 JST
apel-ja の皆様、はじめまして、伊藤と申します。
Windows 上の Emacs 22.1 (Meadow 3) で Wanderlust を使用しているのですが、
Quoted-Printable でエンコードされたエンティティをディスクに保存すると
正しくデコードされないという現象が生じます。
以前に emacs-mime-ja に投稿したメール ([emacs-mime-ja: 02196]) では
取り敢えず動作する、FLIM に対するパッチを投稿しましたが、
もう少し調べたところ、APEL も絡んだ話のように思いましたので
apel-ja にも投稿します。
前回のメールに書いたように直接の原因は
> 保存時にcoding-system-for-write に設定している
> mel-ccl-quoted-printable-lf-lf-rev の EOL type は undecided であり、
> Windows 上の Emacs 22 では EOL type に CRLF が
> 選択されてしまう (結果、EOL が CRLF なデータがデコーダに渡り、
> デコーダはそのデータを EOL が LF としてデコードしている) 為のようです。
だと思われます。
さて、この mel-ccl-quoted-printable-lf-lf-rev という coding system は
APEL で提供される make-ccl-coding-system を用いて作られています。
ところが、make-ccl-coding-system を用いて coding system を作った場合、
Emacs 21以降とそれより前では動作が異なります。
(以下はソースからの推測もまじります。
Meadow (Emacs 20.7.1) と Meadow2 (Emacs 21.4.1) 以降で異なる事は
確認しました。)
Emacs 20.7 までは EOL type が LF に設定されますが、
Emacs 21.1 以降 では EOL type が undecided に設定され、
-unix, -dos, -mac が末尾についた coding system も同時に作成されます。
これは、make-ccl-coding-system から呼び出される make-coding-system の
動作が変わった事によります。
Emacs 21 以降の make-coding-system は、オプションの引数 eol-type が
増え、指定しない場合は EOL type が undecided な coding system を
作成するようになりました。
Emacs 20.7 以前は CCL based な coding system の場合、常に EOL type は
LF になっていたようです。
取り敢えず Emacs 21 以降でも EOL type が LF な coding system のみが
作られるようにするパッチを添付します。
APEL の仕様が分からないので FLIM とどちらで対策すべきかも
分かりませんが、仕様と対策をご検討いただければ幸いです。
--
伊藤 和博(Kazuhiro Ito)
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: apel.diff
型: application/octet-stream
サイズ: 789 バイト
説明: 無し
URL: <http://lists.chise.org/pipermail/emacs-mime-ja/attachments/20080208/c06ba6c4/attachment.obj>
More information about the Emacs-mime-ja
mailing list