Hi Eric, > * modules/nonblocking (Depends-on): Add open.
This looks like a dependency that will surprise people. If a program needs the 'nonblocking' module for pipe or socket communication, why would it need to compile a replacement for open(). If a program uses open(), then it can use the open() module. Here's a proposed patch to this effect: 2011-04-17 Bruno Haible <br...@clisp.org> Move the support of O_NONBLOCK in open() to the 'open' module. * modules/nonblocking (Depends-on): Remove 'open'. * m4/nonblocking.m4 (gl_NONBLOCKING_IO_BODY): Set gl_cv_have_open_O_NONBLOCK. * m4/open.m4 (gl_FUNC_OPEN): Replace open() also when required for O_NONBLOCK support. * doc/posix-functions/open.texi: Document support for O_NONBLOCK. --- doc/posix-functions/open.texi.orig Sun Apr 17 23:18:36 2011 +++ doc/posix-functions/open.texi Sun Apr 17 23:08:20 2011 @@ -14,6 +14,10 @@ directory, on some platforms: FreeBSD 7.2, AIX 7.1, HP-UX 11.00, Solaris 9, Irix 5.3. @item +This function does not support the @code{O_NONBLOCK} flag when it is defined +by the gnulib module @code{nonblock} on some platforms: +mingw. +@item On Windows platforms (excluding Cygwin), this function does usually not recognize the @file{/dev/null} filename. @end itemize --- m4/nonblocking.m4.orig Sun Apr 17 23:18:36 2011 +++ m4/nonblocking.m4 Sun Apr 17 23:10:55 2011 @@ -1,4 +1,4 @@ -# nonblocking.m4 serial 1 +# nonblocking.m4 serial 2 dnl Copyright (C) 2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -6,6 +6,8 @@ dnl Tests whether non-blocking I/O is natively supported by read(), write(). dnl Sets gl_cv_have_nonblocking. +dnl Also tests whether open() supports O_NONBLOCK. +dnl Sets gl_cv_have_open_O_NONBLOCK. AC_DEFUN([gl_NONBLOCKING_IO], [ dnl Use AC_REQUIRE here, so that the default behavior below is expanded @@ -20,4 +22,8 @@ mingw*) gl_cv_have_nonblocking=no ;; *) gl_cv_have_nonblocking=yes ;; esac + case "$host_os" in + mingw*) gl_cv_have_open_O_NONBLOCK=no ;; + *) gl_cv_have_open_O_NONBLOCK=yes ;; + esac ]) --- m4/open.m4.orig Sun Apr 17 23:18:36 2011 +++ m4/open.m4 Sun Apr 17 23:15:01 2011 @@ -1,4 +1,4 @@ -# open.m4 serial 11 +# open.m4 serial 12 dnl Copyright (C) 2007-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -62,6 +62,15 @@ esac ;; esac + dnl Replace open() for supporting the gnulib-defined O_NONBLOCK flag. + m4_ifdef([gl_NONBLOCKING_IO], [ + if test $REPLACE_OPEN = 0; then + gl_NONBLOCKING_IO + if test $gl_cv_have_open_O_NONBLOCK != yes; then + gl_REPLACE_OPEN + fi + fi + ]) ]) AC_DEFUN([gl_REPLACE_OPEN], --- modules/nonblocking.orig Sun Apr 17 23:18:36 2011 +++ modules/nonblocking Sun Apr 17 23:06:17 2011 @@ -12,7 +12,6 @@ Depends-on: fcntl-h ioctl -open stdbool stdio sys_socket -- In memoriam Max Josef Metzger <http://en.wikipedia.org/wiki/Max_Josef_Metzger>