* [hurd,commited] hurd: Support AT_EMPTY_PATH
@ 2019-01-22 22:41 Samuel Thibault
0 siblings, 0 replies; only message in thread
From: Samuel Thibault @ 2019-01-22 22:41 UTC (permalink / raw
To: libc-alpha; +Cc: Samuel Thibault, commit-hurd
* hurd/lookup-at.c (__file_name_lookup_at): When at_flags contains
AT_EMPTY_PATH, call __dir_lookup and __hurd_file_name_lookup_retry
directly instead of __hurd_file_name_lookup.
---
ChangeLog | 3 +++
hurd/lookup-at.c | 20 ++++++++++++++++++++
2 files changed, 23 insertions(+)
diff --git a/ChangeLog b/ChangeLog
index 8bffe5035b..fed239cf3c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,9 @@
* sysdeps/mach/hurd/faccessat.c (__faccessat_common): Check for errors
returned by __hurd_at_flags.
+ * hurd/lookup-at.c (__file_name_lookup_at): When at_flags contains
+ AT_EMPTY_PATH, call __dir_lookup and __hurd_file_name_lookup_retry
+ directly instead of __hurd_file_name_lookup.
2019-01-21 Joseph Myers <joseph@codesourcery.com>
diff --git a/hurd/lookup-at.c b/hurd/lookup-at.c
index 813ebee8e5..3e6980f949 100644
--- a/hurd/lookup-at.c
+++ b/hurd/lookup-at.c
@@ -28,6 +28,9 @@ __file_name_lookup_at (int fd, int at_flags,
{
error_t err;
file_t result;
+ int empty = at_flags & AT_EMPTY_PATH;
+
+ at_flags &= ~AT_EMPTY_PATH;
err = __hurd_at_flags (&at_flags, &flags);
if (err)
@@ -36,6 +39,23 @@ __file_name_lookup_at (int fd, int at_flags,
if (fd == AT_FDCWD || file_name[0] == '/')
return __file_name_lookup (file_name, flags, mode);
+ if (empty != 0 && file_name[0] == '\0')
+ {
+ enum retry_type doretry;
+ char retryname[1024]; /* XXX string_t LOSES! */
+
+ err = HURD_DPORT_USE (fd, __dir_lookup (port, "", flags, mode,
+ &doretry, retryname,
+ &result));
+
+ if (! err)
+ err = __hurd_file_name_lookup_retry (&_hurd_ports_use, &__getdport,
+ NULL, doretry, retryname,
+ flags, mode, &result);
+
+ return err ? (__hurd_dfail (fd, err), MACH_PORT_NULL) : result;
+ }
+
file_t startdir;
error_t use_init_port (int which, error_t (*operate) (mach_port_t))
{
--
2.20.1
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2019-01-22 22:42 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-22 22:41 [hurd,commited] hurd: Support AT_EMPTY_PATH Samuel Thibault
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).