bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MinGW compilation warning in fseeko


From: Bruno Haible
Subject: Re: MinGW compilation warning in fseeko
Date: Sat, 12 May 2018 14:31:59 +0200
User-agent: KMail/5.1.3 (Linux/4.4.0-119-generic; KDE/5.18.0; x86_64; ; )

Eli Zaretskii wrote:
> While building the latest pretest of wget2 with mingw.org's MinGW, I
> saw this warning:
> 
>        CC       fseeko.lo
>      fseeko.c: In function 'fseeko':
>      fseeko.c:37:18: warning: implicit declaration of function '_fseeki64' 
> [-Wimplicit-function-declaration]
>       #  define fseeko _fseeki64
>                      ^
>      fseeko.c:163:10: note: in expansion of macro 'fseeko'
>       return fseeko (fp, offset, whence);
> 
> This is because configure-time test for _fseeki64 succeeds, but the
> prototype of _fseeki64 is not visible unless the condition
> 
>   _WIN32_WINNT >= 0x0600
> 
> holds

According to 
https://sourceforge.net/p/mingw/mingw-org-wsl/ci/5.1-trunk/tree/mingwrt/include/stdio.h#l743
the condition should be
   _WIN32_WINNT >= _WIN32_WINNT_VISTA || __MSVCRT_VERSION__ >= __MSVCR80_DLL
I guess...

Anyway, the issue is that the "old" mingw defines fseeko64 instead of
_fseeki64, and the gnulib code attempts to distinguish the two cases:

# if HAVE__FSEEKI64 /* msvc, mingw64 */
#  define fseeko _fseeki64
# else /* mingw */
#  define fseeko fseeko64
# endif

But the distinction between mingw-w64 and mingw.org is broken.

Do you know how to distinguish the two, just by preprocessor defines,
without any autoconf test?

Bruno




reply via email to

[Prev in Thread] Current Thread [Next in Thread]