X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mmcooked.el;h=cd261f4f081321e8fbfafc1d6a38a0eb02e60c7f;hb=6769bf5954ca2bf221dfa9a41e2d47b24a135d79;hp=8d4e0df1000f1b95ad3c53fa2eace8e3acd7f9bf;hpb=79afbe85ece9473654c1a92906f839ff5e889fad;p=elisp%2Fflim.git diff --git a/mmcooked.el b/mmcooked.el index 8d4e0df..cd261f4 100644 --- a/mmcooked.el +++ b/mmcooked.el @@ -26,15 +26,45 @@ (require 'mmbuffer) -(defun mmcooked-open-entity (location) - (mime-parse-buffer location 'cooked) - ) +(mm-define-backend cooked (buffer)) -(defalias 'mmcooked-entity-point-min 'mmbuffer-entity-point-min) -(defalias 'mmcooked-entity-point-max 'mmbuffer-entity-point-max) -(defalias 'mmcooked-fetch-field 'mmbuffer-fetch-field) +(mm-define-method entity-cooked-p ((entity cooked)) t) -(defun mmcooked-cooked-p () t) +(mm-define-method write-entity-content ((entity cooked) filename) + (save-excursion + (set-buffer (mime-entity-buffer-internal entity)) + (let ((encoding (or (mime-entity-encoding entity) "7bit"))) + (if (member encoding '("7bit" "8bit" "binary")) + (write-region (mime-entity-body-start-internal entity) + (mime-entity-body-end-internal entity) filename) + (mime-write-decoded-region (mime-entity-body-start-internal entity) + (mime-entity-body-end-internal entity) + filename encoding) + )))) + +(mm-define-method write-entity ((entity cooked) filename) + (save-excursion + (set-buffer (mime-entity-buffer-internal entity)) + (write-region (mime-entity-header-start-internal entity) + (mime-entity-body-end-internal entity) + filename) + )) + +(mm-define-method write-entity-body ((entity cooked) filename) + (save-excursion + (set-buffer (mime-entity-buffer-internal entity)) + (write-region (mime-entity-body-start-internal entity) + (mime-entity-body-end-internal entity) + filename) + )) + +(mm-define-method insert-decoded-header ((entity cooked) + &optional invisible-fields + visible-fields) + (let (default-mime-charset) + (funcall (mime-find-function 'insert-decoded-header 'buffer) + entity invisible-fields visible-fields) + )) ;;; @ end