diff options
Diffstat (limited to 'libiberty/lrealpath.c')
-rw-r--r-- | libiberty/lrealpath.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/libiberty/lrealpath.c b/libiberty/lrealpath.c index 7f66dc2..ac914a7 100644 --- a/libiberty/lrealpath.c +++ b/libiberty/lrealpath.c @@ -49,6 +49,9 @@ components will be simplified. The returned value will be allocated using #ifdef HAVE_STRING_H #include <string.h> #endif +#ifdef HAVE_FCNTL_H +#include <fcntl.h> +#endif /* On GNU libc systems the declaration is only visible with _GNU_SOURCE. */ #if defined(HAVE_CANONICALIZE_FILE_NAME) \ @@ -155,3 +158,16 @@ lrealpath (const char *filename) /* This system is a lost cause, just duplicate the filename. */ return strdup (filename); } + +/* Return true when FD file descriptor exists. */ + +int +is_valid_fd (int fd) +{ +#if defined(_WIN32) + HANDLE h = (HANDLE) _get_osfhandle (fd); + return h != (HANDLE) -1; +#else + return fcntl (fd, F_GETFD) >= 0; +#endif +} |