Subject: Undeclared reference to access on Windows

From: Kirill Makurin <[email-masked]>
Date: Thu, 5 Jun 2025 16:22:42 +0000

Building libltdl on Windows using clang-cl.exe fails with the following diagnostic:

```
H:/git/libtool/libltdl/ltdl.c(781,19): error: call to undeclared function 'access'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  781 |   int           notfound        = access (filename, R_OK);
      |                                   ^
H:/git/libtool/libltdl/ltdl.c(781,19): note: did you mean 'accept'?
C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um\winsock.h(739,19): note: 'accept' declared here
  739 | SOCKET PASCAL FAR accept (
      |                   ^
```

On native Windows (MSVC/mingw), access is declared in io.h, which is not included. (On mingw, it could be indirectly included from
other header files.)

A solution would be to add

```
#if defined (_WIN32) && !defined (__CYGWIN__)
#include <io.h>
#endif
```

on top of libltdl/ltdl.c.

- Kirill Makurin