1
0
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:
Eric Blake
2009-09-03 21:59:54 -06:00
committed by Jim Meyering
parent 722287e443
commit c756343503
3 changed files with 6 additions and 9 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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);