fcntl: support F_DUPFD_CLOEXEC on systems with fcntl
authorEric Blake <ebb9@byu.net>
Mon, 7 Dec 2009 18:50:59 +0000 (11:50 -0700)
committerEric Blake <ebb9@byu.net>
Thu, 17 Dec 2009 02:25:30 +0000 (19:25 -0700)
commit38f87b03c2763bb2af05ae98905b0ac8ba55b3eb
tree1ee5e48a45fd0aec3288652fdd1f195fc7474d51
parent12126c1477f0ae1070c51ed76025f21cb6ea56e7
fcntl: support F_DUPFD_CLOEXEC on systems with fcntl

Implement F_DUPFD_CLOEXEC.  The unit test still fails on systems
with other fcntl bugs (such as cygwin 1.5 mishandling F_DUPFD,
or mingw lacking fcntl altogether).  Passes on Linux, both with
and without kernel support, and on cygwin 1.7.

* modules/fcntl (Files): List new files.
(configure.ac): Run a test.
* m4/fcntl.m4 (gl_FUNC_FCNTL): New file.
* lib/fcntl.c (rpl_fcntl): Likewise.
* m4/fcntl_h.m4 (gl_FCNTL_H_DEFAULTS): Add witness defaults.
(gl_FCNTL_H): Always replace fcntl.h.
* modules/fcntl-h (Makefile.am): Substitute witnesses.
* lib/fcntl.in.h (fcntl): Declare replacement.
(F_DUPFD_CLOEXEC, GNULIB_defined_F_DUPFD_CLOEXEC): New macro when
needed, plus a witness.
* doc/posix-functions/fcntl.texi (fcntl): Document this.
* doc/posix-headers/fcntl.texi (fcntl.h): Likewise.
* tests/test-fcntl.c: New file.
* modules/fcntl-tests: Likewise.

Signed-off-by: Eric Blake <ebb9@byu.net>
ChangeLog
doc/posix-functions/fcntl.texi
doc/posix-headers/fcntl.texi
lib/fcntl.c [new file with mode: 0644]
lib/fcntl.in.h
m4/fcntl.m4 [new file with mode: 0644]
m4/fcntl_h.m4
modules/fcntl
modules/fcntl-h
modules/fcntl-tests [new file with mode: 0644]
tests/test-fcntl.c [new file with mode: 0644]