]> git.eshelyaron.com Git - emacs.git/commitdiff
(unrmail): Set coding-system of the old Rmail file to `raw-text-unix'.
authorEli Zaretskii <eliz@gnu.org>
Sat, 31 Jan 2009 14:34:05 +0000 (14:34 +0000)
committerEli Zaretskii <eliz@gnu.org>
Sat, 31 Jan 2009 14:34:05 +0000 (14:34 +0000)
Bind coding-system-for-write when writing out the converted message, and
make sure it uses Unix EOLs.

lisp/ChangeLog
lisp/mail/unrmail.el

index c54e960fb776296a997a11414db552ca56bbf201..362f46616f629e295632ee418d4cf88b5d83d94a 100644 (file)
@@ -1,5 +1,10 @@
 2009-01-31  Eli Zaretskii  <eliz@gnu.org>
 
+       * mail/unrmail.el (unrmail): Set coding-system of the old Rmail
+       file to `raw-text-unix'.  Bind coding-system-for-write when
+       writing out the converted message, and make sure it uses Unix
+       EOLs.
+
        * mail/rmail.el (rmail-convert-babyl-to-mbox): Set Rmail's buffer
        encoding to `raw-text-unix'.
        (rmail-perm-variables): Set encoding of rmail-view-buffer to
index 95ff727f0772df905f42e5115f6616c8de62cd2b..9d1717368bd6f45d2f45004f7967cda791bc754d 100644 (file)
@@ -55,6 +55,7 @@ For example, invoke `emacs -batch -f batch-unrmail RMAIL'."
       (insert-file-contents file))
     ;; But make it multibyte.
     (set-buffer-multibyte t)
+    (setq buffer-file-coding-system 'raw-text-unix)
 
     (if (not (looking-at "BABYL OPTIONS"))
        (error "This file is not in Babyl format"))
@@ -192,7 +193,13 @@ For example, invoke `emacs -batch -f batch-unrmail RMAIL'."
              ;; If the message specifies a coding system, use it.
              (let ((maybe-coding (mail-fetch-field "X-Coding-System")))
                (if maybe-coding
-                   (setq coding (intern maybe-coding))))
+                   (setq coding
+                         ;; Force Unix EOLs.
+                         (coding-system-change-eol-conversion
+                          (intern maybe-coding) 0))
+                 ;; If there's no X-Coding-System header, assume the
+                 ;; message was never decoded.
+                 (setq coding 'raw-text-unix)))
 
              ;; Delete the Mail-From: header field if any.
              (when (re-search-forward "^Mail-from:" nil t)
@@ -215,9 +222,10 @@ For example, invoke `emacs -batch -f batch-unrmail RMAIL'."
              (while (search-forward "\nFrom " nil t)
                (forward-char -5)
                (insert ?>)))
-           ;; Write it to the output file.
-           (write-region (point-min) (point-max) to-file t
-                         'nomsg))))
+           ;; Write it to the output file, suitably encoded.
+           (let ((coding-system-for-write coding))
+             (write-region (point-min) (point-max) to-file t
+                           'nomsg)))))
       (kill-buffer temp-buffer))
     (message "Writing messages to %s...done" to-file)))