Function: mm-dissect-archive
mm-dissect-archive is an autoloaded and byte-compiled function defined
in mm-archive.el.gz.
Signature
(mm-dissect-archive HANDLE)
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/mm-archive.el.gz
(defun mm-dissect-archive (handle)
(let* ((type (car (mm-handle-type handle)))
(decoder (cddr (assoc type mm-archive-decoders)))
dir)
(unless decoder
(error "No decoder found for %s" type))
(with-file-modes #o700
(setq dir (make-temp-file (expand-file-name "emm." mm-tmp-directory)
'dir)))
(unwind-protect
(progn
(mm-with-unibyte-buffer
(mm-insert-part handle)
(if (member "%f" decoder)
(let ((file (expand-file-name "mail.zip" dir)))
(write-region (point-min) (point-max) file nil 'silent)
(setq decoder (copy-sequence decoder))
(setcar (member "%f" decoder) file)
(apply #'call-process (car decoder) nil nil nil
(append (cdr decoder) (list dir)))
(delete-file file))
(apply #'call-process-region (point-min) (point-max) (car decoder)
nil (gnus-get-buffer-create "*tnef*")
nil (append (cdr decoder) (list dir)))))
`("multipart/mixed"
,handle
,@(mm-archive-list-files (gnus-recursive-directory-files dir))))
(delete-directory dir t))))