From: Glenn Morris <rgm@gnu.org>
To: martin rudalics <rudalics@gmx.at>
Cc: bug-gnu-emacs@gnu.org, Martin von Gagern <Martin.vGagern@gmx.net>
Subject: Re: backup-buffer-copy loops if old backup can't be deleted
Date: Tue, 21 Aug 2007 17:50:59 -0400 [thread overview]
Message-ID: <16sl6cy2t8.fsf@fencepost.gnu.org> (raw)
In-Reply-To: 46CB529F.7010008@gmx.at
martin rudalics wrote:
> Why can't we use
>
> (copy-file from-name to-name t t)
>
> here as in Emacs 21? What was the rationale for this loop?
I know no more than it says in the comment. rms added the loop
20050423, copied from make-temp-file I think. I think looping makes
more sense in that context, not sure it makes any sense in this
context. I'll ask on emacs-devel. But if what it says in the existing
comment is possible, then I guess we would actually need something
like this:
*** files.el 8 Aug 2007 14:06:01 -0000 1.896.2.15
--- files.el 21 Aug 2007 21:26:02 -0000
***************
*** 3120,3126 ****
(file-error nil))))))
(defun backup-buffer-copy (from-name to-name modes)
! (let ((umask (default-file-modes)))
(unwind-protect
(progn
;; Create temp files with strict access rights. It's easy to
--- 3120,3131 ----
(file-error nil))))))
(defun backup-buffer-copy (from-name to-name modes)
! (let ((umask (default-file-modes))
! (dir (or (file-name-directory to-name)
! default-directory)))
! ;; Can't delete or create files in a read-only directory.
! (unless (file-writable-p dir)
! (signal 'file-error (list "Directory is not writable" dir)))
(unwind-protect
(progn
;; Create temp files with strict access rights. It's easy to
***************
*** 3129,3134 ****
--- 3134,3144 ----
(set-default-file-modes ?\700)
(while (condition-case ()
(progn
+ ;; If we allow for the possibility of something
+ ;; creating the file between delete and copy
+ ;; (below), we must also allow for the
+ ;; possibility of something deleting it between
+ ;; a file-exists-p check and a delete.
(condition-case nil
(delete-file to-name)
(file-error nil))
***************
*** 3137,3142 ****
--- 3147,3154 ----
(file-already-exists t))
;; The file was somehow created by someone else between
;; `delete-file' and `copy-file', so let's try again.
+ ;; FIXME does that every actually happen in practice?
+ ;; This is a potential infloop, which seems bad...
nil))
;; Reset the umask.
(set-default-file-modes umask)))
next prev parent reply other threads:[~2007-08-21 21:50 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.5018.1187641790.32220.bug-gnu-emacs@gnu.org>
2007-08-20 22:01 ` backup-buffer-copy loops if old backup can't be deleted Martin von Gagern
[not found] ` <mailman.5021.1187647310.32220.bug-gnu-emacs@gnu.org>
2007-08-21 12:18 ` Martin von Gagern
2007-08-21 14:37 ` martin rudalics
2007-08-21 14:51 ` Martin von Gagern
2007-08-21 15:28 ` martin rudalics
2007-08-21 19:35 ` Glenn Morris
2007-08-21 21:01 ` martin rudalics
2007-08-21 21:50 ` Glenn Morris [this message]
2007-08-22 9:13 ` Martin von Gagern
2007-08-22 9:44 ` martin rudalics
2007-08-22 9:48 ` Martin von Gagern
2007-08-22 12:40 ` martin rudalics
2007-08-22 21:37 ` Michael Schierl
2007-08-21 22:21 ` Martin von Gagern
2007-08-22 9:51 ` Ulrich Mueller
2007-08-23 20:59 ` Richard Stallman
2007-08-24 7:13 ` Martin von Gagern
2007-08-24 9:10 ` martin rudalics
2007-08-25 4:07 ` Richard Stallman
2007-08-25 4:07 ` Richard Stallman
[not found] ` <mailman.5219.1187902794.32220.bug-gnu-emacs@gnu.org>
2007-08-24 6:11 ` Ulrich Mueller
2007-08-20 19:58 Martin von Gagern
2007-08-21 6:50 ` martin rudalics
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=16sl6cy2t8.fsf@fencepost.gnu.org \
--to=rgm@gnu.org \
--cc=Martin.vGagern@gmx.net \
--cc=bug-gnu-emacs@gnu.org \
--cc=rudalics@gmx.at \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.