Skip to content

Commit 07da629

Browse files
committed
nnmail-cache-close should not use nofollow
nnmail-cache-close did not work when ~/.nnmail-cache was a symlink to some other directory. Reported by Michael Albinus (Bug#39793). * lisp/gnus/nnbabyl.el (nnbabyl-create-mbox): * lisp/gnus/nndiary.el (nndiary-generate-nov-file): * lisp/gnus/nnfolder.el (nnfolder-possibly-change-group): * lisp/gnus/nnmbox.el (nnmbox-create-mbox): * lisp/gnus/nnml.el (nnml-generate-nov-file): Pass ‘excl’ to nnmail-write-region when creating a file, for safety. * lisp/gnus/nnmail.el (nnmail-write-region): Add optional MUSTBENEW arg, to stay consistent with write-region. Past ‘nofollow’ to set-file-modes only when MUSTBENEW is ‘excl’.
1 parent 3766bf7 commit 07da629

File tree

6 files changed

+10
-8
lines changed

6 files changed

+10
-8
lines changed

lisp/gnus/nnbabyl.el

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -544,7 +544,7 @@
544544
(setq buffer-file-name nnbabyl-mbox-file)
545545
(insert "BABYL OPTIONS:\n\n\^_")
546546
(nnmail-write-region
547-
(point-min) (point-max) nnbabyl-mbox-file t 'nomesg))))
547+
(point-min) (point-max) nnbabyl-mbox-file t 'nomesg nil 'excl))))
548548

549549
(defun nnbabyl-read-mbox ()
550550
(nnmail-activate 'nnbabyl)

lisp/gnus/nndiary.el

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1115,7 +1115,7 @@ all. This may very well take some time.")
11151115
(widen))
11161116
(setq files (cdr files)))
11171117
(with-current-buffer nov-buffer
1118-
(nnmail-write-region 1 (point-max) nov nil 'nomesg)
1118+
(nnmail-write-region 1 (point-max) nov nil 'nomesg nil 'excl)
11191119
(kill-buffer (current-buffer))))))
11201120

11211121
(defun nndiary-nov-delete-article (group article)

lisp/gnus/nnfolder.el

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -735,7 +735,7 @@ deleted. Point is left where the deleted region was."
735735
(or nnfolder-file-coding-system-for-write
736736
nnfolder-file-coding-system-for-write)))
737737
(nnmail-write-region (point-min) (point-min)
738-
file t 'nomesg)))
738+
file t 'nomesg nil 'excl)))
739739
(when (setq nnfolder-current-buffer (nnfolder-read-folder group))
740740
(set-buffer nnfolder-current-buffer)
741741
(push (list group nnfolder-current-buffer)

lisp/gnus/nnmail.el

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1953,12 +1953,14 @@ If TIME is nil, then return the cutoff time for oldness instead."
19531953
(unless (re-search-forward "^Message-ID[ \t]*:" nil t)
19541954
(insert "Message-ID: " (nnmail-message-id) "\n")))))
19551955

1956-
(defun nnmail-write-region (start end filename &optional append visit lockname)
1956+
(defun nnmail-write-region (start end filename
1957+
&optional append visit lockname mustbenew)
19571958
"Do a `write-region', and then set the file modes."
19581959
(let ((coding-system-for-write nnmail-file-coding-system)
19591960
(file-name-coding-system nnmail-pathname-coding-system))
1960-
(write-region start end filename append visit lockname)
1961-
(set-file-modes filename nnmail-default-file-modes 'nofollow)))
1961+
(write-region start end filename append visit lockname mustbenew)
1962+
(set-file-modes filename nnmail-default-file-modes
1963+
(when (eq mustbenew 'excl) 'nofollow))))
19621964

19631965
;;;
19641966
;;; Status functions

lisp/gnus/nnmbox.el

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -613,7 +613,7 @@
613613
(dir (file-name-directory nnmbox-mbox-file)))
614614
(and dir (gnus-make-directory dir))
615615
(nnmail-write-region (point-min) (point-min)
616-
nnmbox-mbox-file t 'nomesg))))
616+
nnmbox-mbox-file t 'nomesg nil 'excl))))
617617

618618
(defun nnmbox-read-mbox ()
619619
(nnmail-activate 'nnmbox)

lisp/gnus/nnml.el

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -901,7 +901,7 @@ Unless no-active is non-nil, update the active file too."
901901
(nnheader-insert-nov headers)))
902902
(widen))))
903903
(with-current-buffer nov-buffer
904-
(nnmail-write-region (point-min) (point-max) nov nil 'nomesg)
904+
(nnmail-write-region (point-min) (point-max) nov nil 'nomesg nil 'excl)
905905
(kill-buffer (current-buffer))))))
906906

907907
(defun nnml-nov-delete-article (group article)

0 commit comments

Comments
 (0)