* mime-def.el (mime-library-product): Fix typo.
[elisp/flim.git] / mmbuffer.el
index 76b3fdc..f16f0d1 100644 (file)
 (mm-define-method write-entity ((entity buffer) filename)
   (save-excursion
     (set-buffer (mime-entity-buffer-internal entity))
-    (write-region-as-binary (mime-entity-header-start-internal entity)
-                           (mime-entity-body-end-internal entity)
-                           filename)
+    (write-region-as-raw-text-CRLF (mime-entity-header-start-internal entity)
+                                  (mime-entity-body-end-internal entity)
+                                  filename)
     ))
 
 (mm-define-method write-entity-body ((entity buffer) filename)
     (let ((the-buf (current-buffer))
          (src-buf (mime-entity-buffer-internal entity))
          (h-end (mime-entity-header-end-internal entity))
-         beg p end field-name len field)
+         beg p end field-name len field-body decoded)
       (save-excursion
        (set-buffer src-buf)
        (goto-char (mime-entity-header-start-internal entity))
                  end (std11-field-end))
            (when (mime-visible-field-p field-name
                                        visible-fields invisible-fields)
-             (setq field (intern (capitalize field-name)))
              (save-excursion
                (set-buffer the-buf)
+               (setq field-body (ew-lf-crlf-to-crlf
+                                 (save-excursion
+                                   (set-buffer src-buf)
+                                   (buffer-substring p end))))
+               (setq decoded (ew-decode-field field-name field-body))
+               (unless (equal field-body decoded)
+                 (setq decoded (ew-crlf-refold
+                                decoded
+                                (1+ (string-width field-name))
+                                fill-column)))
+               (setq beg (point))
                (insert field-name)
                (insert ":")
-               (cond ((memq field eword-decode-ignored-field-list)
-                      ;; Don't decode
-                      (insert-buffer-substring src-buf p end)
-                      )
-                     ((memq field eword-decode-structured-field-list)
-                      ;; Decode as structured field
-                      (let ((body (save-excursion
-                                    (set-buffer src-buf)
-                                    (buffer-substring p end)
-                                    )))
-                        (insert (eword-decode-and-fold-structured-field
-                                 body (1+ len)))
-                        ))
-                     (t
-                      ;; Decode as unstructured field
-                      (let ((body (save-excursion
-                                    (set-buffer src-buf)
-                                    (buffer-substring p end)
-                                    )))
-                        (insert (eword-decode-unstructured-field-body
-                                 body (1+ len)))
-                        )))
+               (insert (ew-crlf-to-lf decoded))
                (insert "\n")
+               (add-text-properties beg (point)
+                                    (list 'original-field-name field-name
+                                          'original-field-body field-body))
                ))))))))