From 28e11fa1d500b0086e45152f65258edb2ba42ae8 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Thu, 9 Feb 2012 22:54:26 +0100 Subject: [PATCH] Don't unpack zip/tar files automatically, but allow RET-ing them --- lisp/ChangeLog | 2 ++ lisp/mm-archive.el | 16 ++++++++++------ lisp/mm-decode.el | 9 ++++++++- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6cf2f0cca..905e6f5e1 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,7 @@ 2012-02-09 Lars Ingebrigtsen + * mm-archive.el (mm-archive-dissect-and-inline): New function. + * gnus-compat.el: Define `timer-set-function'. * mm-decode.el (mm-display-external): Output the text from the command diff --git a/lisp/mm-archive.el b/lisp/mm-archive.el index 43a951ee5..3f01735d7 100644 --- a/lisp/mm-archive.el +++ b/lisp/mm-archive.el @@ -23,14 +23,14 @@ ;;; Code: (defvar mm-archive-decoders - '(("application/ms-tnef" "tnef" "-f" "-" "-C") - ("application/zip" "unzip" "-j" "-x" "%f" "-d") - ("application/x-gtar-compressed" "tar" "xzf" "-" "-C") - ("application/x-tar" "tar" "xf" "-" "-C"))) + '(("application/ms-tnef" t "tnef" "-f" "-" "-C") + ("application/zip" nil "unzip" "-j" "-x" "%f" "-d") + ("application/x-gtar-compressed" nil "tar" "xzf" "-" "-C") + ("application/x-tar" nil "tar" "xf" "-" "-C"))) (defun mm-dissect-archive (handle) - (let ((decoder (cdr (assoc (car (mm-handle-type handle)) - mm-archive-decoders))) + (let ((decoder (cddr (assoc (car (mm-handle-type handle)) + mm-archive-decoders))) (dir (mm-make-temp-file (expand-file-name "emm." mm-tmp-directory) 'dir))) (set-file-modes dir #o700) @@ -79,6 +79,10 @@ handles))) handles)) +(defun mm-archive-dissect-and-inline (handle) + (dolist (handle (cddr (mm-dissect-archive handle))) + (mm-display-inline handle))) + (provide 'mm-archive) ;; mm-archive.el ends here diff --git a/lisp/mm-decode.el b/lisp/mm-decode.el index 6ec226fe0..03bcaa15f 100644 --- a/lisp/mm-decode.el +++ b/lisp/mm-decode.el @@ -249,6 +249,8 @@ before the external MIME handler is invoked." ("message/partial" mm-inline-partial identity) ("message/external-body" mm-inline-external-body identity) ("text/.*" mm-inline-text identity) + ("application/x-.?tar\\(-.*\\)?" mm-archive-dissect-and-inline identity) + ("application/zip" mm-archive-dissect-and-inline identity) ("audio/wav" mm-inline-audio (lambda (handle) (and (or (featurep 'nas-sound) (featurep 'native-sound)) @@ -298,6 +300,9 @@ before the external MIME handler is invoked." "application/pgp-signature" "application/x-pkcs7-signature" "application/pkcs7-signature" "application/x-pkcs7-mime" "application/pkcs7-mime" + "application/x-gtar-compressed" + "application/x-tar" + "application/zip" ;; Mutt still uses this even though it has already been withdrawn. "application/pgp") "List of media types that are to be displayed inline. @@ -659,7 +664,9 @@ Postpone undisplaying of viewers for types in (mm-copy-to-buffer) ctl cte nil cdl description nil id)) (decoder (assoc (car ctl) mm-archive-decoders))) (if (and decoder - (executable-find (cadr decoder))) + ;; Do automatic decoding + (cadr decoder) + (executable-find (caddr decoder))) (mm-dissect-archive handle) handle)))) -- 2.34.1