hurd: Support AT_EMPTY_PATH
* 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.
This commit is contained in:
parent
a95dc01c9e
commit
ee4d79026d
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
* sysdeps/mach/hurd/faccessat.c (__faccessat_common): Check for errors
|
* sysdeps/mach/hurd/faccessat.c (__faccessat_common): Check for errors
|
||||||
returned by __hurd_at_flags.
|
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>
|
2019-01-21 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,9 @@ __file_name_lookup_at (int fd, int at_flags,
|
||||||
{
|
{
|
||||||
error_t err;
|
error_t err;
|
||||||
file_t result;
|
file_t result;
|
||||||
|
int empty = at_flags & AT_EMPTY_PATH;
|
||||||
|
|
||||||
|
at_flags &= ~AT_EMPTY_PATH;
|
||||||
|
|
||||||
err = __hurd_at_flags (&at_flags, &flags);
|
err = __hurd_at_flags (&at_flags, &flags);
|
||||||
if (err)
|
if (err)
|
||||||
|
@ -36,6 +39,23 @@ __file_name_lookup_at (int fd, int at_flags,
|
||||||
if (fd == AT_FDCWD || file_name[0] == '/')
|
if (fd == AT_FDCWD || file_name[0] == '/')
|
||||||
return __file_name_lookup (file_name, flags, mode);
|
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;
|
file_t startdir;
|
||||||
error_t use_init_port (int which, error_t (*operate) (mach_port_t))
|
error_t use_init_port (int which, error_t (*operate) (mach_port_t))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue