Compiling a testdir created with ./gnulib-tool --create-testdir --dir=../testdir1 --single-configure --with-c++-tests \ array-list avltreehash-list avltree-list carray-list linkedhash-list \ linked-list list rbtreehash-list rbtree-list sublist xlist xsublist list-c++ \ posixcheck strpbrk
I get this compilation error on most platforms: gcc -DHAVE_CONFIG_H -I. -I../../gllib -I.. -DGNULIB_STRICT_CHECKING=1 -I/media/develdata/devel/inst-x86_64-64/include -Wall -g -O2 -MT cloexec.o -MD -MP -MF .deps/cloexec.Tpo -c -o cloexec.o ../../gllib/cloexec.c In file included from /usr/include/x86_64-linux-gnu/sys/types.h:219:0, from ./sys/types.h:39, from ./fcntl.h:56, from ../../gllib/cloexec.c:25: ./unistd.h:900:1: error: ‘copy_file_range’ undeclared here (not in a function) _GL_WARN_ON_USE (copy_file_range, ^ This patch fixes it. 2020-11-17 Bruno Haible <br...@clisp.org> Fix error when GNULIB_POSIXCHECK is enabled (regression 2019-06-04). * lib/unistd.in.h (copy_file_range): Don't assume that copy_file_range is always declared. * m4/unistd_h.m4 (gl_UNISTD_H): Test whether copy_file_range is declared. diff --git a/lib/unistd.in.h b/lib/unistd.in.h index efe237f..5cf6f9d 100644 --- a/lib/unistd.in.h +++ b/lib/unistd.in.h @@ -397,10 +397,11 @@ _GL_CXXALIAS_SYS (copy_file_range, ssize_t, (int ifd, off_t *ipos, # endif _GL_CXXALIASWARN (copy_file_range); #elif defined GNULIB_POSIXCHECK -/* Assume copy_file_range is always declared. */ +# if HAVE_RAW_DECL_COPY_FILE_RANGE _GL_WARN_ON_USE (copy_file_range, "copy_file_range is unportable - " "use gnulib module copy_file_range for portability"); +# endif #endif diff --git a/m4/unistd_h.m4 b/m4/unistd_h.m4 index b4734da..07b9158 100644 --- a/m4/unistd_h.m4 +++ b/m4/unistd_h.m4 @@ -1,4 +1,4 @@ -# unistd_h.m4 serial 81 +# unistd_h.m4 serial 82 dnl Copyright (C) 2006-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -41,7 +41,8 @@ AC_DEFUN([gl_UNISTD_H], # include <io.h> # endif #endif - ]], [access chdir chown dup dup2 dup3 environ euidaccess faccessat fchdir + ]], [access chdir chown copy_file_range dup dup2 dup3 environ euidaccess + faccessat fchdir fchownat fdatasync fsync ftruncate getcwd getdomainname getdtablesize getentropy getgroups gethostname getlogin getlogin_r getpagesize getpass getusershell setusershell endusershell