From c893016b07f33eb8d56e1011245fe59a67cb4ee0 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 22 Jan 2010 11:43:54 -0500 Subject: [PATCH] * 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. --- lisp/ChangeLog | 6 ++++++ lisp/mail/mail-utils.el | 2 ++ lisp/mail/rmail.el | 3 ++- lisp/mail/rmailmm.el | 5 ++++- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ab76ac74d5e..c59ecbae67b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2010-01-22 Stefan Monnier + + * 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 * isearch.el (isearch-allow-scroll): Doc fix (Bug#5446). diff --git a/lisp/mail/mail-utils.el b/lisp/mail/mail-utils.el index 3bca0b23a8c..5fad3554ae5 100644 --- a/lisp/mail/mail-utils.el +++ b/lisp/mail/mail-utils.el @@ -133,6 +133,8 @@ If NOERROR is non-nil, return t if successful. 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 diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index 67ea3fdc158..20a03ede965 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -2727,7 +2727,8 @@ The current mail message becomes the message displayed." (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) diff --git a/lisp/mail/rmailmm.el b/lisp/mail/rmailmm.el index e87f72a2e47..415bc20cf50 100644 --- a/lisp/mail/rmailmm.el +++ b/lisp/mail/rmailmm.el @@ -361,7 +361,10 @@ The parsed header value: (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)) -- 2.39.5