mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
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
|
||||
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>
|
||||
|
||||
|
@ -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))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user