# HG changeset patch # User Richard M. Stallman # Date 716287458 0 # Node ID ecaf2b70cd45ce0654002899dafff9b81bca393e # Parent ff73961932eb4650c78aa43168b14906f6e6e113 *** empty log message *** diff -r ff73961932eb -r ecaf2b70cd45 lisp/files.el --- a/lisp/files.el Sat Sep 12 07:46:41 1992 +0000 +++ b/lisp/files.el Sat Sep 12 08:44:18 1992 +0000 @@ -787,11 +787,16 @@ (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 @@ (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