On mingw, I'm seeing test-euidaccess failures:

../../gltests/test-access.h:54: assertion 'errno == ENOTDIR' failed
Stack trace:
0xcd2ea6c5 test_access
        ../../gltests/test-access.h:54
0xcd2ea6c5 main
        ../../gltests/test-euidaccess.c:37

../../gltests/test-access.h:56: assertion 'errno == ENOTDIR' failed
Stack trace:
0xcd2ea786 test_access
        ../../gltests/test-access.h:56
0xcd2ea786 main
        ../../gltests/test-euidaccess.c:37

../../gltests/test-access.h:58: assertion 'errno == ENOTDIR' failed
Stack trace:
0xcd2ea847 test_access
        ../../gltests/test-access.h:58
0xcd2ea847 main
        ../../gltests/test-euidaccess.c:37

../../gltests/test-access.h:60: assertion 'errno == ENOTDIR' failed
Stack trace:
0xcd2ea90c test_access
        ../../gltests/test-access.h:60
0xcd2ea90c main
        ../../gltests/test-euidaccess.c:37
FAIL test-euidaccess.exe (exit status: 1)

Likewise on MSVC.

This patch fixes it.


2024-05-25  Bruno Haible  <br...@clisp.org>

        euidaccess: Fix test failure on native Windows.
        * lib/euidaccess.c: Don't include <io.h>.
        (euidaccess): On native Windows, invoke access, not _access.

diff --git a/lib/euidaccess.c b/lib/euidaccess.c
index ad392dba19..6229f2c0d0 100644
--- a/lib/euidaccess.c
+++ b/lib/euidaccess.c
@@ -29,9 +29,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
-#if defined _WIN32 && ! defined __CYGWIN__
-# include <io.h>
-#else
+#if !(defined _WIN32 && ! defined __CYGWIN__)
 # include "root-uid.h"
 #endif
 
@@ -88,7 +86,7 @@ euidaccess (const char *file, int mode)
 #elif HAVE_EACCESS                      /* FreeBSD */
   return eaccess (file, mode);
 #elif defined _WIN32 && ! defined __CYGWIN__  /* mingw */
-  return _access (file, mode);
+  return access (file, mode);
 #else              /* Mac OS X, NetBSD, OpenBSD, HP-UX, Solaris, Cygwin, BeOS 
*/
 
   uid_t uid = getuid ();




Reply via email to