(root)/
tar-1.35/
gnu/
pipe.c
       1  /* Create a pipe.
       2     Copyright (C) 2009-2023 Free Software Foundation, Inc.
       3  
       4     This file is free software: you can redistribute it and/or modify
       5     it under the terms of the GNU Lesser General Public License as
       6     published by the Free Software Foundation; either version 2.1 of the
       7     License, or (at your option) any later version.
       8  
       9     This file 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
      15     along 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