changeset 106953:a1e356d208cd

* mail/rmailmm.el (rmail-mime-handle): Don't set the buffer to unibyte just because we see "encoding: 8bit". * mail/rmail.el (rmail-show-message-1): Decode the body's QP into bytes.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 22 Jan 2010 11:43:54 -0500
parents 5acc26d2cc11
children b21e977d14e7 d026329addd9 a7af45c06ea9
files lisp/ChangeLog lisp/mail/mail-utils.el lisp/mail/rmail.el lisp/mail/rmailmm.el
diffstat 4 files changed, 14 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Fri Jan 22 11:32:31 2010 -0500
+++ b/lisp/ChangeLog	Fri Jan 22 11:43:54 2010 -0500
@@ -1,3 +1,9 @@
+2010-01-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* mail/rmailmm.el (rmail-mime-handle): Don't set the buffer to unibyte
+	just because we see "encoding: 8bit".
+	* mail/rmail.el (rmail-show-message-1): Decode the body's QP into bytes.
+
 2010-01-22  Chong Yidong  <cyd@stupidchicken.com>
 
 	* isearch.el (isearch-allow-scroll): Doc fix (Bug#5446).
--- a/lisp/mail/mail-utils.el	Fri Jan 22 11:32:31 2010 -0500
+++ b/lisp/mail/mail-utils.el	Fri Jan 22 11:43:54 2010 -0500
@@ -133,6 +133,8 @@
 If UNIBYTE is non-nil, insert converted characters as unibyte.
 That is useful if you are going to character code decoding afterward,
 as Rmail does."
+  ;; FIXME: `unibyte' should always be non-nil, and the iso-latin-1
+  ;; specific handling should be removed (or moved elsewhere and generalized).
   (interactive "r\nP")
   (let (failed)
     (save-match-data
--- a/lisp/mail/rmail.el	Fri Jan 22 11:32:31 2010 -0500
+++ b/lisp/mail/rmail.el	Fri Jan 22 11:43:54 2010 -0500
@@ -2727,7 +2727,8 @@
 	    (insert-buffer-substring mbox-buf body-start end)
 	    (cond
 	     ((string= character-coding "quoted-printable")
-	      (mail-unquote-printable-region (point-min) (point-max)))
+	      (mail-unquote-printable-region (point-min) (point-max)
+                                             nil nil 'unibyte))
 	     ((and (string= character-coding "base64") is-text-message)
 	      (base64-decode-region (point-min) (point-max)))
 	     ((eq character-coding 'uuencode)
--- a/lisp/mail/rmailmm.el	Fri Jan 22 11:32:31 2010 -0500
+++ b/lisp/mail/rmailmm.el	Fri Jan 22 11:43:54 2010 -0500
@@ -361,7 +361,10 @@
 	 (setq content-transfer-encoding nil))
 	((string= content-transfer-encoding "8bit")
 	 ;; FIXME: Is this the correct way?
-	 (set-buffer-multibyte nil)))
+         ;; No, of course not, it just means there's no decoding to do.
+	 ;; (set-buffer-multibyte nil)
+         (setq content-transfer-encoding nil)
+         ))
   ;; Inline stuff requires work.  Attachments are handled by the bulk
   ;; handler.
   (if (string= "inline" (car content-disposition))