(defun mm-dissect-buffer-header (handle &optional no-strict-mime)
(save-excursion
+ (unless handle
+ (setq handle (mm-make-handle)))
+ (save-restriction
+ (mail-narrow-to-head)
+ (mmgnus-entity-set-header-internal handle (buffer-string)))
(let (ctl type cte cd description id result header-string header-end)
- (save-restriction
- (mail-narrow-to-head)
- (when (or no-strict-mime
- (mail-fetch-field "mime-version"))
- (setq ctl (mail-fetch-field "content-type")
+ (when (or no-strict-mime
+ (mime-entity-fetch-field handle "mime-version"))
+ (setq ctl (mime-entity-fetch-field handle "content-type")
ctl (ignore-errors (mail-header-parse-content-type ctl))
- cte (mail-fetch-field "content-transfer-encoding")
- cd (mail-fetch-field "content-disposition")
- description (mail-fetch-field "content-description")
- id (mail-fetch-field "content-id")))
- (setq header-end (point-max)
- header-string (buffer-substring (point-min) header-end)))
+ cte (mime-entity-fetch-field handle
+ "content-transfer-encoding")
+ cd (mime-entity-fetch-field handle
+ "content-disposition")
+ description (mime-entity-fetch-field handle
+ "content-description")
+ id (mime-entity-fetch-field handle "content-id")))
(unless ctl
(setq ctl (mail-header-parse-content-type "text/plain")))
(setq cte (and cte (downcase (mail-header-remove-whitespace
cte))))
cd (and cd (ignore-errors
(mail-header-parse-content-disposition cd))))
- (if handle
- (progn
- (mime-entity-set-content-type-internal handle ctl)
- (mime-entity-set-encoding-internal handle cte)
- (mime-entity-set-content-disposition-internal handle cd)
- (mmgnus-entity-set-content-description-internal handle description)
- (mmgnus-entity-set-header-internal handle header-string)
- (setq result handle))
- (setq result (mm-make-handle nil nil ctl cte nil cd
- description nil id nil header-string)))
+ (mime-entity-set-content-type handle ctl)
+ (mime-entity-set-encoding handle cte)
+ (mime-entity-set-content-disposition-internal handle cd)
+ (mmgnus-entity-set-content-description-internal handle description)
(when id
(when (string-match " *<\\(.*\\)> *" id)
(setq id (match-string 1 id)))
- (mmgnus-entity-set-content-id-internal result id))
- result)))
+ (mmgnus-entity-set-content-id-internal handle id))
+ handle)))
(defun mm-dissect-buffer (handle &optional no-strict-mime)
"Dissect the current buffer and return a list of MIME handles."