]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix MS-Windows emulation of 'faccessat' wrt directories.
authorEli Zaretskii <eliz@gnu.org>
Sat, 17 Nov 2012 16:52:48 +0000 (18:52 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 17 Nov 2012 16:52:48 +0000 (18:52 +0200)
 src/w32.c (faccessat): Pretend that directories have the execute bit
 set.  Emacs expects that, e.g., in files.el:cd-absolute.

src/ChangeLog
src/w32.c

index 45d48ba41cc8c2ffe7bc73322da72764812a4d93..df8bf602afeb3cb03fc7419b9f96084e96e56a92 100644 (file)
@@ -1,5 +1,8 @@
 2012-11-17  Eli Zaretskii  <eliz@gnu.org>
 
+       * w32.c (faccessat): Pretend that directories have the execute bit
+       set.  Emacs expects that, e.g., in files.el:cd-absolute.
+
        * w32proc.c (create_child): Don't clip the PID of the child
        process to fit into an Emacs integer, as this is no longer a
        restriction.
index eb07e13a2fb9d0aa2fede4d74632b4004d281ce2..4643362680290116326ebbd41bf2db2599cd4995 100644 (file)
--- a/src/w32.c
+++ b/src/w32.c
@@ -2762,7 +2762,8 @@ faccessat (int dirfd, const char * path, int mode, int flags)
        }
       return -1;
     }
-  if ((mode & X_OK) != 0 && !is_exec (path))
+  if ((mode & X_OK) != 0
+      && !(is_exec (path) || (attributes & FILE_ATTRIBUTE_DIRECTORY) != 0))
     {
       errno = EACCES;
       return -1;