(file-exists?): Use stat rather than access?, so as to
authorKevin Ryde <user42@zip.com.au>
Fri, 12 Sep 2003 23:35:54 +0000 (23:35 +0000)
committerKevin Ryde <user42@zip.com.au>
Fri, 12 Sep 2003 23:35:54 +0000 (23:35 +0000)
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.

ice-9/boot-9.scm

index e3620e0..5ec9b32 100644 (file)
 (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))))