From 65864ae07e2adcf0de133bfb626e2f5091c03cbb Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sat, 12 Sep 1992 08:44:18 +0000 Subject: [PATCH] *** empty log message *** --- lisp/files.el | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/lisp/files.el b/lisp/files.el index 1a15792c92c..07c2d2c301e 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -787,11 +787,16 @@ the modes of the new file to agree with the old modes." (let ((attr (file-attributes real-file-name))) (or (nth 9 attr) (/= (nth 2 attr) (user-uid)))))) - (copy-file real-file-name backupname t t) -; rename-file should delete old backup. -; (condition-case () -; (delete-file backupname) -; (file-error nil)) + (condition-case () + (copy-file real-file-name backupname t t) + (file-error + ;; If copying fails because file BACKUPNAME + ;; is not writable, delete that file and try again. + (if (and (file-exists-p backupname) + (not (file-writable-p backupname))) + (delete-file backupname)) + (copy-file real-file-name backupname t t))) + ;; rename-file should delete old backup. (rename-file real-file-name backupname t) (setq setmodes (file-modes backupname))) (file-error @@ -799,7 +804,15 @@ the modes of the new file to agree with the old modes." (setq backupname (expand-file-name "~/%backup%~")) (message "Cannot write backup file; backing up in ~/%%backup%%~") (sleep-for 1) - (copy-file real-file-name backupname t t))) + (condition-case () + (copy-file real-file-name backupname t t) + (file-error + ;; If copying fails because file BACKUPNAME + ;; is not writable, delete that file and try again. + (if (and (file-exists-p backupname) + (not (file-writable-p backupname))) + (delete-file backupname)) + (copy-file real-file-name backupname t t))))) (setq buffer-backed-up t) ;; Now delete the old versions, if desired. (if delete-old-versions