mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-02-15 03:41:57 +02:00
rm: use gnulib faccessat
* bootstrap.conf (gnulib_modules): Add faccessat. Replace strdup with strdup-posix. * m4/jm-macros.m4 (coreutils_MACROS): Revert previous change, now that gnulib does it for us. * src/remove.c (write_protected_non_symlink): Use faccessat in more situations.
This commit is contained in:
@@ -78,6 +78,7 @@ gnulib_modules="
|
||||
euidaccess
|
||||
exclude
|
||||
exitfail
|
||||
faccessat
|
||||
fchdir
|
||||
fcntl
|
||||
fcntl-safer
|
||||
@@ -197,7 +198,7 @@ gnulib_modules="
|
||||
stdlib-safer
|
||||
stpcpy
|
||||
stpncpy
|
||||
strdup
|
||||
strdup-posix
|
||||
strftime
|
||||
strpbrk
|
||||
strtoimax
|
||||
|
||||
@@ -92,9 +92,6 @@ AC_DEFUN([coreutils_MACROS],
|
||||
# for cp.c
|
||||
AC_CHECK_FUNCS_ONCE([utimensat])
|
||||
|
||||
# for remove.c
|
||||
AC_CHECK_FUNCS_ONCE([faccessat])
|
||||
|
||||
dnl This can't use AC_REQUIRE; I'm not quite sure why.
|
||||
cu_PREREQ_STAT_PROG
|
||||
|
||||
|
||||
@@ -172,12 +172,11 @@ write_protected_non_symlink (int fd_cwd,
|
||||
mess up with long file names). */
|
||||
|
||||
{
|
||||
/* Use faccessat if possible, so as to avoid the expense
|
||||
of processing an N-component name. */
|
||||
#if HAVE_FACCESSAT && AT_EACCESS
|
||||
if (faccessat (fd_cwd, file, W_OK, AT_EACCESS) == 0)
|
||||
/* This implements #1: on decent systems, either faccessat is
|
||||
native or /proc/self/fd allows us to skip a chdir. */
|
||||
if (!openat_needs_fchdir ()
|
||||
&& faccessat (fd_cwd, file, W_OK, AT_EACCESS) == 0)
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
/* This implements #5: */
|
||||
size_t file_name_len = strlen (full_name);
|
||||
|
||||
Reference in New Issue
Block a user