[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 4/4] pipe2: fix O_NONBLOCK support on mingw
From: |
Bruno Haible |
Subject: |
Re: [PATCH 4/4] pipe2: fix O_NONBLOCK support on mingw |
Date: |
Sun, 17 Apr 2011 23:36:44 +0200 |
User-agent: |
KMail/1.9.9 |
Eric Blake wrote:
> * lib/pipe2.c (pipe2) [WIN32]: Add O_NONBLOCK support.
Thanks. The code can be simplified a bit. In particular, there is no need
to call _pipe in two places, with different arguments. This should make it
simpler to add support for more flags in the future.
2011-04-17 Bruno Haible <address@hidden>
pipe2: Simplify code.
* lib/pipe2.c (pipe2): Reduce code duplication.
--- lib/pipe2.c.orig Sun Apr 17 23:31:26 2011
+++ lib/pipe2.c Sun Apr 17 23:30:43 2011
@@ -66,23 +66,17 @@
#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
/* Native Woe32 API. */
+ if (_pipe (fd, 4096, flags & ~O_NONBLOCK) < 0)
+ return -1;
+
if (flags & O_NONBLOCK)
{
- int result = _pipe (fd, 4096, flags & ~O_NONBLOCK);
- if (result != 0)
- return result;
if (set_nonblocking_flag (fd[0], true) != 0
|| set_nonblocking_flag (fd[1], true) != 0)
- {
- int saved_errno = errno;
- close (fd[0]);
- close (fd[1]);
- result = -1;
- errno = saved_errno;
- }
- return result;
+ goto fail;
}
- return _pipe (fd, 4096, flags);
+
+ return 0;
#else
/* Unix API. */
@@ -131,6 +125,8 @@
return 0;
+#endif
+
fail:
{
int saved_errno = errno;
@@ -139,6 +135,4 @@
errno = saved_errno;
return -1;
}
-
-#endif
}
--
In memoriam Max Josef Metzger <http://en.wikipedia.org/wiki/Max_Josef_Metzger>