mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-26 06:50:07 +00:00
hurd getcwd: Allow unknown root directory
To be efficient, the remap translator simply returns ports from the underlying filesystem, and thus the root directory found through browsing '..' is the underlying root, not the remap root. This should not be a reason for getcwd to fail. * sysdeps/mach/hurd/getcwd.c (_hurd_canonicalize_directory_name_internal): Do not remove the heading slash if we got an unknown root directory. (__getcwd): Do not fail with EGRATUITOUS if we got an unknown root directory.
This commit is contained in:
parent
f0e84494b1
commit
90f0f97ccb
@ -1,3 +1,11 @@
|
|||||||
|
2019-08-30 Samuel Thibault <samuel.thibault@ens-lyon.org>
|
||||||
|
|
||||||
|
|
||||||
|
* sysdeps/mach/hurd/getcwd.c
|
||||||
|
(_hurd_canonicalize_directory_name_internal): Do not remove the heading
|
||||||
|
slash if we got an unknown root directory. (__getcwd): Do not fail with
|
||||||
|
EGRATUITOUS if we got an unknown root directory.
|
||||||
|
|
||||||
2019-08-30 Richard Braun <rbraun@sceen.net>
|
2019-08-30 Richard Braun <rbraun@sceen.net>
|
||||||
|
|
||||||
* hurd/hurdselect.c (_hurd_select): Always call __io_select with no
|
* hurd/hurdselect.c (_hurd_select): Always call __io_select with no
|
||||||
|
@ -266,11 +266,6 @@ __hurd_canonicalize_directory_name_internal (file_t thisdir,
|
|||||||
So the root is our current directory. */
|
So the root is our current directory. */
|
||||||
*--file_namep = '/';
|
*--file_namep = '/';
|
||||||
|
|
||||||
if (thisid != rootid)
|
|
||||||
/* We did not get to our root directory. The returned name should
|
|
||||||
not begin with a slash. */
|
|
||||||
++file_namep;
|
|
||||||
|
|
||||||
memmove (file_name, file_namep, file_name + size - file_namep);
|
memmove (file_name, file_namep, file_name + size - file_namep);
|
||||||
cleanup ();
|
cleanup ();
|
||||||
return file_name;
|
return file_name;
|
||||||
@ -309,13 +304,6 @@ __getcwd (char *buf, size_t size)
|
|||||||
__USEPORT (CWDIR,
|
__USEPORT (CWDIR,
|
||||||
__hurd_canonicalize_directory_name_internal (port,
|
__hurd_canonicalize_directory_name_internal (port,
|
||||||
buf, size));
|
buf, size));
|
||||||
if (cwd && cwd[0] != '/')
|
|
||||||
{
|
|
||||||
/* `cwd' is an unknown root directory. */
|
|
||||||
if (buf == NULL)
|
|
||||||
free (cwd);
|
|
||||||
return __hurd_fail (EGRATUITOUS), NULL;
|
|
||||||
}
|
|
||||||
return cwd;
|
return cwd;
|
||||||
}
|
}
|
||||||
weak_alias (__getcwd, getcwd)
|
weak_alias (__getcwd, getcwd)
|
||||||
|
Loading…
Reference in New Issue
Block a user