X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mime.el;h=908923fa48a0f7dc150e91edd849782ff2c7032a;hb=eb9783f46dee7de4c9372e428a26e384e04d60f8;hp=293b3e7eea1a3e77178510e84637d5a260ccbd36;hpb=2705bffeacccea18de17e2aeeacf03b7bc2e3ca9;p=elisp%2Fflim.git diff --git a/mime.el b/mime.el index 293b3e7..908923f 100644 --- a/mime.el +++ b/mime.el @@ -190,59 +190,39 @@ If MESSAGE is specified, it is regarded as root entity." (setq field-name (intern (capitalize (capitalize field-name))))) (or entity (setq entity mime-message-structure)) - (cond ((eq field-name 'Date) - (or (mime-entity-date-internal entity) - (mime-entity-set-date-internal - entity (mime-entity-send entity 'fetch-field "Date")) - )) - ((eq field-name 'Message-Id) - (or (mime-entity-message-id-internal entity) - (mime-entity-set-message-id-internal - entity (mime-entity-send entity 'fetch-field "Message-Id")) - )) - ((eq field-name 'References) - (or (mime-entity-references-internal entity) - (mime-entity-set-references-internal - entity (mime-entity-send entity 'fetch-field "References")) - )) - (t - (let* ((header (mime-entity-original-header-internal entity)) - (field-body (cdr (assq field-name header)))) - (or field-body - (progn - (if (setq field-body - (mime-entity-send entity 'fetch-field - (symbol-name field-name))) - (mime-entity-set-original-header-internal - entity (put-alist field-name field-body header)) - ) - field-body)) - )))) - -(defun mime-entity-content-type (entity) - (or (mime-entity-content-type-internal entity) - (let ((ret (mime-fetch-field 'Content-Type entity))) - (if ret - (mime-entity-set-content-type-internal - entity (mime-parse-Content-Type ret)) - )))) + (let* ((header (mime-entity-original-header-internal entity)) + (field-body (cdr (assq field-name header)))) + (or field-body + (progn + (if (setq field-body + (mime-entity-send entity 'fetch-field + (symbol-name field-name))) + (mime-entity-set-original-header-internal + entity (put-alist field-name field-body header)) + ) + field-body)))) + +(defalias 'mime-entity-content-type 'mime-entity-content-type-internal) (defun mime-entity-content-disposition (entity) (or (mime-entity-content-disposition-internal entity) (let ((ret (mime-fetch-field 'Content-Disposition entity))) (if ret - (mime-entity-set-content-disposition-internal - entity (mime-parse-Content-Disposition ret)) - )))) + (let ((disposition (mime-parse-Content-Disposition ret))) + (when disposition + (mime-entity-set-content-disposition-internal + entity disposition) + disposition)))))) (defun mime-entity-encoding (entity &optional default-encoding) (or (mime-entity-encoding-internal entity) - (let ((ret (mime-fetch-field 'Content-Transfer-Encoding entity))) - (mime-entity-set-encoding-internal - entity - (or (and ret (mime-parse-Content-Transfer-Encoding ret)) - default-encoding "7bit")) - ))) + (let ((encoding + (or (let ((ret (mime-fetch-field + 'Content-Transfer-Encoding entity))) + (and ret (mime-parse-Content-Transfer-Encoding ret))) + default-encoding "7bit"))) + (mime-entity-set-encoding-internal entity encoding) + encoding))) (defun mime-read-field (field-name &optional entity) (or (symbolp field-name) @@ -282,20 +262,17 @@ If MESSAGE is specified, it is regarded as root entity." (setq field (eword-decode-structured-field-body field-body))) (t - (setq field (eword-decode-unstructured-field-body - field-body)) + (setq field (ew-decode-field (symbol-name field-name) + field-body)) )) (mime-entity-set-parsed-header-internal entity (put-alist field-name field header)) field))))))) -(mm-define-generic insert-header (entity &optional invisible-fields - visible-fields) +(mm-define-generic insert-decoded-header (entity &optional invisible-fields + visible-fields) "Insert before point a decoded header of ENTITY.") -(define-obsolete-function-alias - 'mime-insert-decoded-header 'mime-insert-header) - ;;; @ Entity Attributes ;;; @@ -340,9 +317,6 @@ If MESSAGE is specified, it is regarded as root entity." (mm-define-generic entity-content (entity) "Return content of ENTITY as byte sequence (string).") -(mm-define-generic insert-text-content (entity) - "Insert decoded text body of ENTITY.") - (mm-define-generic write-entity-content (entity filename) "Write content of ENTITY into FILENAME.")