Commit | Line | Data |
---|---|---|
1adba49a AW |
1 | /* Create a pipe. |
2 | Copyright (C) 2009-2013 Free Software Foundation, Inc. | |
3 | ||
4 | This program is free software; you can redistribute it and/or modify | |
5 | it under the terms of the GNU Lesser General Public License as published by | |
6 | the Free Software Foundation; either version 2, or (at your option) | |
7 | any later version. | |
8 | ||
9 | This program is distributed in the hope that it will be useful, | |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | GNU Lesser General Public License for more details. | |
13 | ||
14 | You should have received a copy of the GNU Lesser General Public License along | |
15 | with this program; if not, see <http://www.gnu.org/licenses/>. */ | |
16 | ||
17 | #include <config.h> | |
18 | ||
19 | /* Specification. */ | |
20 | #include <unistd.h> | |
21 | ||
22 | #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ | |
23 | /* Native Windows API. */ | |
24 | ||
25 | /* Get _pipe(). */ | |
26 | # include <io.h> | |
27 | ||
28 | /* Get _O_BINARY. */ | |
29 | # include <fcntl.h> | |
30 | ||
31 | int | |
32 | pipe (int fd[2]) | |
33 | { | |
34 | /* Mingw changes fd to {-1,-1} on failure, but this violates | |
35 | http://austingroupbugs.net/view.php?id=467 */ | |
36 | int tmp[2]; | |
37 | int result = _pipe (tmp, 4096, _O_BINARY); | |
38 | if (!result) | |
39 | { | |
40 | fd[0] = tmp[0]; | |
41 | fd[1] = tmp[1]; | |
42 | } | |
43 | return result; | |
44 | } | |
45 | ||
46 | #else | |
47 | ||
48 | # error "This platform lacks a pipe function, and Gnulib doesn't provide a replacement. This is a bug in Gnulib." | |
49 | ||
50 | #endif |