summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlavio Cruz <flaviocruz@gmail.com>2016-01-13 00:48:30 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2016-01-13 00:48:30 +0100
commite42ce0f45ebf20b4c6f89da605cd62b1cd60a9df (patch)
treec390f6019ad305f2ae5d1f9235342f87029e097e
parentfb53a27c57417104069f128963bf6f26dc02b0bd (diff)
Fix O_DIRECTORY lookup on trivial translators
* hurd/lookup-retry.c (__hurd_file_name_lookup_retry): Do not remove leading slash when `file_name' is "/".
-rw-r--r--ChangeLog5
-rw-r--r--hurd/lookup-retry.c11
2 files changed, 14 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 6322a675a3..025db2bbce 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2016-01-13 Flavio Cruz <flaviocruz@gmail.com>
+
+ * hurd/lookup-retry.c (__hurd_file_name_lookup_retry): Do not remove
+ leading slash when `file_name' is "/".
+
2016-01-12 Joseph Myers <joseph@codesourcery.com>
* bits/mman-linux.h [!MCL_CURRENT] (MCL_ONFAULT): New macro.
diff --git a/hurd/lookup-retry.c b/hurd/lookup-retry.c
index ef256acfb7..aee2ba8f93 100644
--- a/hurd/lookup-retry.c
+++ b/hurd/lookup-retry.c
@@ -62,8 +62,15 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
error_t lookup_op (file_t startdir)
{
- while (file_name[0] == '/')
- file_name++;
+ if (file_name[0] == '/' && file_name[1] != '\0')
+ {
+ while (file_name[1] == '/')
+ /* Remove double leading slash. */
+ file_name++;
+ if (file_name[1] != '\0')
+ /* Remove leading slash when we have more than the slash. */
+ file_name++;
+ }
return lookup_error ((*lookup) (startdir, file_name, flags, mode,
&doretry, retryname, result));