fcntl: work around cygwin bug in F_DUPFD
authorEric Blake <ebb9@byu.net>
Tue, 8 Dec 2009 19:10:52 +0000 (12:10 -0700)
committerEric Blake <ebb9@byu.net>
Thu, 17 Dec 2009 02:25:32 +0000 (19:25 -0700)
commitda91bb7df9bc25e3349b9f3172bfa9d9962f293e
treed1260564e4c1ae966d136364f81fcf3171ba2d4d
parent38f87b03c2763bb2af05ae98905b0ac8ba55b3eb
fcntl: work around cygwin bug in F_DUPFD

fcntl(0,F_DUPFD,10000000) mistakenly failed with EMFILE
instead of EINVAL, and fcntl(0,F_DUPFD,-1) mistakenly passed.

* m4/fcntl.m4 (gl_REPLACE_FCNTL): New macro.
(gl_FUNC_FCNTL): Use it.  Test for F_DUPFD bug.
* lib/fcntl.c (rpl_fcntl) <F_DUPFD>: Work around it.
<F_DUPFD_CLOEXEC>: Reduce calls to _gl_register_dup.
* doc/posix-functions/fcntl.texi (fcntl): Document it.

Signed-off-by: Eric Blake <ebb9@byu.net>
ChangeLog
doc/posix-functions/fcntl.texi
lib/fcntl.c
m4/fcntl.m4