From: Bruno Haible Date: Tue, 19 Apr 2011 08:38:30 +0000 (+0200) Subject: Move the support of O_NONBLOCK in open() to the 'open' module. X-Git-Tag: v0.1~2931 X-Git-Url: http://erislabs.net/gitweb/?a=commitdiff_plain;h=12856373f8fd28a9d4453d6df97b2fdd17ced398;p=gnulib.git 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. --- diff --git a/ChangeLog b/ChangeLog index c5e07aa07..48a12610e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2011-04-19 Bruno Haible + + 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. + 2011-04-17 Bruno Haible pipe2: Simplify code. diff --git a/doc/posix-functions/open.texi b/doc/posix-functions/open.texi index 223126f61..7ccb4861e 100644 --- a/doc/posix-functions/open.texi +++ b/doc/posix-functions/open.texi @@ -14,6 +14,10 @@ and (without the slash) names a nonexistent file or a file that is not a 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 diff --git a/m4/nonblocking.m4 b/m4/nonblocking.m4 index 8224626be..fd6faeea6 100644 --- a/m4/nonblocking.m4 +++ b/m4/nonblocking.m4 @@ -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 with or without modifications, as long as this notice is preserved. 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 @@ AC_DEFUN([gl_NONBLOCKING_IO_BODY], 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 ]) diff --git a/m4/open.m4 b/m4/open.m4 index bfebdab7b..690cc648d 100644 --- a/m4/open.m4 +++ b/m4/open.m4 @@ -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 @@ changequote([,])dnl 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], diff --git a/modules/nonblocking b/modules/nonblocking index cce41db97..2d469ebaa 100644 --- a/modules/nonblocking +++ b/modules/nonblocking @@ -12,7 +12,6 @@ m4/asm-underscore.m4 Depends-on: fcntl-h ioctl -open stdbool stdio sys_socket