Use new BITS_EQUAL() define.
authorWayne Davison <wayned@samba.org>
Tue, 12 Dec 2006 20:17:05 +0000 (20:17 +0000)
committerWayne Davison <wayned@samba.org>
Tue, 12 Dec 2006 20:17:05 +0000 (20:17 +0000)
generator.c
rsync.c

index a98ba9a..a53bb64 100644 (file)
@@ -520,8 +520,7 @@ static void do_delete_pass(struct file_list *flist)
 
 int unchanged_attrs(struct file_struct *file, STRUCT_STAT *st)
 {
-       if (preserve_perms
-        && (unsigned)(st->st_mode & CHMOD_BITS) != (file->mode & CHMOD_BITS))
+       if (preserve_perms && !BITS_EQUAL(st->st_mode, file->mode, CHMOD_BITS))
                return 0;
 
        if (am_root && preserve_uid && st->st_uid != F_UID(file))
@@ -548,7 +547,7 @@ void itemize(struct file_struct *file, int ndx, int statret, STRUCT_STAT *st,
                  && (!(iflags & ITEM_XNAME_FOLLOWS) || *xname))
                 || (keep_time && cmp_time(file->modtime, st->st_mtime) != 0))
                        iflags |= ITEM_REPORT_TIME;
-               if ((unsigned)(st->st_mode & CHMOD_BITS) != (file->mode & CHMOD_BITS))
+               if (!BITS_EQUAL(st->st_mode, file->mode, CHMOD_BITS))
                        iflags |= ITEM_REPORT_PERMS;
                if (preserve_uid && am_root && F_UID(file) != st->st_uid)
                        iflags |= ITEM_REPORT_OWNER;
@@ -1342,7 +1341,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                                t = "special file";
                        }
                        if (statret == 0
-                        && (unsigned)(st.st_mode & ~CHMOD_BITS) == (file->mode & ~CHMOD_BITS)
+                        && BITS_EQUAL(st.st_mode, file->mode, _S_IFMT)
                         && st.st_rdev == rdev) {
                                /* The device or special file is identical. */
                                if (itemizing)
diff --git a/rsync.c b/rsync.c
index da3e929..0832be4 100644 (file)
--- a/rsync.c
+++ b/rsync.c
@@ -261,7 +261,7 @@ int set_file_attrs(char *fname, struct file_struct *file, STRUCT_STAT *st,
        if (daemon_chmod_modes && !S_ISLNK(new_mode))
                new_mode = tweak_mode(new_mode, daemon_chmod_modes);
 #ifdef HAVE_CHMOD
-       if ((st->st_mode & CHMOD_BITS) != (new_mode & CHMOD_BITS)) {
+       if (!BITS_EQUAL(st->st_mode, new_mode, CHMOD_BITS)) {
                int ret = do_chmod(fname, new_mode);
                if (ret < 0) {
                        rsyserr(FERROR, errno,