1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-22 19:44:10 +02:00

(file-exists?): Use stat rather than access?, so as to

follow the effective UID/GID not the real ID.  file-exists? is
normally be used as a prelude to opening or some other operation, and
it's the effective ID which will apply there.  Emacs file-exists-p
uses stat, presumably for the the same reason.
This commit is contained in:
Kevin Ryde 2003-09-12 23:35:54 +00:00
parent 97a61c5f91
commit 833fc2f186

View file

@ -407,10 +407,12 @@
(if (provided? 'socket)
(primitive-load-path "ice-9/networking.scm"))
;; ENHANCE-ME: Catching an exception from stat is a bit wasteful, do this in
;; C where all that's needed is to inspect the return from stat().
(define file-exists?
(if (provided? 'posix)
(lambda (str)
(access? str F_OK))
(->bool (false-if-exception (stat str))))
(lambda (str)
(let ((port (catch 'system-error (lambda () (open-file str OPEN_READ))
(lambda args #f))))