(root)/
m4-1.4.19/
lib/
pipe.c
       1  /* Create a pipe.
       2     Copyright (C) 2009-2021 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 General Public License as published by
       6     the Free Software Foundation; either version 3, 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 General Public License for more details.
      13  
      14     You should have received a copy of the GNU General Public License along
      15     with this program; if not, see <https://www.gnu.org/licenses/>.  */
      16  
      17  #include <config.h>
      18  
      19  /* Specification.  */
      20  #include <unistd.h>
      21  
      22  #if 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