x-gzip64 なパートを Gnus で見る

先日の作業 (http://d.hatena.ne.jp/emacsjjj/20050621/p1) をやっている時に

[mew-win32 04121] Re: Firefox -> mozex -> mailto -> Mew

のメールの x-gzip64 なパートを参照したくなった。だが Gnus ではそのままでは見れない。あーしてこーしてこーやって、とかやれば見れるのだが、やはりメールを開いた時点でドドーンとデコードされてると嬉しいので試行錯誤してみた。

x-gzip64 のデコードには http://cvs.m17n.org/elisp/FLIM/ の mel-g.el を使う。ついでに x-bzip-2-64 の対応もしておこうってことで、

http://www.jpl.org/ftp/pub/tmp/mel-zip.el

をありがたく頂いてくる。で、こんなのを .gnus に加えてみた。

(defadvice mm-decode-content-transfer-encoding
  (around decode-x-gbzip64 (encoding &optional type) activate)
  (if (memq encoding '(x-gzip64 x-bzip-2-64))
      (condition-case error
	  (cond
	   ((eq encoding 'x-gzip64)
	    (unless (fboundp 'gzip64-external-encode-region) (require 'mel-g))
	    (gzip64-external-decode-region (point-min) (point-max))
	    t)
	   ((eq encoding 'x-bzip-2-64)
	    (unless (fboundp 'bzip2-64-external-encode-region)
	      (require 'mel-zip))
	    (bzip2-64-external-encode-region (point-min) (point-max))
	    t))
	(error
	 (message "Error while decoding: %s" error)
	 nil))
    ad-do-it))

取り敢えず無事に動いている模様.