From ef44086db0b4bfad563727d81dcf9ecdf38ded81 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 28 Mar 2012 13:26:12 -0700 Subject: [PATCH] chmod: undo previous change It's not portable; see . * src/chmod.c, NEWS: Undo previous change. --- NEWS | 6 ------ src/chmod.c | 10 +--------- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/NEWS b/NEWS index 40dadc2..c8d2bbc 100644 --- a/NEWS +++ b/NEWS @@ -2,12 +2,6 @@ GNU coreutils NEWS -*- outline -*- * Noteworthy changes in release ?.? (????-??-??) [?] -** Bug fixes - - When recursing, chmod -R no longer gets confused into following a symlink - if some other process simultaneously replaces a non-symlink with a symlink. - The fix is effective on modern hosts with the fchmodat or lchmod syscalls. - [bug introduced in the beginning] * Noteworthy changes in release 8.16 (2012-03-26) [stable] diff --git a/src/chmod.c b/src/chmod.c index 2e1f1c7..aa4ac77 100644 --- a/src/chmod.c +++ b/src/chmod.c @@ -268,15 +268,7 @@ process_file (FTS *fts, FTSENT *ent) if (! S_ISLNK (old_mode)) { - /* Use any native support for AT_SYMLINK_NOFOLLOW, to avoid - following a symlink if there is a race. */ - #if HAVE_FCHMODAT || HAVE_LCHMOD - int follow_flag = AT_SYMLINK_NOFOLLOW; - #else - int follow_flag = 0; - #endif - - if (fchmodat (fts->fts_cwd_fd, file, new_mode, follow_flag) == 0) + if (chmodat (fts->fts_cwd_fd, file, new_mode) == 0) chmod_succeeded = true; else { -- 2.7.4