aboutsummaryrefslogtreecommitdiff
path: root/bin/chmod
diff options
context:
space:
mode:
Diffstat (limited to 'bin/chmod')
-rw-r--r--bin/chmod/chmod.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/bin/chmod/chmod.c b/bin/chmod/chmod.c
index a8ec2d92dfd7..395bee14c983 100644
--- a/bin/chmod/chmod.c
+++ b/bin/chmod/chmod.c
@@ -72,6 +72,7 @@ main(argc, argv)
int Hflag, Lflag, Pflag, Rflag, ch, fflag, fts_options, hflag, rval;
int vflag;
char *ep, *mode;
+ int newmode;
set = NULL;
omode = 0;
@@ -191,8 +192,10 @@ done: argv += optind;
default:
break;
}
- if (chmod(p->fts_accpath, oct ? omode :
- getmode(set, p->fts_statp->st_mode)) && !fflag) {
+ newmode = oct ? omode : getmode(set, p->fts_statp->st_mode);
+ if ((newmode & ALLPERMS) == (p->fts_statp->st_mode & ALLPERMS))
+ continue;
+ if (chmod(p->fts_accpath, newmode) && !fflag) {
warn("%s", p->fts_path);
rval = 1;
} else {