Move is_valid_fd to filedescriptor.c file.
authorMartin Liska <mliska@suse.cz>
Mon, 12 Aug 2019 07:36:48 +0000 (09:36 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Mon, 12 Aug 2019 07:36:48 +0000 (07:36 +0000)
2019-08-12  Martin Liska  <mliska@suse.cz>

* Makefile.in: Add filedescriptor.c.
* filedescriptor.c: New file.
* lrealpath.c (is_valid_fd): Remove.

From-SVN: r274273

libiberty/ChangeLog
libiberty/Makefile.in
libiberty/filedescriptor.c [new file with mode: 0644]
libiberty/lrealpath.c

index 95cb1525f2c4c1e7a3ddb73e4c90a96ce753f3e1..c1fe2f62b44de0fddd76afc11a54bfc137aeea42 100644 (file)
@@ -1,3 +1,9 @@
+2019-08-12  Martin Liska  <mliska@suse.cz>
+
+       * Makefile.in: Add filedescriptor.c.
+       * filedescriptor.c: New file.
+       * lrealpath.c (is_valid_fd): Remove.
+
 2019-08-08  Martin Liska  <mliska@suse.cz>
 
        PR bootstrap/91352
index 0be45b4ae8ec6383f1166665bb32d0b260af2579..f1628d4ee0dbcbcb3e119058a916ef8290c1fed4 100644 (file)
@@ -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 (file)
index 0000000..3a1a68d
--- /dev/null
@@ -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 <fcntl.h>
+#endif
+
+#if defined (_WIN32)
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h> /* 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
+}
index ac914a7a4f403b09c90416c8e1fa3c6b52c1b48a..7f66dc2b1bd26c41821d409a95f93e216677923d 100644 (file)
@@ -49,9 +49,6 @@ 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) \
@@ -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
-}