From 8f88e7f6f8ed55effda60b6475d8dbcb247dd9a2 Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Mon, 12 Aug 2019 09:36:48 +0200 Subject: [PATCH] Move is_valid_fd to filedescriptor.c file. 2019-08-12 Martin Liska * Makefile.in: Add filedescriptor.c. * filedescriptor.c: New file. * lrealpath.c (is_valid_fd): Remove. From-SVN: r274273 --- libiberty/ChangeLog | 6 +++++ libiberty/Makefile.in | 14 +++++++++++- libiberty/filedescriptor.c | 47 ++++++++++++++++++++++++++++++++++++++ libiberty/lrealpath.c | 16 ------------- 4 files changed, 66 insertions(+), 17 deletions(-) create mode 100644 libiberty/filedescriptor.c diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 95cb1525f2c..c1fe2f62b44 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,9 @@ +2019-08-12 Martin Liska + + * Makefile.in: Add filedescriptor.c. + * filedescriptor.c: New file. + * lrealpath.c (is_valid_fd): Remove. + 2019-08-08 Martin Liska PR bootstrap/91352 diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in index 0be45b4ae8e..f1628d4ee0d 100644 --- a/libiberty/Makefile.in +++ b/libiberty/Makefile.in @@ -127,7 +127,7 @@ CFILES = alloca.c argv.c asprintf.c atexit.c \ calloc.c choose-temp.c clock.c concat.c cp-demangle.c \ cp-demint.c cplus-dem.c crc32.c \ d-demangle.c dwarfnames.c dyn-string.c \ - fdmatch.c ffs.c fibheap.c filename_cmp.c floatformat.c \ + fdmatch.c ffs.c fibheap.c filedescriptor.c filename_cmp.c floatformat.c \ fnmatch.c fopen_unlocked.c \ getcwd.c getopt.c getopt1.c getpagesize.c getpwd.c getruntime.c \ gettimeofday.c \ @@ -171,6 +171,7 @@ REQUIRED_OFILES = \ ./cp-demint.$(objext) ./crc32.$(objext) ./d-demangle.$(objext) \ ./dwarfnames.$(objext) ./dyn-string.$(objext) \ ./fdmatch.$(objext) ./fibheap.$(objext) \ + ./filedescriptor.$(objext) \ ./filename_cmp.$(objext) ./floatformat.$(objext) \ ./fnmatch.$(objext) ./fopen_unlocked.$(objext) \ ./getopt.$(objext) ./getopt1.$(objext) ./getpwd.$(objext) \ @@ -756,6 +757,17 @@ $(CONFIGURED_OFILES): stamp-picdir stamp-noasandir else true; fi $(COMPILE.c) $(srcdir)/fibheap.c $(OUTPUT_OPTION) +./filedescriptor.$(objext): $(srcdir)/filedescriptor.c config.h $(INCDIR)/ansidecl.h \ + $(INCDIR)/libiberty.h + if [ x"$(PICFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(srcdir)/filedescriptor.c -o pic/$@; \ + else true; fi + if [ x"$(NOASANFLAG)" != x ]; then \ + $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/filedescriptor.c -o noasan/$@; \ + else true; fi + $(COMPILE.c) $(srcdir)/filedescriptor.c $(OUTPUT_OPTION) + + ./filename_cmp.$(objext): $(srcdir)/filename_cmp.c config.h $(INCDIR)/ansidecl.h \ $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \ $(INCDIR)/safe-ctype.h diff --git a/libiberty/filedescriptor.c b/libiberty/filedescriptor.c new file mode 100644 index 00000000000..3a1a68d1eef --- /dev/null +++ b/libiberty/filedescriptor.c @@ -0,0 +1,47 @@ +/* File descriptor related functions. + + Copyright (C) 2019 Free Software Foundation, Inc. + + This file is part of the libiberty library. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#include "config.h" +#include "ansidecl.h" +#include "libiberty.h" + +#ifdef HAVE_FCNTL_H +#include +#endif + +#if defined (_WIN32) +#define WIN32_LEAN_AND_MEAN +#include /* for GetFullPathName */ +#endif +/* 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; +#elif defined(F_GETFD) + return fcntl (fd, F_GETFD) >= 0; +#else + return dup2 (fd, fd) < 0; +#endif +} diff --git a/libiberty/lrealpath.c b/libiberty/lrealpath.c index ac914a7a4f4..7f66dc2b1bd 100644 --- a/libiberty/lrealpath.c +++ b/libiberty/lrealpath.c @@ -49,9 +49,6 @@ components will be simplified. The returned value will be allocated using #ifdef HAVE_STRING_H #include #endif -#ifdef HAVE_FCNTL_H -#include -#endif /* On GNU libc systems the declaration is only visible with _GNU_SOURCE. */ #if defined(HAVE_CANONICALIZE_FILE_NAME) \ @@ -158,16 +155,3 @@ 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 -} -- 2.30.2