[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 549470f: Prevent locked-file errors in Rmail
From: |
Eli Zaretskii |
Subject: |
[Emacs-diffs] master 549470f: Prevent locked-file errors in Rmail |
Date: |
Sat, 28 May 2016 10:47:18 +0000 (UTC) |
branch: master
commit 549470fdf234acb4da7941e3bb9b28ed63a51876
Author: Ken Olum <address@hidden>
Commit: Eli Zaretskii <address@hidden>
Prevent locked-file errors in Rmail
* lisp/mail/rmail.el (rmail-get-new-mail-1): Lock file before
calling 'rmail-insert-inbox-text'. Unlock if
'rmail-insert-inbox-text' doesn't modify buffer.
(rmail-insert-inbox-text): Remove lock-checking code. (Bug#17706)
---
lisp/mail/rmail.el | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 734155e..e988225 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -1818,9 +1818,21 @@ not be a new one). It returns non-nil if it got any new
messages."
;; Read in the contents of the inbox files, renaming them as
;; necessary, and adding to the list of files to delete
;; eventually.
- (if file-name
- (rmail-insert-inbox-text files nil)
- (setq delete-files (rmail-insert-inbox-text files t)))
+ (unwind-protect
+ (progn
+ ;; Set modified now to lock the file, so that we don't
+ ;; encounter locking problems later in the middle of
+ ;; reading the mail.
+ (set-buffer-modified-p t)
+ (if file-name
+ (rmail-insert-inbox-text files nil)
+ (setq delete-files (rmail-insert-inbox-text files t))))
+ ;; If there was no new mail, or we aborted before actually
+ ;; trying to get any, mark buffer unmodified. Otherwise the
+ ;; buffer is correctly marked modified and the file locked
+ ;; until we save out the new mail.
+ (if (= (point-min) (point-max))
+ (set-buffer-modified-p nil)))
;; Scan the new text and convert each message to
;; Rmail/mbox format.
(goto-char (point-min))
@@ -1969,11 +1981,6 @@ Value is the size of the newly read mail after
conversion."
size))
(defun rmail-insert-inbox-text (files renamep)
- ;; Detect a locked file now, so that we avoid moving mail
- ;; out of the real inbox file. (That could scare people.)
- (or (memq (file-locked-p buffer-file-name) '(nil t))
- (error "RMAIL file %s is locked"
- (file-name-nondirectory buffer-file-name)))
(let (file tofile delete-files popmail got-password password)
(while files
;; Handle remote mailbox names specially; don't expand as filenames
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master 549470f: Prevent locked-file errors in Rmail,
Eli Zaretskii <=