bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/4] nonblocking: provide O_NONBLOCK for mingw


From: Bruno Haible
Subject: Re: [PATCH 1/4] nonblocking: provide O_NONBLOCK for mingw
Date: Sun, 17 Apr 2011 23:24:58 +0200
User-agent: KMail/1.9.9

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  <address@hidden>

        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.
address@hidden
 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>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]