changeset 102065:8dfd81b55840

(rmail-mbox-from): New function. (rmail-output-as-mbox): Use rmail-mbox-from. (rmail-output): Ensure a From line in the not-rmail Babyl case.
author Glenn Morris <rgm@gnu.org>
date Tue, 17 Feb 2009 02:54:14 +0000
parents f87990d77917
children 0fb11e475237
files lisp/ChangeLog lisp/mail/rmailout.el
diffstat 2 files changed, 27 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Tue Feb 17 02:38:54 2009 +0000
+++ b/lisp/ChangeLog	Tue Feb 17 02:54:14 2009 +0000
@@ -4,6 +4,9 @@
 	(rmail-delete-unwanted-fields): Ignore case.  Use line-beg-pos.
 	(rmail-output, rmail-output-as-seen): Change the "from-gnus" argument to
 	"not-rmail", and make it work.  Simplify.
+	(rmail-mbox-from): New function.
+	(rmail-output-as-mbox): Use rmail-mbox-from.
+	(rmail-output): Ensure a From line in the not-rmail Babyl case.
 
 	* mail/rmail.el (rmail-get-attr-names): Give a warning rather than an
 	error if the header is corrupt.
--- a/lisp/mail/rmailout.el	Tue Feb 17 02:38:54 2009 +0000
+++ b/lisp/mail/rmailout.el	Tue Feb 17 02:54:14 2009 +0000
@@ -308,6 +308,21 @@
 		    "From: \\1\n"))
 		t)))))))
 
+;; Note this is duplicated in unrmail.el.
+(defun rmail-mbox-from ()
+  "Return a \"From \" line for the current message.
+The buffer should be narrowed to just the header."
+  (let ((from (or (mail-fetch-field "from")
+		  (mail-fetch-field "really-from")
+		  (mail-fetch-field "sender")
+		  "unknown"))
+	(date (mail-fetch-field "date")))
+    (format "From %s %s\n" (mail-strip-quoted-names from)
+	    (or (and date
+		     (ignore-errors
+		      (current-time-string (date-to-time date))))
+		(current-time-string)))))
+
 (defun rmail-output-as-mbox (file-name nomsg &optional as-seen)
   "Convert the current buffer's text to mbox and output to FILE-NAME.
 Alters the current buffer's text, so it should be a temporary buffer.
@@ -327,20 +342,9 @@
     (rmail-delete-unwanted-fields
      (if rmail-enable-mime "Mail-From"
        "Mail-From\\|MIME-Version\\|Content-type"))
-    ;; Generate a From line from other header fields if necessary.
-    ;; FIXME this duplicates code from unrmail.el.
     (goto-char (point-min))
-    (unless (looking-at "From ")
-      (setq from (or (mail-fetch-field "from")
-		     (mail-fetch-field "really-from")
-		     (mail-fetch-field "sender")
-		     "unknown")
-	    date (mail-fetch-field "date")
-	    date (or (and date
-			  (ignore-errors
-			   (current-time-string (date-to-time date))))
-		     (current-time-string)))
-      (insert "From " (mail-strip-quoted-names from) " " date "\n"))
+    (or (looking-at "From ")
+	(insert (rmail-mbox-from)))
     (widen)
     ;; Make sure message ends with blank line.
     (goto-char (point-max))
@@ -439,11 +443,16 @@
 	(cur (current-buffer)))
     (if not-rmail		 ; eg via message-fcc-handler-function
 	(with-temp-buffer
-	  ;; FIXME need to ensure a From line for rmail-convert-to-babyl-format.
 	  (insert-buffer-substring cur)
 	  ;; Output in the appropriate format.
 	  (if babyl-format
-	      (rmail-output-as-babyl file-name noattribute)
+	      (progn
+		(goto-char (point-min))
+		;; rmail-convert-to-babyl-format errors if no From line,
+		;; whereas rmail-output-as-mbox inserts one.
+		(or (looking-at "From ")
+		    (insert (rmail-mbox-from)))
+		(rmail-output-as-babyl file-name noattribute))
 	    (rmail-output-as-mbox file-name noattribute)))
       ;; Called from an Rmail buffer.
       (if rmail-buffer