itemize() needs to use CHMOD_BITS (patch)

Roderick Schertler roderick at argon.org
Tue Jul 26 16:55:36 GMT 2005


When syncing from Linux to Aix --itemize-changes with --perms lists
directories every time because the high-order st_mode bits for
directories differ between the two systems, and itemize() isn't masking
them with CHMOD_BITS.  Here is a fix, tested with 2.6.6pre1.

PS:  I'm not subscribed to this mailing list, please Cc: if you need
more info from me.  Thanks.

--- generator.c.~1~	Thu Jun 30 13:03:14 2005
+++ generator.c	Tue Jul 26 12:51:11 2005
@@ -327,7 +327,8 @@
 			     && (!(iflags & ITEM_XNAME_FOLLOWS) || *xname))
 			    || (keep_time && cmp_modtime(file->modtime, st->st_mtime) != 0))
 				iflags |= ITEM_REPORT_TIME;
-			if (preserve_perms && file->mode != st->st_mode)
+			if (preserve_perms && (st->st_mode & CHMOD_BITS)
+						!= (file->mode & CHMOD_BITS))
 				iflags |= ITEM_REPORT_PERMS;
 			if (preserve_uid && am_root && file->uid != st->st_uid)
 				iflags |= ITEM_REPORT_OWNER;

-- 
Roderick Schertler
roderick at argon.org


More information about the rsync mailing list