;; Probably pointless, but replaces the old AUTOGEN_VCS in lisp/Makefile,
;; which was designed to handle CVSREAD=1 and equivalent.
(and autoload-ensure-writable
- (file-exists-p file)
(let ((modes (file-modes file)))
- (if (zerop (logand modes #o0200))
+ (if (and modes (zerop (logand modes #o0200)))
;; Ignore any errors here, and let subsequent attempts
;; to write the file raise any real error.
(ignore-errors (set-file-modes file (logior modes #o0200))))))
(auto-save-mode 1)))
;; Make people do a little extra work (C-x C-q)
;; before altering a backup file.
- (when (backup-file-name-p buffer-file-name)
- (setq buffer-read-only t))
;; When a file is marked read-only,
;; make the buffer read-only even if root is looking at it.
- (when (and (file-modes (buffer-file-name))
- (zerop (logand (file-modes (buffer-file-name)) #o222)))
- (setq buffer-read-only t))
+ (unless buffer-read-only
+ (when (or (backup-file-name-p buffer-file-name)
+ (let ((modes (file-modes (buffer-file-name))))
+ (and modes (zerop (logand modes #o222)))))
+ (setq buffer-read-only t)))
(unless nomodes
(when (and view-read-only view-mode)
(view-mode -1))
(set-buffer-modified-p t))
;; Set the file modes to reflect the .newsrc file modes.
(save-buffer)
- (when (and (file-exists-p gnus-current-startup-file)
- (file-exists-p dribble-file)
- (setq modes (file-modes gnus-current-startup-file)))
+ (when (and (setq modes (file-modes gnus-current-startup-file))
+ (file-exists-p dribble-file))
(gnus-set-file-modes dribble-file modes))
(goto-char (point-min))
(when (search-forward "Gnus was exited on purpose" nil t)
(set-buffer html)
(write-file (concat target hfy-extn))
(kill-buffer html))
- ;; #o0200 == 128, but emacs20 doesn't know that
- (if (and (file-exists-p target) (not (file-writable-p target)))
- (set-file-modes target (logior (file-modes target) 128)))
+ (let ((modes (file-modes target)))
+ (if (and modes (not (file-writable-p target)))
+ (set-file-modes target (logior modes #o0200))))
(copy-file (buffer-file-name source) target 'overwrite))
(kill-buffer source)) ))
(format "it is not owned by you (owner = %s (%d))"
(user-full-name uid) uid))
(w32 nil) ; on NTFS?
- ((/= 0 (logand ?\077 (file-modes dir)))
- (format "it is accessible by others (%03o)"
- (file-modes dir)))
+ ((let ((modes (file-modes dir)))
+ (unless (zerop (logand (or modes 0) #o077))
+ (format "it is accessible by others (%03o)" modes))))
(t nil))))
(when unsafe
(error "`%s' is not a safe directory because %s"