Gnus development mailing list
 help / color / mirror / Atom feed
From: Simon Josefsson <jas@extundo.com>
Subject: Re: iso-8859-2 characters are broken in forwarded messages.
Date: Sat, 18 Oct 2003 03:39:19 +0200	[thread overview]
Message-ID: <iluad7znx2w.fsf@extundo.com> (raw)
In-Reply-To: <m37k331hb8.fsf@quimbies.gnus.org> (Lars Magne Ingebrigtsen's message of "Sat, 18 Oct 2003 03:10:51 +0200")

Lars Magne Ingebrigtsen <larsi@gnus.org> writes:

>> The function look somewhat convoluted, I can't think of a minimal
>> patch that solves the problem.  I think the best would be to split up
>> the code into message-forward-make-body-digest,
>> message-forward-make-body-mime, message-forward-make-body-mml and
>> message-forward-make-body-plain and make the top-level
>> message-forward-make-body contain some logic and then call one of the
>> real functions.
>
> I think that sounds like a much cleaner solution; yes.

How about this?  It doesn't contain anything regarding
multipart/{signed,encrypted}, but that could be added once this has
been added.

2003-10-18  Simon Josefsson  <jas@extundo.com>

	* message.el (message-forward-make-body-plain)
	(message-forward-make-body-mime, message-forward-make-body-mml)
	(message-forward-make-body-digest-plain)
	(message-forward-make-body-digest-mime)
	(message-forward-make-body-digest): New, derived from
	message-forward-make-body.
	(message-forward-make-body): Use them.

Index: message.el
===================================================================
RCS file: /usr/local/cvsroot/gnus/lisp/message.el,v
retrieving revision 6.366
diff -u -p -u -w -r6.366 message.el
--- message.el	16 Oct 2003 18:36:52 -0000	6.366
+++ message.el	18 Oct 2003 01:38:07 -0000
@@ -5977,27 +5977,38 @@ Optional DIGEST will use digest to forwa
       (message-mail nil subject))
     (message-forward-make-body cur digest)))
 
-;;;###autoload
-(defun message-forward-make-body (forward-buffer &optional digest)
-  ;; Put point where we want it before inserting the forwarded
-  ;; message.
-  (if message-forward-before-signature
-      (message-goto-body)
+(defun message-forward-make-body-plain (forward-buffer)
+  (insert
+   "\n-------------------- Start of forwarded message --------------------\n")
+  (let ((b (point)) e)
+    (save-restriction
+      (narrow-to-region (point) (point))
+      (mml-insert-buffer forward-buffer)
+      (goto-char (point-min))
+      (when (looking-at "From ")
+	(replace-match "X-From-Line: "))
     (goto-char (point-max)))
-  (if message-forward-as-mime
-      (if digest
-	  (insert "\n<#multipart type=digest>\n")
-	(if message-forward-show-mml
+    (setq e (point))
+    (insert
+     "\n-------------------- End of forwarded message --------------------\n")))
+
+(defun message-forward-make-body-mime (forward-buffer)
+  (insert "\n\n<#part type=message/rfc822 disposition=inline raw=t>\n")
+  (let ((b (point)) e)
+    (save-restriction
+      (narrow-to-region (point) (point))
+      (mml-insert-buffer forward-buffer)
+      (goto-char (point-min))
+      (when (looking-at "From ")
+	(replace-match "X-From-Line: "))
+      (goto-char (point-max)))
+    (setq e (point))
+    (insert "<#/part>\n")))
+
+(defun message-forward-make-body-mml (forward-buffer)
 	    (insert "\n\n<#mml type=message/rfc822 disposition=inline>\n")
-	  (insert "\n\n<#part type=message/rfc822 disposition=inline raw=t>\n")))
-    (insert "\n-------------------- Start of forwarded message --------------------\n"))
   (let ((b (point)) e)
-    (if digest
-	(if message-forward-as-mime
-	    (insert-buffer-substring forward-buffer)
-	  (mml-insert-buffer forward-buffer))
-      (if (and message-forward-show-mml
-	       (not message-forward-decoded-p))
+    (if (not message-forward-decoded-p)
 	  (insert
 	   (with-temp-buffer
 	     (mm-disable-multibyte)
@@ -6016,32 +6027,59 @@ Optional DIGEST will use digest to forwa
 	  (goto-char (point-min))
 	  (when (looking-at "From ")
 	    (replace-match "X-From-Line: "))
-	  (goto-char (point-max)))))
+	(goto-char (point-max))))
     (setq e (point))
-    (if message-forward-as-mime
-	(if digest
-	    (insert "<#/multipart>\n")
-	  (if message-forward-show-mml
 	      (insert "<#/mml>\n")
-	    (insert "<#/part>\n")))
-      (insert "\n-------------------- End of forwarded message --------------------\n"))
-    (if (and digest message-forward-as-mime)
+    (when (and (not current-prefix-arg)
+	       message-forward-ignored-headers)
 	(save-restriction
 	  (narrow-to-region b e)
 	  (goto-char b)
 	  (narrow-to-region (point)
 			    (or (search-forward "\n\n" nil t) (point)))
-	  (delete-region (point-min) (point-max)))
-      (when (and (not current-prefix-arg)
-		 message-forward-ignored-headers
-		 ;; don't remove CTE, X-Gnus etc when doing "raw" forward:
-		 message-forward-show-mml)
+	(message-remove-header message-forward-ignored-headers t)))))
+
+(defun message-forward-make-body-digest-plain (forward-buffer)
+  (insert
+   "\n-------------------- Start of forwarded message --------------------\n")
+  (let ((b (point)) e)
+    (mml-insert-buffer forward-buffer)
+    (setq e (point))
+    (insert
+     "\n-------------------- End of forwarded message --------------------\n")))
+
+(defun message-forward-make-body-digest-mime (forward-buffer)
+  (insert "\n<#multipart type=digest>\n")
+  (let ((b (point)) e)
+    (insert-buffer-substring forward-buffer)
+    (setq e (point))
+    (insert "<#/multipart>\n")
 	(save-restriction
 	  (narrow-to-region b e)
 	  (goto-char b)
 	  (narrow-to-region (point)
 			    (or (search-forward "\n\n" nil t) (point)))
-	  (message-remove-header message-forward-ignored-headers t)))))
+      (delete-region (point-min) (point-max)))))
+
+(defun message-forward-make-body-digest (forward-buffer)
+  (if message-forward-as-mime
+      (message-forward-make-body-digest-mime forward-buffer)
+    (message-forward-make-body-digest-plain forward-buffer)))
+
+;;;###autoload
+(defun message-forward-make-body (forward-buffer &optional digest)
+  ;; Put point where we want it before inserting the forwarded
+  ;; message.
+  (if message-forward-before-signature
+      (message-goto-body)
+    (goto-char (point-max)))
+  (if message-forward-as-mime
+      (if digest
+	  (message-forward-make-body-digest forward-buffer)
+	(if message-forward-show-mml
+	    (message-forward-make-body-mml forward-buffer)
+	  (message-forward-make-body-mime forward-buffer)))
+    (message-forward-make-body-plain forward-buffer))
   (message-position-point))
 
 ;;;###autoload




  reply	other threads:[~2003-10-18  1:39 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <hhsmluupo1.fsf@blah.pl>
2003-10-15 22:26 ` Reiner Steib
     [not found]   ` <hhy8vm13yn.fsf@blah.pl>
2003-10-16  1:21     ` Simon Josefsson
     [not found]       ` <hhekxeym1t.fsf@blah.pl>
2003-10-16  4:34         ` Simon Josefsson
2003-10-17 16:59           ` Lars Magne Ingebrigtsen
2003-10-17 21:40             ` Simon Josefsson
2003-10-17 21:53               ` Lars Magne Ingebrigtsen
2003-10-17 22:05                 ` Simon Josefsson
2003-10-17 22:42                   ` Lars Magne Ingebrigtsen
2003-10-18  0:06                     ` Simon Josefsson
2003-10-18  0:43                       ` Lars Magne Ingebrigtsen
2003-10-18  1:00                         ` Simon Josefsson
2003-10-18  1:10                           ` Lars Magne Ingebrigtsen
2003-10-18  1:39                             ` Simon Josefsson [this message]
2003-10-18  1:45                               ` Lars Magne Ingebrigtsen
2003-10-18  1:52                                 ` Simon Josefsson
2003-10-18  2:00                                   ` Simon Josefsson
2003-10-18 13:55                                     ` Lars Magne Ingebrigtsen
2003-10-18 15:17                                       ` Simon Josefsson
2003-10-18 15:24                                         ` Lars Magne Ingebrigtsen
2003-10-18 23:14                                           ` Simon Josefsson
2003-10-19 11:22                                             ` Lars Magne Ingebrigtsen
2003-10-18  9:58                                   ` Romain FRANCOISE
2003-10-18  2:31                               ` Simon Josefsson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=iluad7znx2w.fsf@extundo.com \
    --to=jas@extundo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).