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 <br...@clisp.org> 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>