From ea4cdd9bdf40b23ab89f6d7efcce9c911b9f583c Mon Sep 17 00:00:00 2001
From: Henrik Enberg <henrik.enberg@telia.com>
Date: Sat, 21 Jan 2006 03:39:48 +0000
Subject: [PATCH] (rmail-delete-inbox-files): New function factored out of
 `rmail-get-new-mail'. (rmail-get-new-mail): Use it. (rmail-get-inbox-files):
 Renamed from `rmail-get-inbox-list'.

---
 lisp/mail/ChangeLog |  4 ++++
 lisp/mail/rmail.el  | 27 +++++++++++++++++----------
 2 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/lisp/mail/ChangeLog b/lisp/mail/ChangeLog
index 490c9f1c2f3..3a2804a1d51 100644
--- a/lisp/mail/ChangeLog
+++ b/lisp/mail/ChangeLog
@@ -5,6 +5,10 @@
 	(rmail-hex-string-to-integer): Likewise.
 	(rmail-hex-char-to-integer): Likewise.
 	(rmail-decode-mail-file): Renamed from `rmail-decode-mbox-file'.
+	(rmail-delete-inbox-files): New function factored out of
+	`rmail-get-new-mail'.
+	(rmail-get-new-mail): Use it.
+	(rmail-get-inbox-files): Renamed from `rmail-get-inbox-list'.
 
 2006-01-21  Alex Schroeder  <alex@gnu.org>
 
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index d2228319389..7f107c9f3b6 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -1350,7 +1350,7 @@ original copy."
 
 ;;;; *** Rmail input ***
 
-(defun rmail-get-inbox-list ()
+(defun rmail-get-inbox-files ()
   "Return all files from `rmail-inbox-list' without name conflicts.
 A conflict happens when two inbox file names have the same name
 according to `file-name-nondirectory'."
@@ -1363,6 +1363,18 @@ according to `file-name-nondirectory'."
 	(push (file-name-nondirectory file) last-names)))
     (nreverse files)))
 
+(defun rmail-delete-inbox-files (files)
+  "Delete all files given in FILES.
+If delete fails, truncate them to zero length."
+  (dolist (file files)
+    (condition-case nil
+	;; First, try deleting.
+	(condition-case nil
+	    (delete-file file)
+	  ;; If we can't delete it, truncate it.
+	  (file-error (write-region (point) (point) file)))
+      (file-error nil))))
+
 (defun rmail-get-new-mail (&optional file-name)
   "Move any new mail from this mail file's inbox files.
 The inbox files for the primary mail file are determined using
@@ -1406,7 +1418,7 @@ updated file.  It returns t if it got any new messages."
   ;; Get rid of all undo records for this buffer.
   (unless (eq buffer-undo-list t)
     (setq buffer-undo-list nil))
-  (let ((files (if file-name (list file-name) (rmail-get-inbox-list)))
+  (let ((files (if file-name (list file-name) (rmail-get-inbox-files)))
 	(rmail-enable-multibyte (default-value 'enable-multibyte-characters))
 	found current-message)
     (condition-case nil
@@ -1430,6 +1442,8 @@ updated file.  It returns t if it got any new messages."
 		(if file-name
 		    (rmail-insert-inbox-text files nil)
 		  (setq delete-files (rmail-insert-inbox-text files t)))
+		;; Process newly found messages and save them into the
+		;; RMAIL file.
 		(unless (equal (point-min) (point-max))
 		  (setq new-messages (rmail-process-new-messages)
 			rmail-current-message (1+ rmail-total-messages)
@@ -1438,14 +1452,7 @@ updated file.  It returns t if it got any new messages."
 		  (save-buffer))
 		;; Delete the old files, now that the RMAIL file is
 		;; saved.
-		(dolist (i delete-files)
-		  (condition-case nil
-		      ;; First, try deleting.
-		      (condition-case nil
-			  (delete-file i)
-			;; If we can't delete it, truncate it.
-			(file-error (write-region (point) (point) i)))
-		    (file-error nil)))))
+		(rmail-delete-inbox-files delete-files)))
 	    (if (= new-messages 0)
 		(progn (goto-char opoint)
 		       (when (or file-name rmail-inbox-list)
-- 
2.39.5