(root)/
binutils-2.41/
libiberty/
filedescriptor.c
       1  /* File descriptor related functions.
       2  
       3     Copyright (C) 2019-2023 Free Software Foundation, Inc.
       4  
       5     This file is part of the libiberty library.
       6  
       7     This program is free software; you can redistribute it and/or modify
       8     it under the terms of the GNU General Public License as published by
       9     the Free Software Foundation; either version 2 of the License, or
      10     (at your option) any later version.
      11  
      12     This program is distributed in the hope that it will be useful,
      13     but WITHOUT ANY WARRANTY; without even the implied warranty of
      14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      15     GNU General Public License for more details.
      16  
      17     You should have received a copy of the GNU General Public License
      18     along with this program; if not, write to the Free Software
      19     Foundation, Inc., 51 Franklin Street - Fifth Floor,
      20     Boston, MA 02110-1301, USA.  */
      21  
      22  #include "config.h"
      23  #include "ansidecl.h"
      24  #include "libiberty.h"
      25  
      26  #ifdef HAVE_FCNTL_H
      27  #include <fcntl.h>
      28  #endif
      29  
      30  #if defined (_WIN32)
      31  #define WIN32_LEAN_AND_MEAN
      32  #include <windows.h> /* for GetFullPathName */
      33  #endif
      34  /* Return true when FD file descriptor exists.  */
      35  
      36  int
      37  is_valid_fd (int fd)
      38  {
      39  #if defined(_WIN32)
      40    HANDLE h = (HANDLE) _get_osfhandle (fd);
      41    return h != (HANDLE) -1;
      42  #elif defined(F_GETFD)
      43    return fcntl (fd, F_GETFD) >= 0;
      44  #else
      45    return dup2 (fd, fd) < 0;
      46  #endif
      47  }