base64-ccl-decode-*の動作が変
方 文争(株)スフィアネット
wencheng.fang @ spherenet.co.jp
2007年 6月 18日 (月) 19:19:50 JST
たびたびすみません。
山岡さんの説明とソースコードを見て、
mel-b-builtinについてよくわかりました。
wanderlustが添付ファイルの保存にはmime-write-entity-contentという関数を
呼んでいて、mime-write-entity-contentがさらにmime-write-decoded-regionを呼んで
いるようです。
mel-b-builtinが t だとしても、mime-write-decoded-regionをまで
base64-decode-*を呼ぶようにしてくれていないようです。
暫定策として、mime-ja.texiに載っているソースコードを入れました。
ほかにいい方法があれば、ぜひご教示ください。
$ diff -u _bak/flim/mel.el flim-rfc2331/mel.el
--- _bak/flim/mel.el Wed Jul 6 11:09:06 2005
+++ flim-rfc2331/mel.el Mon Jun 18 19:14:52 2007
@@ -176,6 +176,16 @@
(binary-insert-encoded-file filename)
(buffer-string))))
(or (bolp) (insert ?\n)))
+ (mel-define-method mime-write-decoded-region
+ (start end filename (nil "base64"))
+ "Decode the region from START to END and write out to FILENAME."
+ (interactive "*r\nFWrite decoded region to file: ")
+ (let ((str (buffer-substring start end)))
+ (with-temp-buffer
+ (insert str)
+ (base64-decode-region (point-min) (point-max))
+ (write-region-as-binary (point-min) (point-max) filename)
+ )))
;; (mel-define-method-function (encoded-text-encode-string string (nil "B"))
;; 'base64-encode-string)
At Mon, 18 Jun 2007 18:42:37 +0900,
Katsumi Yamaoka wrote:
>
> >>>>> In <utzt5ty8w.wl @ wencheng.fang.sh.cn> 方文争さん wrote:
>
> >> もしかして mel-b-ccl.el を使う設定がどこかにあるのではないでしょ
> >> うか? 例えばこういうものです。
>
> >> (setq mel-b-builtin nil)
>
> > この設定は、mel-b-cclを使うようにする設定でしょうか?
> > それとも、mel-b-cclを無効にする設定でしょうか?
> > 初期値が t のようです。
> > これをどんなタイミングで nil に直せばよいでしょうか?
>
> あいまいな書き方で申し訳ありません。方さんの場合は t にするのが
> 正解です。これは方さんが何もしなくてもデフォルトで t になるはず
> なので、逆に方さんが ~/.emacs や ~/.wl ファイルで nil にしている
> のであれば、その設定を消すべきです。
>
> >> それとも i386-mingw-nt5.1.2600 では
>
> >> M-: (subrp (symbol-function 'base64-decode-string)) RET
>
> > tです。
>
> ということは、方さんは base64-ccl-decode-* を使う必要がありませ
> ん。実際に、特別な設定をしなくても、base64-ccl-decode-* は使わず
> に、デフォルトで base64-decode-* を使うようになるはずなのですが。
>
> > しかし、添付ファイルをbase64-decode-stringとbase64-ccl-decode-stringの両方で
> > 復号化してみたが、結果が違いました。
> > base64-decode-stringのほうが正しいのようで、保存されたファイルが正しく
> > 読み取れました。
>
> はい、base64-ccl-decode-* で使っている ccl プログラムは Emacs 23
> では正しく動作しないはずですから、base64-decode-* を使うのが正解
> です。
>
> でも、デフォルトで base64-ccl-decode-* が使われてしまうとすれば、
> やはり方さんが (あるいは方さんのホストマシンの管理者が) 意図的に
> mel-b-builtin を nil に設定していることを疑います。特に mel.el
> というモジュールが load される前に nil に設定されていると、後で
> t に変更しても効果がありません。
>
> (setq mel-b-builtin nil) のようなものがどうしても見つからなけれ
> ば、ひょっとすると ~/.emacs ファイルの先頭に
>
> (setq mel-b-builtin t)
>
> と書いておくことが効果があるかもしれません。
> --
> 山岡
>
>
More information about the Emacs-mime-ja
mailing list