From 1510e9e7c66dbda1355ffcb6078cfe9bd340a60f Mon Sep 17 00:00:00 2001 From: Peter Wemm Date: Sat, 29 Jul 2000 22:16:55 +0000 Subject: [PATCH] Optimize out no-op chmod() syscalls. --- bin/chmod/chmod.c | 7 +++++-- 1 file 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 {