]> git.eshelyaron.com Git - emacs.git/commitdiff
nnmail-cache-close should not use nofollow
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 27 Feb 2020 01:10:21 +0000 (17:10 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 27 Feb 2020 01:10:48 +0000 (17:10 -0800)
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’.

lisp/gnus/nnbabyl.el
lisp/gnus/nndiary.el
lisp/gnus/nnfolder.el
lisp/gnus/nnmail.el
lisp/gnus/nnmbox.el
lisp/gnus/nnml.el

index cb22933b529d518c66dbe2c4e65562aafb317deb..480d794b9ac604897548be48388f0a5a04cff64f 100644 (file)
       (setq buffer-file-name nnbabyl-mbox-file)
       (insert "BABYL OPTIONS:\n\n\^_")
       (nnmail-write-region
-       (point-min) (point-max) nnbabyl-mbox-file t 'nomesg))))
+       (point-min) (point-max) nnbabyl-mbox-file t 'nomesg nil 'excl))))
 
 (defun nnbabyl-read-mbox ()
   (nnmail-activate 'nnbabyl)
index ac394ae53d7aabff3d24203389e1871c1947f7f0..945ef0351e5f052fe36e51bb261941c38f825297 100644 (file)
@@ -1115,7 +1115,7 @@ all.  This may very well take some time.")
          (widen))
        (setq files (cdr files)))
       (with-current-buffer nov-buffer
-       (nnmail-write-region 1 (point-max) nov nil 'nomesg)
+       (nnmail-write-region 1 (point-max) nov nil 'nomesg nil 'excl)
        (kill-buffer (current-buffer))))))
 
 (defun nndiary-nov-delete-article (group article)
index d1eeb04697ec6e3b952cb70cf9148ed51ad1dc22..c27af1742d82903834f8b40576c39729d0e56487 100644 (file)
@@ -735,7 +735,7 @@ deleted.  Point is left where the deleted region was."
                       (or nnfolder-file-coding-system-for-write
                           nnfolder-file-coding-system-for-write)))
                  (nnmail-write-region (point-min) (point-min)
-                                      file t 'nomesg)))
+                                      file t 'nomesg nil 'excl)))
              (when (setq nnfolder-current-buffer (nnfolder-read-folder group))
                (set-buffer nnfolder-current-buffer)
                (push (list group nnfolder-current-buffer)
index 93e4b0e7a8fd79265753e009815089f4e639da9f..3be843c91f15a5e22b6b5ac5167bb4727557e43b 100644 (file)
@@ -1953,12 +1953,14 @@ If TIME is nil, then return the cutoff time for oldness instead."
       (unless (re-search-forward "^Message-ID[ \t]*:" nil t)
        (insert "Message-ID: " (nnmail-message-id) "\n")))))
 
-(defun nnmail-write-region (start end filename &optional append visit lockname)
+(defun nnmail-write-region (start end filename
+                                 &optional append visit lockname mustbenew)
   "Do a `write-region', and then set the file modes."
   (let ((coding-system-for-write nnmail-file-coding-system)
        (file-name-coding-system nnmail-pathname-coding-system))
-    (write-region start end filename append visit lockname)
-    (set-file-modes filename nnmail-default-file-modes 'nofollow)))
+    (write-region start end filename append visit lockname mustbenew)
+    (set-file-modes filename nnmail-default-file-modes
+                   (when (eq mustbenew 'excl) 'nofollow))))
 
 ;;;
 ;;; Status functions
index a191f887c7831bda4757f763abf8da807040848b..8b3d80266e7a347b720df6f8264403f58a2c0962 100644 (file)
          (dir (file-name-directory nnmbox-mbox-file)))
       (and dir (gnus-make-directory dir))
       (nnmail-write-region (point-min) (point-min)
-                          nnmbox-mbox-file t 'nomesg))))
+                          nnmbox-mbox-file t 'nomesg nil 'excl))))
 
 (defun nnmbox-read-mbox ()
   (nnmail-activate 'nnmbox)
index 2c39ab8e36a04fed607caea9b405781cb357e810..baf5d54b74db8378a7901a4db5c1fedae0fc74e7 100644 (file)
@@ -901,7 +901,7 @@ Unless no-active is non-nil, update the active file too."
                (nnheader-insert-nov headers)))
            (widen))))
       (with-current-buffer nov-buffer
-       (nnmail-write-region (point-min) (point-max) nov nil 'nomesg)
+       (nnmail-write-region (point-min) (point-max) nov nil 'nomesg nil 'excl)
        (kill-buffer (current-buffer))))))
 
 (defun nnml-nov-delete-article (group article)