[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/files.el,v [EMACS_22_BASE]
From: |
Glenn Morris |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/files.el,v [EMACS_22_BASE] |
Date: |
Wed, 22 Aug 2007 03:47:36 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Branch: EMACS_22_BASE
Changes by: Glenn Morris <gm> 07/08/22 03:47:36
Index: files.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/files.el,v
retrieving revision 1.896.2.15
retrieving revision 1.896.2.16
diff -u -b -r1.896.2.15 -r1.896.2.16
--- files.el 8 Aug 2007 14:06:01 -0000 1.896.2.15
+++ files.el 22 Aug 2007 03:47:35 -0000 1.896.2.16
@@ -3120,7 +3120,12 @@
(file-error nil))))))
(defun backup-buffer-copy (from-name to-name modes)
- (let ((umask (default-file-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,6 +3134,11 @@
(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,6 +3147,10 @@
(file-already-exists t))
;; The file was somehow created by someone else between
;; `delete-file' and `copy-file', so let's try again.
+ ;; Does that every actually happen in practice?
+ ;; This is a potential infloop, which seems bad...
+ ;; rms says "I think there is also a possible race
+ ;; condition for making backup files" (emacs-devel 20070821).
nil))
;; Reset the umask.
(set-default-file-modes umask)))
- [Emacs-diffs] Changes to emacs/lisp/files.el,v [EMACS_22_BASE], Michael Albinus, 2007/08/05
- [Emacs-diffs] Changes to emacs/lisp/files.el,v [EMACS_22_BASE], Michael Albinus, 2007/08/05
- [Emacs-diffs] Changes to emacs/lisp/files.el,v [EMACS_22_BASE], Michael Albinus, 2007/08/05
- [Emacs-diffs] Changes to emacs/lisp/files.el,v [EMACS_22_BASE], Glenn Morris, 2007/08/08
- [Emacs-diffs] Changes to emacs/lisp/files.el,v [EMACS_22_BASE], Stefan Monnier, 2007/08/08
- [Emacs-diffs] Changes to emacs/lisp/files.el,v [EMACS_22_BASE],
Glenn Morris <=
- [Emacs-diffs] Changes to emacs/lisp/files.el,v [EMACS_22_BASE], Glenn Morris, 2007/08/23
- [Emacs-diffs] Changes to emacs/lisp/files.el,v [EMACS_22_BASE], Glenn Morris, 2007/08/23
- [Emacs-diffs] Changes to emacs/lisp/files.el,v [EMACS_22_BASE], Glenn Morris, 2007/08/24
- [Emacs-diffs] Changes to emacs/lisp/files.el,v [EMACS_22_BASE], Martin Rudalics, 2007/08/30