about summary refs log tree commit diff
path: root/sysdeps/generic/fd_to_filename.h
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2020-02-18 13:02:37 +0100
committerFlorian Weimer <fweimer@redhat.com>2020-02-18 13:42:29 +0100
commitfa185f0d4529c6d70f690306f431ca23662b9138 (patch)
treead2719a1dd633d74a7a61ad59eefd08c944e19c6 /sysdeps/generic/fd_to_filename.h
parente4a399921390509418826e8e8995d2441f29e243 (diff)
downloadglibc-fa185f0d4529c6d70f690306f431ca23662b9138.tar.gz
glibc-fa185f0d4529c6d70f690306f431ca23662b9138.tar.xz
glibc-fa185f0d4529c6d70f690306f431ca23662b9138.zip
<fd_to_filename.h>: Add type safety and port to Hurd
The new type struct fd_to_filename makes the allocation of the
backing storage explicit.

Hurd uses /dev/fd, not /proc/self/fd.

Co-Authored-By: Paul Eggert <eggert@cs.ucla.edu>
Diffstat (limited to 'sysdeps/generic/fd_to_filename.h')
-rw-r--r--sysdeps/generic/fd_to_filename.h26
1 files changed, 18 insertions, 8 deletions
diff --git a/sysdeps/generic/fd_to_filename.h b/sysdeps/generic/fd_to_filename.h
index eff6ca211b..5ca22f02bc 100644
--- a/sysdeps/generic/fd_to_filename.h
+++ b/sysdeps/generic/fd_to_filename.h
@@ -1,4 +1,4 @@
-/* Query filename corresponding to an open FD.  Generic version.
+/* Query filename corresponding to an open FD.
    Copyright (C) 2001-2020 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -16,12 +16,22 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#define FD_TO_FILENAME_SIZE 0
+#ifndef _FD_TO_FILENAME_H
+#define _FD_TO_FILENAME_H
 
-/* In general there is no generic way to query filename for an open
-   file descriptor.  */
-static inline const char *
-fd_to_filename (int fd, char *buf)
+#include <arch-fd_to_filename.h>
+#include <intprops.h>
+
+struct fd_to_filename
 {
-  return NULL;
-}
+  /* A positive int value has at most 10 decimal digits.  */
+  char buffer[sizeof (FD_TO_FILENAME_PREFIX) + INT_STRLEN_BOUND (int)];
+};
+
+/* Writes a /proc/self/fd-style path for DESCRIPTOR to *STORAGE and
+   returns a pointer to the start of the string.  DESCRIPTOR must be
+   non-negative.  */
+char *__fd_to_filename (int descriptor, struct fd_to_filename *storage)
+  attribute_hidden;
+
+#endif /* _FD_TO_FILENAME_H */