From c7563435034fe72cb7fa4f8129062f18eef2906d Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Thu, 3 Sep 2009 21:59:54 -0600 Subject: 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. --- src/remove.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/remove.c b/src/remove.c index 2db385909..d6d680316 100644 --- a/src/remove.c +++ b/src/remove.c @@ -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); -- cgit v1.2.3-54-g00ecf