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 <[email protected]>
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 ();