From: Matt Armstrong Date: Fri, 7 Oct 2022 12:17:50 +0000 (-0400) Subject: Handle successive mime sections in decoding. X-Git-Tag: emacs-29.0.90~1616^2~716 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=67a20bb4b54de1faf840836015389bcc3d7a3eed;p=emacs.git Handle successive mime sections in decoding. rmailsum.el (rmail-epa-decode):Handle blank lines at start. Handle both ending delim and another starting delim. --- diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index 812e9a201b2..f095d5e9c08 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -4693,15 +4693,23 @@ Argument MIME is non-nil if this is a mime message." (save-excursion (goto-char (point-min)) (while (re-search-forward "--------------[0-9a-zA-Z]+\n" nil t) - (let ((delim (concat (substring (match-string 0) 0 -1) "--\n"))) + ;; The ending delimiter is a start delimiter if another section follows. + ;; Otherwise it is an end delimiter, with -- affixed. + (let ((delim (concat (substring (match-string 0) 0 -1) "\\(\\|--\\)\n"))) (when (looking-at "\ Content-Type: text/[a-z]+; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64\n") (goto-char (match-end 0)) + ;; Sometimes the attachment's headers are followed by blank lines + (while (eolp) + (forward-line 1)) (let ((start (point)) (inhibit-read-only t)) - (search-forward delim) + (re-search-forward delim) (forward-line -1) + ;; Sometimes the attachment's contents are followed by blank lines + (while (save-excursion (forward-line -1) (eolp)) + (forward-line -1)) (base64-decode-region start (point)) (forward-line 1)))))))