Change directory permissions in pre-order.

In this order, it won't try to recurse into a directory for which
it doesn't have permission, before changing that permission.
This follows an existing behavior in other BSDs, linux, OS X.

Obtained from:	NetBSD
This commit is contained in:
Sergey Kandaurov 2015-06-04 19:18:58 +00:00
parent ff09e23f53
commit db1a93d4fe
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=283997

View File

@ -162,14 +162,16 @@ done: argv += optind;
atflag = AT_SYMLINK_NOFOLLOW;
switch (p->fts_info) {
case FTS_D: /* Change it at FTS_DP. */
case FTS_D:
if (!Rflag)
fts_set(ftsp, p, FTS_SKIP);
continue;
break;
case FTS_DNR: /* Warn, chmod. */
warnx("%s: %s", p->fts_path, strerror(p->fts_errno));
rval = 1;
break;
case FTS_DP: /* Already changed at FTS_D. */
continue;
case FTS_ERR: /* Warn, continue. */
case FTS_NS:
warnx("%s: %s", p->fts_path, strerror(p->fts_errno));