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