mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00:00
hurd: Avoid file_check_access () RPC for access (F_OK)
A common use case of access () / faccessat () is checking for file existence, not any specific access permissions. In that case, we can avoid doing the file_check_access () RPC; whether the given path had been successfully resolved to a file is all we need to know to answer. This is prompted by GLib switching to use faccessat (F_OK) to implement g_file_query_exists () for local files. https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4272 Signed-off-by: Sergey Bugaev <bugaevc@gmail.com> Message-ID: <20240919101439.179663-1-bugaevc@gmail.com>
This commit is contained in:
parent
e64a1e81aa
commit
4524670545
@ -185,6 +185,15 @@ __faccessat_common (int fd, const char *file, int type, int at_flags,
|
||||
return errfunc (err);
|
||||
}
|
||||
|
||||
/* If all we wanted was to check for a file existing at the path,
|
||||
then we already got our answer, and we don't need to call
|
||||
file_check_access (). */
|
||||
if (type == F_OK)
|
||||
{
|
||||
__mach_port_deallocate (__mach_task_self (), io);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Find out what types of access we are allowed to this file. */
|
||||
err = __file_check_access (io, &allowed);
|
||||
__mach_port_deallocate (__mach_task_self (), io);
|
||||
|
Loading…
Reference in New Issue
Block a user