Subject: Re: bug#78701: Undeclared reference to access on Windows

From: Ileana Dumitrescu <[email-masked]>
Date: Fri, 6 Jun 2025 20:47:51 +0300

On 05/06/2025 19:22, Kirill Makurin wrote:
> 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.

Thank you for the bug report and suggested patch! I have applied the
change to ltdl.h, and it is on the development branch [1].

[1] 
https://cgit.git.savannah.gnu.org/cgit/libtool.git/commit/?h=development&id=a26932a36ecb2c3013be0c1e7fdbf2eb9062e845

-- 
Ileana Dumitrescu

GPG Public Key: FA26 CA78 4BE1 8892 7F22 B99F 6570 EA01 146F 7354