2012-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+ * 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
;;; 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)
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
("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))
"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.
(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))))