Move the support of O_NONBLOCK in open() to the 'open' module.
authorBruno Haible <bruno@clisp.org>
Tue, 19 Apr 2011 08:38:30 +0000 (10:38 +0200)
committerBruno Haible <bruno@clisp.org>
Tue, 19 Apr 2011 08:38:30 +0000 (10:38 +0200)
* 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.

ChangeLog
doc/posix-functions/open.texi
m4/nonblocking.m4
m4/open.m4
modules/nonblocking

index c5e07aa078af5632f46aba1f3faa9fced017d825..48a12610efc88bb20a6965d14a2bb5b593dfada7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2011-04-19  Bruno Haible  <bruno@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.
+
 2011-04-17  Bruno Haible  <bruno@clisp.org>
 
        pipe2: Simplify code.
index 223126f61e1cd526b3337cd7352c8ffee0d064ce..7ccb4861e4e583183fb2861015d279a4f73076ba 100644 (file)
@@ -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
index 8224626bef7a8d5414ffc9282ebe976599f02042..fd6faeea631d2647def06681957c348d17feb7a7 100644 (file)
@@ -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
 ])
index bfebdab7b6c691fbc88136ece812e5bac99b5fb9..690cc648d0730279909b28b14f9c504a5ca33999 100644 (file)
@@ -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],
index cce41db972232ca561d5c30b5f3fc4ffa6d756b0..2d469ebaa47672ceae5f7b0b5436282c8e4a582d 100644 (file)
@@ -12,7 +12,6 @@ m4/asm-underscore.m4
 Depends-on:
 fcntl-h
 ioctl
-open
 stdbool
 stdio
 sys_socket