]> git.eshelyaron.com Git - emacs.git/commitdiff
(rmail-convert-to-babyl-format): Don't remove ^M
authorEli Zaretskii <eliz@gnu.org>
Mon, 19 Apr 2004 18:06:51 +0000 (18:06 +0000)
committerEli Zaretskii <eliz@gnu.org>
Mon, 19 Apr 2004 18:06:51 +0000 (18:06 +0000)
characters left after base64 decoding.
(rmail-decode-region): Use -dos variety of `coding', to remove any
^M characters left after qp or base64 decoding.

lisp/ChangeLog
lisp/mail/rmail.el

index f4d481a83cf7a86692cf6fb501b2761eeb626030..2cba0c93c02043d16192fb3e51cd8a292c9a216b 100644 (file)
@@ -1,3 +1,10 @@
+2004-04-19  Eli Zaretskii  <eliz@gnu.org>
+
+       * mail/rmail.el (rmail-convert-to-babyl-format): Don't remove ^M
+       characters left after base64 decoding.
+       (rmail-decode-region): Use -dos variety of `coding', to remove any
+       ^M characters left after qp or base64 decoding.
+
 2004-04-19  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
 
        * x-dnd.el (x-dnd-open-local-file, x-dnd-open-file): Improved error
index f5f6262435a44a1c63c2b20473983dd58ab1f05d..0dfa43d0cc8d99bbc79fb8eb344d08f3f4a823ed 100644 (file)
@@ -1666,7 +1666,15 @@ It returns t if it got any new messages."
 (defun rmail-decode-region (from to coding)
   (if (or (not coding) (not (coding-system-p coding)))
       (setq coding 'undecided))
-  (decode-coding-region from to coding))
+  ;; Use -dos decoding, to remove ^M characters left from base64 or
+  ;; rogue qp-encoded text.
+  (decode-coding-region from to
+                       (coding-system-change-eol-conversion coding 1))
+  ;; Don't reveal the fact we used -dos decoding, as users generally
+  ;; will not expect the RMAIL buffer to use DOS EOL format.
+  (setq buffer-file-coding-system
+       (setq last-coding-system-used
+             (coding-system-change-eol-conversion coding 0))))
 
 ;; the  rmail-break-forwarded-messages  feature is not implemented
 (defun rmail-convert-to-babyl-format ()
@@ -1751,9 +1759,6 @@ It returns t if it got any new messages."
                               (error nil))
                           ;; Change "base64" to "8bit", to reflect the
                           ;; decoding we just did.
-                          (goto-char (1+ header-end))
-                          (while (search-forward "\r\n" (point-max) t)
-                            (replace-match "\n"))
                           (goto-char base64-header-field-end)
                           (delete-region (point) (search-backward ":"))
                           (insert ": 8bit"))))
@@ -1901,9 +1906,6 @@ It returns t if it got any new messages."
                                    (point)))
                                 t)
                             (error nil))
-                        (goto-char header-end)
-                        (while (search-forward "\r\n" (point-max) t)
-                          (replace-match "\n"))
                         ;; Change "base64" to "8bit", to reflect the
                         ;; decoding we just did.
                         (goto-char base64-header-field-end)