With clang, on native Windows, the function 'chsize' is not present any more. This matches the deprecation of this spelling by Microsoft <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/posix-chsize>.
2020-08-09 Bruno Haible <br...@clisp.org> ftruncate: Use _chsize, not chsize. * m4/ftruncate.m4 (gl_PREREQ_FTRUNCATE): Test for _chsize, not chsize. * lib/ftruncate.c: Test HAVE__CHSIZE. (chsize_nothrow): Use _chsize, not chsize. diff --git a/lib/ftruncate.c b/lib/ftruncate.c index 2514075..a9b9185 100644 --- a/lib/ftruncate.c +++ b/lib/ftruncate.c @@ -19,14 +19,14 @@ /* Specification. */ #include <unistd.h> -#if HAVE_CHSIZE +#if HAVE__CHSIZE /* A native Windows platform. */ # include <errno.h> # if _GL_WINDOWS_64_BIT_OFF_T -/* Large File Support: off_t is 64-bit, but chsize() takes only a 32-bit +/* Large File Support: off_t is 64-bit, but _chsize() takes only a 32-bit argument. So, define a 64-bit safe SetFileSize function ourselves. */ /* Ensure that <windows.h> declares GetFileSizeEx. */ @@ -170,7 +170,7 @@ chsize_nothrow (int fd, long length) TRY_MSVC_INVAL { - result = chsize (fd, length); + result = _chsize (fd, length); } CATCH_MSVC_INVAL { @@ -182,7 +182,7 @@ chsize_nothrow (int fd, long length) return result; } # else -# define chsize_nothrow chsize +# define chsize_nothrow _chsize # endif int diff --git a/m4/ftruncate.m4 b/m4/ftruncate.m4 index 041f542..752b0dd 100644 --- a/m4/ftruncate.m4 +++ b/m4/ftruncate.m4 @@ -1,6 +1,6 @@ -# serial 20 +# serial 21 -# See if we need to emulate a missing ftruncate function using chsize. +# See if we need to emulate a missing ftruncate function using _chsize. # Copyright (C) 2000-2001, 2003-2007, 2009-2020 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation @@ -36,5 +36,5 @@ AC_DEFUN([gl_FUNC_FTRUNCATE], # Prerequisites of lib/ftruncate.c. AC_DEFUN([gl_PREREQ_FTRUNCATE], [ - AC_CHECK_FUNCS([chsize]) + AC_CHECK_FUNCS([_chsize]) ])