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