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