Function: mm-uu-dissect-text-parts
mm-uu-dissect-text-parts is an autoloaded and byte-compiled function
defined in mm-uu.el.gz.
Signature
(mm-uu-dissect-text-parts HANDLE &optional DECODED)
Documentation
Dissect text parts and put uu handles into HANDLE.
Assume text has been decoded if DECODED is non-nil.
Aliases
mh-mm-uu-dissect-text-parts (obsolete since 29.1)
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/mm-uu.el.gz
;;;###autoload
(defun mm-uu-dissect-text-parts (handle &optional decoded)
"Dissect text parts and put uu handles into HANDLE.
Assume text has been decoded if DECODED is non-nil."
(let ((buffer (mm-handle-buffer handle)))
(cond ((stringp buffer)
(dolist (elem (cdr handle))
(mm-uu-dissect-text-parts elem decoded)))
((bufferp buffer)
(let ((type (mm-handle-media-type handle))
(case-fold-search t) ;; string-match
children charset encoding)
(when (and
(stringp type)
;; Mutt still uses application/pgp even though
;; it has already been withdrawn.
(string-match "\\`text/\\|\\`application/pgp\\'" type)
(not (string-match "/x-\\(?:diff\\|patch\\)\\'" type))
(equal (car (mm-handle-disposition handle))
"inline")
(setq
children
(with-current-buffer buffer
(cond
((or decoded
(eq (setq charset (mail-content-type-get
(mm-handle-type handle)
'charset))
'gnus-decoded))
(setq decoded t)
(mm-uu-dissect
t (cons type '((charset . gnus-decoded)))))
(charset
(setq decoded t)
(mm-with-multibyte-buffer
(insert (mm-decode-string (mm-get-part handle)
charset))
(mm-uu-dissect
t (cons type '((charset . gnus-decoded))))))
((setq encoding (mm-handle-encoding handle))
(setq decoded nil)
;; Inherit the multibyteness of the `buffer'.
(with-temp-buffer
(insert-buffer-substring buffer)
(mm-decode-content-transfer-encoding
encoding type)
(mm-uu-dissect t (list type))))
(t
(setq decoded nil)
(mm-uu-dissect t (list type)))))))
;; Ignore it if a given part is dissected into a single
;; part of which the type is the same as the given one.
(if (and (<= (length children) 2)
(string-equal (mm-handle-media-type (cadr children))
type))
(kill-buffer (mm-handle-buffer (cadr children)))
(kill-buffer buffer)
(setcdr handle (cdr children))
(setcar handle (car children)) ;; "multipart/mixed"
(dolist (elem (cdr children))
(mm-uu-dissect-text-parts elem decoded))))))
(t
(dolist (elem handle)
(mm-uu-dissect-text-parts elem decoded))))))