* mime-def.el (mime-library-product): Fix typo.
[elisp/flim.git] / mmbuffer.el
index 9bd59e3..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 ":")
-               (insert (ew-crlf-to-lf
-                        (ew-decode-field
-                         field-name
-                         (ew-lf-crlf-to-crlf
-                          (save-excursion
-                            (set-buffer src-buf)
-                            (buffer-substring p end)
-                            )))))
+               (insert (ew-crlf-to-lf decoded))
                (insert "\n")
+               (add-text-properties beg (point)
+                                    (list 'original-field-name field-name
+                                          'original-field-body field-body))
                ))))))))